{"version":3,"file":"vendor.js","mappings":";;;;;;;;;;;;;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,4EAA4E,aAAa;AACzF;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA,qGAAqG,qBAAqB,mBAAmB;;AAE7I;AACA;AACA;AACA,WAAW,GAAG;AACd,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA,gCAAgC;AAChC,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,iBAAiB,gBAAgB;AACjC;AACA,cAAc;AACd;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B;;AAE1B;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B;;AAE1B;;AAEA;;AAEA;AACA,cAAc;AACd;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL,iCAAiC;AACjC,KAAK;;AAEL;;AAEA,uCAAuC;AACvC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;AAEV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,eAAe,4BAA4B;AAC3C,gBAAgB,4BAA4B;AAC5C,iBAAiB,4CAA4C;AAC7D,kBAAkB,6CAA6C;AAC/D,iBAAiB,4CAA4C;AAC7D,kBAAkB,6CAA6C;AAC/D,aAAa,4BAA4B;AACzC,aAAa;AACb;;AAEA;AACA,+BAA+B;AAC/B,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;AACF;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA,uBAAuB;AACvB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,4BAA4B;AAChD,0DAA0D;AAC1D;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,6CAA6C,8CAA8C;AAC3F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yDAAyD,+BAA+B;;AAExF;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;;AAEA,6CAA6C,6CAA6C;AAC1F;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;;AAEA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA,6BAA6B;AAC7B,SAAS;AACT;AACA,6BAA6B;AAC7B,SAAS;AACT;AACA,6BAA6B;AAC7B,SAAS;AACT;AACA,6BAA6B;AAC7B;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,2BAA2B;AACjE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;;AAEA,iCAAiC;;AAEjC,iCAAiC;;AAEjC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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B;AACrB,IAAI,0DAAmB;AACvB,EAAE;AACF;AACA;AACA,mBAAmB,2DAAoB;AACvC,gBAAgB,yDAAkB;AAClC,IAAI,yDAAkB;AACtB,IAAI,wDAAiB;AACrB,IAAI,uDAAgB;AACpB,IAAI,wDAAiB,8EAA8E,6DAAsB;AACzH;AACA;AACA,uBAAuB,MAAM;AAC7B;AACA;AACA,wDAAwD,MAAM;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,mBAAmB,4CAAU;AAC7B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,kBAAkB,oEAAkB,GAAG,wCAAwC,yBAAyB,wCAAwC;AAChJ,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,YAAY,UAAU;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,+BAA+B;AAC/B;AACA,mEAAmE,qCAAqC,sDAAe;AACvH,2BAA2B,oEAAkB,GAAG,iDAAiD,8BAA8B,0DAAQ,eAAe,iDAAiD;AACvM;AACA,MAAM;AACN;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,UAAU,iBAAiB,IAAI,UAAU;;AAE/D;AACA,YAAY,sCAAsC;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ,yBAAyB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uCAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wCAAE;AACjB;AACA;AACA,4BAA4B,yCAAO;AACnC,kCAAkC,yCAAO;AACzC,mCAAmC,uDAAO;AAC1C;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,+CAAS,gCAAgC,yDAAS,SAAS,sDAAM,IAAI,QAAQ;AAC5G,uBAAuB,2CAAK,qDAAqD,yDAAS;AAC1F,QAAQ,2CAAI,iDAAiD,yDAAS;AACtE;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,uBAAuB;AACjC,YAAY,YAAY;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,iCAAiC,+DAAwB,CAAC,sDAAkB;AACvI,oCAAoC,+DAAwB,GAAG,0EAA0E;AACzI;AACA,MAAM,MAAM,sDAAW;AACvB;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB,iBAAiB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UAAU,sBAAsB,IAAI,MAAM,4DAAwB,EAAE,IAAI,IAAI;AAClG,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,iCAAiC,WAAW;AAC5C;AACA;AACA;AACA,qBAAqB;AACrB,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,sBAAsB;AACtB,2BAA2B;AAC3B,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,8BAA8B;AAC9B;AACA,yDAAyD;AACzD,mCAAmC,+DAAwB,GAAG,0GAA0G,cAAc,aAAa,gEAAyB,IAAI,SAAS,8DAAiB,eAAe,yDAAU,oCAAoC,KAAK;AAC5T;AACA,aAAa,MAAM,gDAAK,EAAE;AAC1B;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA,wBAAwB,sBAAsB;AAC9C,8BAA8B,SAAS,8DAAiB,eAAe,yDAAU,oCAAoC;AACrH,aAAa;AACb,KAAK,iBAAiB,YAAY,IAAI;AACtC,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;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,oBAAoB;AACpB,qBAAqB;AACrB,kBAAkB;AAClB,qBAAqB;AACrB,oBAAoB;AACpB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA,+CAA+C,2BAA2B,+DAAwB,iBAAiB,+DAAwB,kBAAkB,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,4DAAwB;AACvS,8BAA8B,+DAAwB,GAAG,0IAA0I;AACnM,QAAQ,wDAAiB,2DAA2D,wBAAwB,0DAA0D,4BAA4B,wDAAwD,6BAA6B;AACvR,MAAM;AACN,QAAQ,4DAAqB;AAC7B,OAAO,YAAY,sDAAsD;AACzE;AACA,MAAM,qBAAqB;AAC3B,MAAM,sBAAsB;AAC5B,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,4DAAiB;AAC7B;AACA;AACA,aAAa,MAAM,gDAAK,EAAE;AAC1B,cAAc,MAAM,gDAAK,oBAAoB;AAC7C,iBAAiB,MAAM,gDAAK,uBAAuB;AACnD;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,qBAAqB,IAAI,sBAAsB,IAAI,MAAM,oDAAgB,EAAE,IAAI,MAAM,qDAAiB,EAAE,IAAI,MAAM,4DAAwB,EAAE,IAAI,IAAI;AACpL,kBAAkB,gDAAK;AACvB;AACA,SAAS;AACT,kBAAkB,gDAAK;AACvB;AACA,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;;AAEhB;AACA;AACA;AACA,+DAA+D;AAC/D,sCAAsC,8DAAuB,GAAG,wBAAwB;AACxF,sCAAsC,8DAAuB,GAAG;AAChE,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,mDAAQ;AACtB,iBAAiB,qEAAqE;AACtF,KAAK,iBAAiB;AACtB,eAAe,mDAAmD,gEAAyB,qBAAqB,uIAAuI,IAAI;;AAE3P;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB,+BAA+B;AAC/B;AACA,iEAAiE,oCAAoC,sDAAe;AACpH,0BAA0B,oEAAkB,GAAG,gDAAgD,6BAA6B,0DAAQ,eAAe,gDAAgD;AACnM;AACA,MAAM;AACN;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,UAAU,iBAAiB,IAAI,UAAU;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD;AACzD,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,WAAW;AAClE,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,WAAW;AACnE,YAAY,YAAY;AACxB;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,+BAA+B,WAAW;AAC1C;AACA;AACA;AACA;AACA;AACA,wBAAwB,uDAAY;AACpC;AACA;AACA,+CAA+C,2BAA2B,+DAAwB,CAAC,sDAAkB;AACrH,8BAA8B,+DAAwB,GAAG,wEAAwE,UAAU,aAAa,gBAAgB;AACxK;AACA,MAAM,MAAM,sDAAW;AACvB;AACA;AACA,WAAW,MAAM,gDAAK,EAAE;AACxB,aAAa,MAAM,iDAAM,EAAE;AAC3B;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB,iBAAiB,mCAAmC;AACpD,KAAK,iBAAiB,UAAU,MAAM,sDAAkB,EAAE,IAAI,IAAI;AAClE,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS,GAAG,IAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yCAAO;AACpC,8BAA8B,kDAAe;AAC7C,gCAAgC,kDAAe;AAC/C,6BAA6B,kDAAe;AAC5C,kCAAkC,kDAAe;AACjD,kCAAkC,kDAAe;AACjD,2BAA2B,kDAAe;AAC1C,0BAA0B,kDAAe;AACzC;AACA;AACA;AACA;AACA;AACA,yBAAyB,uDAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uDAAY;AACpC;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,4BAA4B;AAC5B,uBAAuB;AACvB,yBAAyB;AACzB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mEAAiB;AAC7B;AACA,sCAAsC,oDAAa;AACnD,oCAAoC,oDAAG,oCAAoC,0DAAS;AACpF,0DAA0D,0DAAS;AACnE;AACA,0BAA0B,oDAAG;AAC7B;AACA;AACA;AACA,iBAAiB,GAAG,qEAAoB;AACxC,gBAAgB,oDAAa;AAC7B;AACA;AACA;AACA,0BAA0B,oDAAG;AAC7B;AACA,gCAAgC,qEAAoB,IAAI,0DAAS,4BAA4B,2CAAK,uBAAuB,wCAAK,GAAG,yDAAS;AAC1I;AACA,aAAa;AACb;AACA,iCAAiC,yDAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,qDAAI;AAC3C,6BAA6B,KAAK;AAClC;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,oBAAoB;AACpB;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,cAAc;AACd;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0GAA0G;AACxI;A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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6BAA6B;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,oBAAoB,oEAAkB,GAAG,kFAAkF;AAC3H,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,iEAAiE;AAClF,KAAK,iBAAiB;AACtB;AACA,uBAAuB;AACvB,kBAAkB;AAClB,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,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,uCAAuC,kDAAkD,kFAAkF,mEAA4B,yDAAyD;AACxT,2CAA2C,gEAAyB,GAAG,iEAAiE;AACxI,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,SAAS,mCAAmC,QAAQ;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2CAA2C;AACvD;AACA;AACA;AACA;AACA,8CAA8C,oCAAoC;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,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA,kEAAkE,QAAQ;AAC1E;AACA;AACA;AACA,kEAAkE,QAAQ;AAC1E;AACA;AACA;AACA;AACA,YAAY,wBAAwB;AACpC;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D,0EAA0E,QAAQ;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gGAAgG;AAChG;AACA,KAAK;AACL;AACA;AACA,2DAA2D;AAC3D,YAAY,8GAA8G;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oCAAoC;AAC3D;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA,0BAA0B,iCAAiC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,uCAAuC;AAC1F;AACA;AACA;AACA;AACA,+EAA+E,uCAAuC;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,8CAA8C,EAAE,gCAAgC;AAClG;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,UAAU,SAAS;AAC9C;AACA;AACA;AACA;AACA;AACA,kCAAkC,UAAU,WAAW;AACvD;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU,KAAK;AAC3C;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,iEAAiE;AACjE,0BAA0B,oEAAkB,GAAG,gDAAgD,kCAAkC,0DAAQ,CAAC,oDAAS,KAAK,gDAAgD;AACxM,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,mEAAmE,oDAAS,GAAG;AAChG,KAAK,iBAAiB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qEAAmB,UAAU,kEAAoB,EAAE,0EAA4B;AAC3G,2BAA2B,qEAAmB,UAAU,kEAAoB,EAAE,mEAAqB;AACnG;AACA,mCAAmC,qCAAqC,oEAAsB;AAC9F;AACA,yCAAyC,mEAAiB,eAAe,kEAAoB,wBAAwB,oEAAsB;AAC3I;AACA;AACA;AACA,+BAA+B;AAC/B,8BAA8B;AAC9B;AACA;AACA,eAAe,4DAAU;AACzB;AACA;AACA,+EAA+E,2CAA2C,sDAAe,CAAC,oDAAS;AACnJ,+CAA+C,gEAAyB,GAAG,yEAAyE;AACpJ;AACA,MAAM,6BAA6B,MAAM,iDAAM,SAAS,oDAAS,IAAI;AACrE;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU;AAChC,sBAAsB,iDAAM;AAC5B,uBAAuB,oDAAS;AAChC,aAAa,GAAG,IAAI,UAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA;AACA,6BAA6B;AAC7B;AACA,aAAa;AACb;AACA,+EAA+E,oEAAsB;AACrG;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,2BAA2B,yCAAO;AAClC,gCAAgC,yCAAO;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uBAAuB;AAClD,0BAA0B,oEAAsB;AAChD;AACA;AACA;AACA,mBAAmB,yBAAyB,sDAAM;AAClD,wBAAwB,8BAA8B,sDAAM;AAC5D;AACA;AACA;AACA,kEAAkE,kBAAkB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iBAAiB;AAC/C;AACA;AACA;AACA;AACA,iDAAiD,iBAAiB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,WAAW;AACzC;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA,kCAAkC,cAAc;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,cAAc,UAAU,aAAa;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sFAAsF;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,iBAAiB;AACjB,aAAa;AACb,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,uCAAuC,sDAAe,eAAe,sDAAe;AAC3J,2CAA2C,gEAAyB,GAAG,iEAAiE;AACxI;AACA,MAAM,mBAAmB;AACzB,MAAM;AACN;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,mBAAmB,IAAI,yBAAyB,IAAI,UAAU;;AAE9F;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oEAAsB;AAC9C;AACA;AACA,qEAAqE;AACrE,4BAA4B,oEAAkB,GAAG,kDAAkD,mCAAmC,kDAAkD;AACxL,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,YAAY,UAAU;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,uBAAuB,oEAAkB,GAAG,yFAAyF;AACrI,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,qEAAqE;AACtF,KAAK,iBAAiB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,oDAAoD;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,oDAAoD;AAClE;AACA;AACA;AACA,wDAAwD,uCAAuC,kDAAkD,kFAAkF,mEAA4B,yDAAyD;AACxT,2CAA2C,gEAAyB,GAAG,iEAAiE;AACxI,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,uCAAuC,+DAAwB,CAAC,sDAAkB;AACzJ,0CAA0C,+DAAwB,GAAG,sFAAsF;AAC3J;AACA,MAAM,MAAM,sDAAW;AACvB;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB,iBAAiB,+CAA+C;AAChE,KAAK,iBAAiB,UAAU,MAAM,sDAAkB,EAAE,IAAI,UAAU;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,yCAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uDAAY;AAC1C;AACA;AACA;AACA;AACA;AACA,kCAAkC,yDAAS,wCAAwC,6BAA6B;AAChH,6BAA6B,yDAAS;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,2CAA2C;AACpF,4BAA4B,0CAA0C;AACtE;AACA,iBAAiB;AACjB;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,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,oBAAoB;AACpB;AACA,kDAAkD,qDAAI;AACtD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+FAA+F,WAAW,QAAQ;AAClH;AACA;AACA;AACA,8BAA8B,+CAAS;AACvC,+BAA+B,+CAAS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K;AACvB,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;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kBAAkB;;AAEnB;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;AACA;AACA;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,qCAAqC,oEAAkB,GAAG,2DAA2D,4CAA4C,2DAA2D;AAC5N,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,qCAAqC,+DAAwB,qBAAqB,+DAAwB,iBAAiB,+DAAwB,gCAAgC,+DAAwB;AAC9Q,wCAAwC,+DAAwB,GAAG,gKAAgK;AACnO,QAAQ,wDAAiB,6EAA6E,+BAA+B;AACrI,OAAO,YAAY,gBAAgB,m7BAAm7B;AACt9B,QAAQ,wDAAiB;AACzB,QAAQ,wDAAiB;AACzB,MAAM;AACN,QAAQ,wDAAiB;AACzB,QAAQ,uDAAgB;AACxB,QAAQ,wDAAiB;AACzB,OAAO,eAAe,kDAAW,EAAE,qDAAc,EAAE,8DAAuB,kCAAkC,cAAc,oCAAoC,kBAAkB,iBAAiB,k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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,oCAAoC,+CAAS,0BAA0B,yDAAS,kBAAkB,oDAAG;AACrG;AACA,QAAQ,+CAAS;AACjB,kBAAkB,yDAAS;AAC3B;AACA,QAAQ,sDAAM;AACd;AACA,QAAQ,+DAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,YAAY,+CAAS;AACrB,sBAAsB,yDAAS,kBAAkB,+DAAc,uBAAuB,oDAAG;AACzF;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,4BAA4B;AAC5B,8BAA8B;AAC9B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,yBAAyB,MAAM,wBAAwB;AACjH,qDAAqD,yBAAyB,MAAM,wBAAwB;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,UAAU,GAAG,QAAQ;AACjD;AACA,gCAAgC,UAAU,GAAG,QAAQ,GAAG,UAAU;AAClE;AACA,6CAA6C,2BAA2B;AACxE;AACA;AACA;AACA;AACA;AACA,2DAA2D,oBAAoB,UAAU,GAAG,kBAAkB,KAAK;AACnH;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,kDAAkD,8BAA8B;AAChF;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,2EAA2E;AAC3E,+BAA+B,oEAAkB,GAAG,qGAAqG;AACzJ,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,yEAAyE;AAC1F,KAAK,iBAAiB;AACtB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU,GAAG,kDAAkD,GAAG,8CAA8C;AAC/H;AACA;AACA;AACA,6DAA6D,4CAA4C,uDAAuD,4FAA4F,mEAA4B,mEAAmE;AAC3V,gDAAgD,gEAAyB,GAAG,2EAA2E;AACvJ,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,2CAA2C,sDAAsD,0FAA0F,mEAA4B,iEAAiE;AACpV,iCAAiC,oEAAkB,GAAG,uDAAuD,wCAAwC,uDAAuD;AAC5M,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uDAAY;AAC1C;AACA;AACA;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA;AACA;AACA;AACA;AACA,0BAA0B,uDAAY;AACtC;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,2BAA2B;AAC3B,4BAA4B;AAC5B,oCAAoC;AACpC,mCAAmC;AACnC;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA,yBAAyB,aAAa;AACtC;AACA;AACA,yBAAyB,aAAa,WAAW;AACjD;AACA;AACA,yBAAyB,aAAa,WAAW;AACjD;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;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,eAAe;AACf,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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B,oDAAS;AAC3B,6BAA6B,oBAAoB,qDAAU,EAAE;AAC7D,SAAS,GAAG,IAAI;;AAEhB;AACA,uBAAuB;AACvB,kBAAkB;AAClB,yBAAyB;AACzB;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,uEAAuE;AACvE;AACA,wEAAwE;AACxE;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,oDAAoD,mCAAmC,8CAA8C,0EAA0E,mEAA4B,iDAAiD;AAC5R,uCAAuC,gEAAyB,GAAG,yDAAyD;AAC5H,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,0CAA0C,qDAAqD,wFAAwF,mEAA4B,+DAA+D;AAC7U,8CAA8C,gEAAyB,GAAG,uEAAuE;AACjJ,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,gCAAgC,QAAQ;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,4BAA4B,yBAAyB;AACrD,gCAAgC,QAAQ;AACxC;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,8DAA8D,6CAA6C,wDAAwD,8FAA8F,mEAA4B,qEAAqE;AAClW,iDAAiD,gEAAyB,GAAG,6EAA6E;AAC1J,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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;;AAEA;AACA,uBAAuB;AACvB,kBAAkB;AAClB,yBAAyB;AACzB;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,uEAAuE;AACvE;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,sDAAsD,qCAAqC,gDAAgD,8EAA8E,mEAA4B,qDAAqD;AAC1S,yCAAyC,gEAAyB,GAAG,6DAA6D;AAClI,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB;;AAEtB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,uBAAuB;AACvB;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,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,qDAAqD,oCAAoC,+CAA+C,4EAA4E,mEAA4B,mDAAmD;AACnS,wCAAwC,gEAAyB,GAAG,2DAA2D;AAC/H,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA,mCAAmC;AACnC;AACA,kBAAkB,0BAA0B,EAAE,8CAA8C,EAAE,0BAA0B;AACxH;AACA,2BAA2B;AAC3B,kCAAkC;AAClC,4BAA4B;AAC5B;AACA,2DAA2D,0CAA0C,qDAAqD,wFAAwF,mEAA4B,+DAA+D;AAC7U,8CAA8C,gEAAyB,GAAG,uEAAuE;AACjJ,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,sCAAsC,iDAAiD,gFAAgF,mEAA4B,uDAAuD;AACjT,0CAA0C,gEAAyB,GAAG,+DAA+D;AACrI,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB;;AAEtB;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,wDAAwD,uCAAuC,kDAAkD,kFAAkF,mEAA4B,yDAAyD;AACxT,2CA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AACA,oEAAoE,uBAAuB;AAC3F;AACA;AACA,mCAAmC,qDAAI;AACvC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8BAA8B;AAClD;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,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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+CAAS,4BAA4B,qDAAI;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,oBAAoB,+CAAS,gCAAgC,qDAAI,kBAAkB,eAAe;AAClG;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,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;AACA;AACA;AACA;AACA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B;AAChC,uDAAuD,qDAAI,KAAK,yDAAQ,wDAAwD,WAAW,8BAA8B,0CAA0C;AACnN,iBAAiB;AACjB;AACA;AACA;AACA,mBAAmB,wCAAE;AACrB;AACA,yFAAyF,WAAW,iCAAiC,sCAAsC;AAC3K,kBAAkB,oDAAG;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,oCAAoC,sDAAW;AAC/C;AACA;AACA;AACA;AACA;AACA,iEAAiE,QAAQ;AACzE;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,yCAAyC,+BAA+B;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,iDAAiD,4BAA4B,sDAAe,CAAC,sDAAQ;AACrG,kBAAkB,oEAAkB,GAAG,wCAAwC,qBAAqB,0DAAQ,CAAC,sDAAQ,KAAK,wCAAwC;AAClK;AACA,MAAM,gCAAgC,MAAM,iDAAM,SAAS,sDAAQ,IAAI;AACvE;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,UAAU;AAChC,sBAAsB,iDAAM;AAC5B,uBAAuB,sDAAQ;AAC/B,aAAa,GAAG,IAAI,UAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,qDAAI;AACpD;AACA;AACA;AACA;AACA;AACA,aAAa,IAAI,0DAA0D;AAC3E,SAAS;AACT;AACA;AACA,uEAAuE,WAAW,iCAAiC,sDAAsD;AACzK;AACA;AACA,+DAA+D,mCAAmC,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,iDAAa;AACrL,sCAAsC,+DAAwB,GAAG,6KAA6K;AAC9O,QAAQ,wDAAiB;AACzB,QAAQ,yDAAkB;AAC1B,OAAO,YAAY,wDAAwD,8EAA8E,oBAAoB;AAC7K;AACA,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,iDAAM;AAClB;AACA;AACA,kBAAkB,MAAM,gDAAK,EAAE;AAC/B,sBAAsB,MAAM,gDAAK,EAAE;AACnC;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA,+BAA+B,iEAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,qDAAiB,EAAE,IAAI,MAAM,iDAAa,EAAE,IAAI,IAAI;AAC1F,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,2BAA2B,yCAAO;AAClC,8BAA8B,yCAAO;AACrC,2BAA2B,yCAAO;AAClC,qEAAqE,uBAAuB;AAC5F;AACA;AACA;AACA,SAAS;AACT,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,wCAAwC,yDAAS;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,2CAA2C,yDAAS;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG,wCAAE;AACtG;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ,0CAAG;AACX;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC,kDAAkD;;AAEnD;AACA;AACA;AACA;AACA;AACA,4BAA4B,yCAAO;AACnC,kCAAkC;AAClC;AACA;AACA,gCAAgC,uDAAY;AAC5C,yBAAyB,yCAAO;AAChC,0BAA0B,yCAAO;AACjC;AACA,sBAAsB;AACtB;AACA;AACA,gDAAgD,qDAAI,uBAAuB,eAAe;AAC1F;AACA,oBAAoB;AACpB;AACA,gBAAgB,gBAAgB;AAChC,0BAA0B;AAC1B;AACA,sGAAsG;AACtG,6BAA6B,0CAAG;AAChC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,sGAAsG;AACtG,QAAQ,0CAAG;AACX;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gBAAgB,gBAAgB;AAChC;AACA,YAAY,+CAAS;AACrB,sBAAsB,yDAAS;AAC/B;AACA,YAAY,sDAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,YAAY,+CAAS;AACrB,sBAAsB,yDAAS,iBAAiB,oDAAG,8BAA8B,0DAAS,OAAO,+CAAS,gCAAgC,yDAAS,iBAAiB,qDAAI,OAAO,sDAAM,IAAI,QAAQ;AACjM,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA,YAAY,+CAAS,8BAA8B,yDAAS,8BAA8B,QAAQ;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,8BAA8B;AAC9B;AACA,gBAAgB,gBAAgB;AAChC;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,uEAAuE,WAAW;AAClF;AACA;AACA,aAAa,IAAI,0DAA0D;AAC3E;AACA;AACA;AACA,2DAA2D,iCAAiC,+DAAwB,CAAC,sDAAQ,GAAG,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,iDAAa;AACnN,oCAAoC,+DAAwB,GAAG,6GAA6G;AAC5K,QAAQ,yDAAkB;AAC1B,MAAM;AACN;AACA,QAAQ,4DAAqB,MAAM,yDAAkB;AACrD,OAAO,8HAA8H;AACrI,QAAQ,yDAAkB;AAC1B,QAAQ,wDAAiB;AACzB,QAAQ,yDAAkB;AAC1B,OAAO,YAAY,0QAA0Q,aAAa,yBAAyB,0KAA0K;AAC7e,QAAQ,6DAAsB;AAC9B,QAAQ,4DAAqB;AAC7B,QAAQ,0DAAmB;AAC3B,QAAQ,0DAAmB;AAC3B,MAAM;AACN,QAAQ,wDAAiB;AACzB,OAAO,wDAAwD,aAAa,sBAAsB,gBAAgB,sBAAsB;AACxI;AACA,MAAM,gCAAgC,MAAM,iDAAM,SAAS,sDAAQ,IAAI,GAAG;AAC1E,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,iDAAM;AAClB;AACA;AACA,kBAAkB,MAAM,oDAAS,qBAAqB,cAAc,IAAI;AACxE,kBAAkB,MAAM,gDAAK,EAAE;AAC/B,uBAAuB,MAAM,gDAAK,EAAE;AACpC,wBAAwB,MAAM,gDAAK,EAAE;AACrC,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,mBAAmB,MAAM,gDAAK,EAAE;AAChC,aAAa,MAAM,gDAAK,EAAE;AAC1B,oBAAoB,MAAM,gDAAK,EAAE;AACjC,yBAAyB,MAAM,gDAAK,EAAE;AACtC,qBAAqB,MAAM,iDAAM,sBAAsB;AACvD;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iEAAsB;AACrD,sEAAsE,aAAa,sBAAsB,gBAAgB;AACzH,aAAa;AACb,KAAK,iBAAiB,UAAU;AAChC,sBAAsB,iDAAM;AAC5B,uBAAuB,sDAAQ;AAC/B,aAAa,GAAG,IAAI,MAAM,qDAAiB,EAAE,IAAI,MAAM,iDAAa,EAAE,IAAI,IAAI;AAC9E,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,iDAAM;AACxB;AACA,SAAS;AACT,kBAAkB,oDAAS;AAC3B,+BAA+B,cAAc;AAC7C,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;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,+CAA+C,yCAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uDAAY;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,4BAA4B;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,yBAAyB;AACzB,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AAC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M,gDAAK,EAAE;AAC3B,YAAY,MAAM,gDAAK,yBAAyB;AAChD,cAAc,MAAM,iDAAM,EAAE;AAC5B,eAAe,MAAM,iDAAM,EAAE;AAC7B,oBAAoB,MAAM,0DAAe,0BAA0B,oBAAoB,IAAI;AAC3F;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB,iBAAiB,0DAA0D,8BAA8B;AACzG,KAAK,iBAAiB,UAAU;AAChC,sBAAsB,iDAAM;AAC5B,uBAAuB,yDAAU;AACjC,aAAa,GAAG,IAAI,MAAM,qDAAiB,EAAE,IAAI,IAAI;AACrD,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB;AACA,SAAS;AACT,kBAAkB,0DAAe;AACjC,oCAAoC,oBAAoB;AACxD,SAAS,GAAG,IAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uDAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uDAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uDAAY;AACtC,4BAA4B,yCAAO;AACnC,kCAAkC,yCAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;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;A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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,yDAAyD,gCAAgC,+DAAwB;AACjH,mCAAmC,+DAAwB,GAAG,iIAAiI;AAC/L,QAAQ,4DAAqB;AAC7B,QAAQ,4DAAqB;AAC7B,QAAQ,4DAAqB;AAC7B,QAAQ,4DAAqB;AAC7B,QAAQ,4DAAqB;AAC7B,QAAQ,4DAAqB;AAC7B,QAAQ,4DAAqB;AAC7B,MAAM;AACN;AACA,QAAQ,4DAAqB,MAAM,yDAAkB;AACrD,QAAQ,4DAAqB,MAAM,yDAAkB;AACrD,QAAQ,4DAAqB,MAAM,yDAAkB;AACrD,QAAQ,4DAAqB,MAAM,yDAAkB;AACrD,QAAQ,4DAAqB,MAAM,yDAAkB;AACrD,QAAQ,4DAAqB,MAAM,yDAAkB;AACrD,QAAQ,4DAAqB,MAAM,yDAAkB;AACrD,OAAO,+CAA+C,wOAAwO,aAAa,0BAA0B,aAAa,kEAA2B,8CAA8C,aAAa;AACxa;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB;AACA,sB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,+BAA+B,iEAAsB;AACrD;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA,+GAA+G,SAAS,mBAAmB,+FAA+F,SAAS,iGAAiG,UAAU,UAAU,qFAAqF,kBAAkB,QAAQ,6FAA6F,SAAS,mGAAmG,YAAY,SAAS;AACrrB,aAAa;AACb,KAAK,WAAW;AAChB,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;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uDAAY;AACrC;AACA;AACA;AACA;AACA;AACA,0BAA0B,uDAAY;AACtC,kDAAkD,WAAW;AAC7D;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,oBAAoB,yBAAyB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,yCAAyC;AAC5F;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,eAAe;AACf;AACA;AACA;AACA,kBAAkB,wDAAwD;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,6BAA6B,+DAAwB,CAAC,qDAAiB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AAW;AAC7B;AACA,SAAS,GAAG,IAAI;;AAEhB;AACA;AACA,uEAAuE;AACvE,0CAA0C,8DAAuB,GAAG,4BAA4B;AAChG,0CAA0C,8DAAuB,GAAG,WAAW,0DAAY,IAAI;AAC/F,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,mDAAQ;AACtB,iBAAiB,qEAAqE,0DAAY,GAAG;AACrG,KAAK,iBAAiB;AACtB,eAAe,mDAAmD,gEAAyB,yBAAyB,4BAA4B,0BAA0B,yBAAyB,QAAQ,0DAAY,IAAI,yBAAyB,4BAA4B,IAAI;;AAEpR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D,wBAAwB,oEAAkB,GAAG,8CAA8C,+BAA+B,8CAA8C;AACxK,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,YAAY,UAAU;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uDAAY;AACrC;AACA;AACA;AACA;AACA;AACA,yBAAyB,uDAAY;AACrC;AACA;AACA;AACA;AACA;AACA,8BAA8B,uDAAY;AAC1C;AACA;AACA;AACA;AACA;AACA,sBAAsB,UAAU,eAAe,SAAS,SAAS;AACjE,sBAAsB;AACtB;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,qCAAqC,kBAAkB,eAAe,mBAAmB;AACzF;AACA;AACA,2BAA2B;AAC3B,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,4BA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ACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,4BAA4B;AAC5B,mCAAmC;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,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,mBAAmB;AACnB,wBAAwB;AACxB,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,6EAA6E;AACtI;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gCAAgC,+DAAwB,uBAAuB,+DAAwB,kBAAkB,+DAAwB,CAAC,4DAAwB,GAAG,+DAAwB;AAC9P,mCAAmC,+DAAwB,GAAG,gEAAgE,0LAA0L,aAAa,gEAAyB,IAAI,SAAS,8DAAiB,eAAe,yDAAU,oCAAoC,IAAI,kEAA2B,8CAA8C,aAAa;AACnhB;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,aAAa;AACnB;AACA,sBAAsB;AAC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AkB,GAAG,6CAA6C,0BAA0B,0DAAQ,eAAe,6CAA6C;AACvL;AACA,MAAM;AACN;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,UAAU,iBAAiB,IAAI,UAAU;;AAE/D;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,WAAW;AAChD;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D,oCAAoC,+DAAwB,GAAG,+DAA+D;AAC9H,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB,iBAAiB,8BAA8B;AAC/C,KAAK,iBAAiB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uDAAY;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uDAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,qDAAI;AACpD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kHAAkH,sDAAsD;AACxK,qCAAqC,qBAAqB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,2BAA2B,+DAAwB,eAAe,+DAAwB,kBAAkB,+DAAwB,CAAC,iDAAa,GAAG,+DAAwB,CAAC,qDAAiB;AAC9O,8BAA8B,+DAAwB,GAAG,kHAAkH;AAC3K,QAAQ,4DAAqB,8BAA8B,sDAAW;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F,uBAAuB,+FAA+F,SAAS,iGAAiG,UAAU,YAAY,qFAAqF,sBAAsB,6FAA6F,UAAU,mGAAmG,aAAa,SAAS,0CAA0C;AAChzB;AACA,kBAAkB,MAAM,gDAAK,EAAE;AAC/B,WAAW,MAAM,gDAAK,EAAE;AACxB,qBAAqB,MAAM,gDAAK,EAAE;AAClC;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA,iCAAiC,yEAA8B;AAC/D,+BAA+B,iEAAsB;AACrD;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,6CAA6C,oBAAoB,kCAAkC,oBAAoB,qFAAqF,uBAAuB,+FAA+F,SAAS,iGAAiG,UAAU,YAAY,qFAAqF,sBAAsB,6FAA6F,UAAU,mGAAmG,aAAa,SAAS;AAC7wB,aAAa;AACb,KAAK,WAAW;AAChB,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uDAAY;AACrC;AACA;AACA;AACA,0BAA0B,uDAAY;AACtC,kDAAkD,WAAW;AAC7D;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,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yBAAyB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,yCAAyC;AAC5F;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;A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BAAiB,oBAAoB;AACrC,KAAK,iBAAiB,UAAU;AAChC,sBAAsB,iDAAM;AAC5B,uBAAuB,sDAAQ;AAC/B,aAAa,GAAG,IAAI;AACpB,sBAAsB,iDAAM;AAC5B;AACA,aAAa,GAAG,IAAI,UAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;AACnE,2BAA2B,oEAAkB,GAAG,iDAAiD,kCAAkC,iDAAiD;AACpL,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,YAAY,UAAU;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA,8BAA8B,uDAAY;AAC1C;AACA,wCAAwC,eAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,+CAAS;AACtC,kBAAkB,oDAAG;AACrB,yCAAyC,kDAAe;AACxD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,iBAAiB;AACjB,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,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,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,oBAAo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AAC3D,uBAAuB,oEAAkB,GAAG,6CAA6C,8BAA8B,6CAA6C;AACpK,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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;AACA,SAAS;AACT;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,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B,GAAG,MAAM;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E,6CAA6C,gEAAyB,GAAG,qEAAqE;AAC9I,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,YAAY,UAAU;;AAE5C;AACA;AACA,wEAAwE,yDAAuB,GAAG,+CAAa;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uDAAY;AACtC,0BAA0B,uDAAY;AACtC,+BAA+B,uDAAY;AAC3C,gCAAgC,uDAAY;AAC5C,6BAA6B,yCAAO;AACpC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,cAAc;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,YAAY,+CAAS;AACrB,sBAAsB,yDAAS,kBAAkB,yDAAS;AAC1D;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2CAAK,CAAC,+CAAS,iCAAiC,eAAe,GAAG,+CAAS,gCAAgC,eAAe,QAAQ,yDAAS;AACvJ;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,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,mDAAmD,OAAO;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,iBAAiB;AAC5E;AACA;AACA,+BAA+B,oCAAoC;AACnE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,aAAa;AACzE;AACA,mDAAmD,gCAAgC;AACnF;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,YAAY,UAAU;;AAE5C,oCAAoC,yDAAc;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,6BAA6B,uDAAY;AACzC,8BAA8B,uDAAY;AAC1C,+BAA+B,uDAAY;AAC3C,6BAA6B,uDAAY;AACzC,8BAA8B,uDAAY;AAC1C,+BAA+B,uDAAY;AAC3C,8BAA8B,uDAAY;AAC1C,4BAA4B,uDAAY;AACxC,+BAA+B,uDAAY;AAC3C,0BAA0B,uDAAY;AACtC,+BAA+B,uDAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,yCAAO;AACpC,8BAA8B,yCAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6DAA6D;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,2CAAK;AAC5C,YAAY,2CAAK;AACjB,sBAAsB,yDAAS;AAC/B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,kBAAkB,yDAAS,kBAAkB,yDAAS;AACtD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,qBAAqB;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;AACA;AACA;AACA;AACA,kBAAkB,yDAAS,kBAAkB,oDAAG,4CAA4C,6DAAY,OAAO,uDAAM,sCAAsC,oDAAG;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,2CAA2C,kHAAkH;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,oCAAoC,+DAAwB,WAAW,+DAAwB,eAAe,+DAAwB,kBAAkB,+DAAwB,2BAA2B,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,4DAAwB,GAAG,+DAAwB;AACrY,uCAAuC,+DAAwB,GAAG,oIAAoI;AACtM,QAAQ,4DAAqB,yCAAyC,sDAAW;AACjF,QAAQ,4DAAqB,2CAA2C,sDAAW;AACnF,QAAQ,4DAAqB,wCAAwC,sDAAW;AAChF,QAAQ,4DAAqB,6CAA6C,sDAAW;AACrF,QAAQ,4DAAqB,yCAAyC,sDAAW;AACjF,QAAQ,4DAAqB,yCAAyC,sDAAW;AACjF,QAAQ,4DAAqB,2CAA2C,sDAAW;AACnF,QAAQ,4DAAqB,+CAA+C,sDAAW;AACvF,QAAQ,4DAAqB,8CAA8C,sDAAW;AACtF,QAAQ,4DAAqB,sCAAsC,sDAAW;AAC9E,QAAQ,4DAAqB,iDAAiD,sDAAW;AACzF,QAAQ,4DAAqB;AAC7B,MAAM;AACN;AACA,QAAQ,4DAAqB,MAAM,yDAAkB;AACrD,QAAQ,4DAAqB,MAAM,yDAAkB;AACrD,QAAQ,4DAAqB,MAAM,yDAAkB;A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6C,MAAM,sDAAW,EAAE;AAChE,SAAS;AACT,kBAAkB,uDAAY;AAC9B,wDAAwD,MAAM,sDAAW,EAAE;AAC3E,SAAS;AACT,kBAAkB,oDAAS;AAC3B,mBAAmB,yDAAU;AAC7B,SAAS;AACT,kBAAkB,oDAAS;AAC3B,oCAAoC,cAAc;AAClD,SAAS;AACT,kBAAkB,0DAAe;AACjC,wCAAwC,mBAAmB;AAC3D,SAAS,GAAG,IAAI;;AAEhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,2DAA2D;AAC3D,oCAAoC,8DAAuB,GAAG,sBAAsB;AACpF,oCAAoC,8DAAuB,GAAG;AAC9D,UAAU;AACV;AACA,YAAY,yDAAY;AACxB,YAAY;AACZ,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,mDAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yDAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA,aAAa;AACb,KAAK,iBAAiB;AACtB,eAAe,mDAAmD,gEAAyB,mBAAmB,4BAA4B,gaAAga,yBAAyB,QAAQ,yDAAY,IAAI,yBAAyB,kXAAkX,IAAI;;AAE1+B;AACA;AACA;;AAEA;AACA;AACA;;AAEkqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC77GlqB;AACA;AACA;AAC4B;;;;;;;;;;;;;;;;;;;ACHiD;AACtB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD;AACA,8BAA8B,8DAAQ;AACtC;AACA,uCAAuC,kCAAkC;AACzE;AACA;AACA;AACA,wBAAwB,+BAA+B;AACvD,2BAA2B,8DAAQ;AACnC;AACA,qBAAqB,8DAAQ;AAC7B,oBAAoB,8DAAQ;AAC5B;AACA,oBAAoB,8DAAQ,+BAA+B,8DAAQ,6DAA6D,8DAAQ;AACxI,oBAAoB,8DAAQ,sBAAsB,8DAAQ;AAC1D,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oEAAoE,kCAAkC;AACtG;AACA;AACA,YAAY,8DAAQ,6BAA6B,8DAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA,6DAA6D,8DAAQ,iCAAiC,8DAAQ;AAC9G,oBAAoB,8DAAQ,cAAc,8DAAQ;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAc;AACtB;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oDAAa;AACrB;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;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;AACA,oEAAoE,kCAAkC;AACtG;AACA;AACA,YAAY,8DAAQ,6BAA6B,8DAAQ;AACzD;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,0EAA0E,gBAAgB;AAC1F;AACA;AACA;AACA;AACA,2FAA2F,gBAAgB;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;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;AACA;AACA,+CAA+C,8DAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,4BAA4B;AACxF;AACA;AACA,wEAAwE,8DAAQ;AAChF;AACA,6FAA6F,yCAAyC;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,0BAA0B;AACtF;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,+BAA+B;AAChH;AACA;AACA,4CAA4C,4CAA4C;AACxF;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;;;;;;;;;;;;;;;;;AC5X8D;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzIA,IAAIA,SAAS,GAAG,eAAhB;AACA,IAAIC,GAAG,GAAG,CAAV;AACA,IAAIC,gBAAgB,GAAG,KAAvB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,iBAAT,GAA6B;EACzBD,gBAAgB,GAAG,KAAnB;AACH;AACD;AACA;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;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;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;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;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;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;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;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;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;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,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,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;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;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;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,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA,wCAAwC,qBAAqB;AAC7D;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;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,gBAAgB,uBAAuB;AACvC,QAAQ,yCAAyC;AACjD;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAiE;AACjF;AACA,QAAQ,wCAAwC;AAChD;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iDAAiD;AACjE;AACA,QAAQ,2CAA2C;AACnD;AACA,kBAAkB;AAClB;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,gBAAgB,iDAAiD;AACjE;AACA,QAAQ,2CAA2C;AACnD;AACA,kBAAkB;AAClB;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,QAAQ,qDAAqD;AAC7D;AACA,kBAAkB;AAClB;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,QAAQ,4CAA4C;AACpD;AACA,kBAAkB;AAClB;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,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;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtgJ6G;AACpb;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;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;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;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;AACA,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,iBAAiB,uEAAiB;AAClC;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,aAAa,uEAAiB;AAC9B;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;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,SAAS,kEAAgB;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,SAAS,kEAAgB;AACzB;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,aAAa,uEAAiB;AAC9B;AACA;AACA,kBAAkB,uEAAiB;AACnC;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;AACA,sEAAsE,uEAAiB;AACvF,aAAa,uEAAiB;AAC9B;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,mFAAmF,0DAA0D;AAC7I,+EAA+E,0DAA0D;AACzI;AACA;AACA,cAAc,uEAAiB,kEAAkE,uEAAiB;AAClH;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,8BAA8B,yBAAyB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,oDAAoD;AAC5I,oFAAoF,oDAAoD;AACxI;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;AACA,gBAAgB,gEAAU,UAAU,oBAAoB;AACxD;AACA,8FAA8F,oDAAoD;AAClJ;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA,0BAA0B,uEAAiB;AAC3C;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;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;AACA,YAAY,wEAAoB;AAChC;AACA,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;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,mCAAmC,kEAAgB;AACnD;AACA;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,iCAAiC;AACjC;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;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;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,+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;AACA;AACA,sBAAsB,uEAAiB;AACvC;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;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,oBAAoB,kEAAgB;AACpC;AACA,4CAA4C,uDAAK;AACjD;AACA,qBAAqB;AACrB,oBAAoB,kEAAgB;AACpC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,8DAA8D,4BAA4B;AAC1F,YAAY,kEAAgB;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,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,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;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;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;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,0CAA0C,uEAAiB;AAC7F;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,iCAAiC;AACjC;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;AACjE;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,0HAA0H,uEAAiB;AAC3I,YAAY,8DAAQ;AACpB,YAAY,gEAAU,sBAAsB,wBAAwB;AACpE;AACA,kBAAkB,uEAAiB;AACnC,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;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;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;AACA,YAAY,wEAAoB;AAChC;AACA,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,yBAAyB,kEAAgB;AACzC;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;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;AACnE,aAAa,uEAAiB;AAC9B;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,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;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;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,qEAAqE,qCAAqC;AAC1G,8DAA8D,4BAA4B;AAC1F,YAAY,kEAAgB;AAC5B,gEAAgE,sBAAsB;AACtF,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;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;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,uCAAuC,mEAAa,UAAU,qCAAqC;AACnG,kEAAkE,6BAA6B;AAC/F,sEAAsE,4BAA4B;AAClG;AACA,sEAAsE,4BAA4B;AAClG,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA,qDAAqD,uDAAK;AAC1D;AACA,yBAAyB;AACzB,wBAAwB,kEAAgB;AACxC;AACA;AACA,gBAAgB,gEAAU,uBAAuB,0EAA0E;AAC3H;AACA,oBAAoB,gEAAU,uBAAuB,gDAAgD;AACrG;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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;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;AACnE,4BAA4B,uEAAiB;AAC7C;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;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;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA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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,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,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,mCAAmC,kEAAgB;AACnD;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,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,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,0DAA0D,6BAA6B;AACvF,8DAA8D,4BAA4B;AAC1F;AACA,8DAA8D,4BAA4B;AAC1F,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;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;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;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;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;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;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,2CAA2C,uEAAiB;AAC5D;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;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;AACA,YAAY,wEAAoB;AAChC;AACA,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,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,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,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,qBAAqB,kEAAgB,KAAK,kEAAgB;AAC1D;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,+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,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,+BAA+B,mEAAa,UAAU,wCAAwC;AAC9F,0DAA0D,6BAA6B;AACvF,8DAA8D,4BAA4B;AAC1F;AACA,8DAA8D,4BAA4B;AAC1F,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,YAAY,kEAAgB;AAC5B;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,gBAAgB,kEAAgB;AAChC;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;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;AACA,wBAAwB,kEAAc;AACtC;AACA;AACA,wBAAwB,kEAAc;AACtC;AACA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;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;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,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,wCAAwC,wBAAwB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gBAAgB;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,wEAAwE,0BAA0B;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;AACA;AACA;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;AACA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iCAAiC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,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;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,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEkK;;;;;;;;;;;;;;;;;;;;;;;;;;ACpjdtG;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,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,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,+EAAuB;AAC/B;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,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,oBAAoB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,wDAAwD;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;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,SAAS;AACT;AACA;AACA,KAAK;AACL;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;;AAEA;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;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,2BAA2B,4CAA4C;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E;AAC1E,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,YAAY;AACxE;AACA;AACA;AACA,gCAAgC,SAAS;AACzC;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,wBAAwB,eAAe;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,4DAA4D;AAC5D;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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;;AAEA;AACA;AACA;;AAE+L;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvzF/L;AAEA;;AACA;;AACA;AACA;AACA;;AACA,IAAImB,KAAK;AAAG;AAAyB,YAAY;EAC7C;AACJ;AACA;AACA;AACA;AACA;AACA;EACI,SAASA,KAAT,CAAeC,IAAf,EAAqB;IACjB;IACA,KAAKC,QAAL,GAAgB,IAAhB;IACA;;IACA,KAAKC,OAAL,GAAe,KAAf;IACA;;IACA,KAAKC,SAAL,GAAiB,EAAjB;IACA,KAAKC,OAAL,GAAe,EAAf;IACA,KAAK3mD,GAAL,GAAW,EAAX;IACA,KAAK4mD,IAAL,GAAY,EAAZ;;IACA,IAAI,OAAOL,IAAP,KAAgB,QAApB,EAA8B;MAC1B,KAAKM,SAAL,GAAiBN,IAAjB;IACH,CAFD,MAGK,IAAIA,IAAI,IAAIA,IAAI,YAAYplD,KAA5B,EAAmC;MACpC,KAAK2lD,OAAL,GAAeP,IAAf;IACH;;IACD,KAAKQ,OAAL,GAAe,EAAf;IACA,KAAKC,aAAL,GAAqB,EAArB;IACA,KAAKC,cAAL,GAAsB,EAAtB;IACA,KAAKT,QAAL,GAAgB,IAAhB;IACA,KAAKC,OAAL,GAAe,KAAf;IACA,KAAKppD,MAAL,GAAc,EAAd;IACA,KAAK6pD,QAAL,GAAgB,EAAhB;IACA,OAAO,IAAP;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACIZ,KAAK,CAAC5oD,SAAN,CAAgBsnC,MAAhB,GAAyB,UAAUmiB,KAAV,EAAiB;IACtC,KAAKnnD,GAAL,GAAWmnD,KAAX;IACA,OAAO,IAAP;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;;;EACIb,KAAK,CAAC5oD,SAAN,CAAgB0pD,KAAhB,GAAwB,UAAUC,WAAV,EAAuB;IAC3C,KAAKA,WAAL,GAAmBA,WAAnB;IACA,OAAO,IAAP;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIf,KAAK,CAAC5oD,SAAN,CAAgB4pD,OAAhB,GAA0B,UAAUD,WAAV,EAAuBhoB,IAAvB,EAA6BL,IAA7B,EAAmCuoB,MAAnC,EAA2C;IACjEF,WAAW,GAAGA,WAAW,IAAI,KAAKA,WAAlC;;IACA,IAAIA,WAAJ,EAAiB;MACb,OAAOA,WAAW,CAACG,YAAZ,CAAyB,IAAzB,EAA+BnoB,IAA/B,EAAqCL,IAArC,EAA2CuoB,MAA3C,CAAP;IACH;;IACD,OAAOE,QAAQ,CAACvjD,UAAT,CAAoB,2GAApB,CAAP;EACH,CAND;EAOA;AACJ;AACA;AACA;AACA;;;EACIoiD,KAAK,CAAC5oD,SAAN,CAAgBgqD,YAAhB,GAA+B,UAAUL,WAAV,EAAuB;IAClDA,WAAW,GAAGA,WAAW,IAAI,KAAKA,WAAlC;;IACA,IAAIA,WAAJ,EAAiB;MACb,OAAOA,WAAW,CAACK,YAAZ,CAAyB,IAAzB,CAAP;IACH;;IACD,OAAOD,QAAQ,CAACvjD,UAAT,CAAoB,gHAApB,CAAP;EACH,CAND;EAOA;AACJ;AACA;;;EACIoiD,KAAK,CAAC5oD,SAAN,CAAgBwE,KAAhB,GAAwB,YAAY;IAChC,IAAIylD,MAAM,GAAG,IAAIrB,KAAJ,EAAb;IACAqB,MAAM,CAAChB,OAAP,GAAiB,KAAKA,OAAL,CAAa9hD,KAAb,CAAmB,CAAnB,CAAjB;IACA8iD,MAAM,CAAC3nD,GAAP,GAAa,KAAKA,GAAlB;IACA2nD,MAAM,CAAClB,OAAP,GAAiB,KAAKA,OAAtB;IACAkB,MAAM,CAACN,WAAP,GAAqB,KAAKA,WAA1B;IACAM,MAAM,CAACd,SAAP,GAAmB,KAAKA,SAAxB;IACAc,MAAM,CAACtqD,MAAP,GAAgB,KAAKA,MAAL,CAAYwH,KAAZ,CAAkB,CAAlB,CAAhB;IACA8iD,MAAM,CAACZ,OAAP,GAAiB,KAAKA,OAAL,CAAaliD,KAAb,CAAmB,CAAnB,CAAjB;IACA8iD,MAAM,CAACX,aAAP,GAAuB,KAAKA,aAAL,CAAmBniD,KAAnB,CAAyB,CAAzB,CAAvB;IACA8iD,MAAM,CAACV,cAAP,GAAwB,KAAKA,cAAL,CAAoBpiD,KAApB,CAA0B,CAA1B,CAAxB;IACA8iD,MAAM,CAACC,gBAAP,GAA0B,KAAKA,gBAA/B;IACAD,MAAM,CAACnB,QAAP,GAAkB,KAAKA,QAAvB;IACAmB,MAAM,CAACf,IAAP,GAAc,KAAKA,IAAnB;IACAe,MAAM,CAACE,eAAP,GAAyB,KAAKA,eAA9B;IACAF,MAAM,CAACjB,SAAP,GAAmB,KAAKA,SAAL,CAAe7hD,KAAf,CAAqB,CAArB,CAAnB;IACA8iD,MAAM,CAACT,QAAP,GAAkB,KAAKA,QAAL,CAAcriD,KAAd,CAAoB,CAApB,CAAlB;IACA,OAAO8iD,MAAP;EACH,CAlBD;EAmBA;AACJ;AACA;AACA;AACA;;;EACIrB,KAAK,CAAC5oD,SAAN,CAAgB6oD,IAAhB,GAAuB,UAAUuB,SAAV,EAAqB;IACxC,KAAKjB,SAAL,GAAiBiB,SAAjB;IACA,OAAO,IAAP;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;AACA;;;EACIxB,KAAK,CAAC5oD,SAAN,CAAgBqqD,SAAhB,GAA4B,UAAU/nD,GAAV,EAAeZ,KAAf,EAAsB;IAC9C,IAAI,OAAOA,KAAP,KAAiB,UAArB,EAAiC;MAC7B,KAAK/B,MAAL,CAAYiG,IAAZ,CAAiB;QAAEtD,GAAG,EAAEA,GAAP;QAAYkhD,EAAE,EAAE9hD;MAAhB,CAAjB;IACH,CAFD,MAGK;MACD,KAAK/B,MAAL,CAAYiG,IAAZ,CAAiB;QAAEtD,GAAG,EAAEA,GAAP;QAAYZ,KAAK,EAAEA;MAAnB,CAAjB;IACH;;IACD,OAAO,IAAP;EACH,CARD;EASA;AACJ;AACA;AACA;;;EACIknD,KAAK,CAAC5oD,SAAN,CAAgBsqD,QAAhB,GAA2B,UAAUC,MAAV,EAAkB;IACzC,IAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;MAC5B,KAAKvB,SAAL,GAAiB,GAAG7hD,KAAH,CAASlB,IAAT,CAAc,CAACskD,MAAD,CAAd,EAAwB,CAAxB,CAAjB;IACH,CAFD,MAGK;MACD,KAAKvB,SAAL,GAAiBuB,MAAM,CAACpjD,KAAP,CAAa,CAAb,CAAjB;IACH;;IACD,OAAO,IAAP;EACH,CARD;EASA;AACJ;AACA;AACA;AACA;;;EACIyhD,KAAK,CAAC5oD,SAAN,CAAgBwqD,MAAhB,GAAyB,UAAUC,MAAV,EAAkB;IACvC,IAAI,OAAOA,MAAP,KAAkB,QAAtB,EAAgC;MAC5B,KAAKpB,OAAL,GAAe,GAAGliD,KAAH,CAASlB,IAAT,CAAc,CAACwkD,MAAD,CAAd,EAAwB,CAAxB,CAAf;IACH,CAFD,MAGK;MACD,KAAKpB,OAAL,GAAeoB,MAAM,CAACtjD,KAAP,CAAa,CAAb,CAAf;IACH;;IACD,OAAO,IAAP;EACH,CARD;EASA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIyhD,KAAK,CAAC5oD,SAAN,CAAgB0qD,KAAhB,GAAwB,UAAUC,SAAV,EAAqBC,QAArB,EAA+BlpD,KAA/B,EAAsCmpD,UAAtC,EAAkDC,YAAlD,EAAgEC,SAAhE,EAA2E;IAC/FH,QAAQ,GAAGA,QAAQ,GAAIA,QAAD,CAAW5rC,WAAX,EAAH,GAA8B,IAAjD;IACA,IAAIgsC,SAAS,GAAG,IAAhB;;IACA,IAAI,OAAOL,SAAP,KAAqB,QAAzB,EAAmC;MAC/BK,SAAS,GAAG,IAAIC,SAAJ,CAAcN,SAAd,EAAyBC,QAAzB,EAAmClpD,KAAnC,EAA0CmpD,UAA1C,EAAsDC,YAAtD,EAAoEC,SAApE,CAAZ;IACH,CAFD,MAGK,IAAIJ,SAAS,YAAYM,SAAzB,EAAoC;MACrCD,SAAS,GAAGL,SAAZ;IACH;;IACD,KAAK1B,OAAL,CAAarjD,IAAb,CAAkB;MACd49C,EAAE,EAAE,SADU;MAEd78C,CAAC,EAAEqkD;IAFW,CAAlB;IAIA,OAAO,IAAP;EACH,CAdD;EAeA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIpC,KAAK,CAAC5oD,SAAN,CAAgBkrD,MAAhB,GAAyB,UAAUC,SAAV,EAAqBC,UAArB,EAAiCR,QAAjC,EAA2CC,UAA3C,EAAuDC,YAAvD,EAAqE;IAC1F,IAAI,OAAOM,UAAP,KAAsB,QAA1B,EAAoC;MAChCA,UAAU,GAAG,CAACA,UAAD,CAAb;IACH;;IACD,IAAI,CAACR,QAAD,IAAaA,QAAQ,KAAK,MAA9B,EAAsC;MAClCA,QAAQ,GAAG,UAAX;IACH;;IACD,IAAIS,QAAQ,GAAGtB,QAAQ,CAACuB,WAAT,CAAqBV,QAArB,CAAf;IACA,KAAK3B,OAAL,CAAarjD,IAAb,CAAkB;MACd49C,EAAE,EAAE,UADU;MAEd78C,CAAC,EAAE;QACCykD,UAAU,EAAEA,UADb;QAECR,QAAQ,EAAEA,QAFX;QAGCO,SAAS,EAAEA,SAHZ;QAICN,UAAU,EAAEA,UAJb;QAKCC,YAAY,EAAEA,YALf;QAMCO,QAAQ,EAAEA;MANX;IAFW,CAAlB;IAWA,OAAO,IAAP;EACH,CApBD;EAqBA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIzC,KAAK,CAAC5oD,SAAN,CAAgBurD,MAAhB,GAAyB,UAAUZ,SAAV,EAAqBU,QAArB,EAA+BG,WAA/B,EAA4C;IACjE,OAAO,KAAKC,gBAAL,CAAsBd,SAAtB,EAAiCU,QAAjC,EAA2CG,WAA3C,CAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI5C,KAAK,CAAC5oD,SAAN,CAAgByrD,gBAAhB,GAAmC,UAAUd,SAAV,EAAqBU,QAArB,EAA+BG,WAA/B,EAA4CE,SAA5C,EAAuD;IACtF,IAAIC,KAAK,GAAG,CAACppD,uEAAiB,CAACmpD,SAAD,CAAlB,GAAgCA,SAAhC,GAA4C,WAAxD;IACA,IAAIE,KAAJ;IACA,IAAIvzC,IAAJ;;IACA,IAAI,OAAOsyC,SAAP,KAAqB,QAArB,IAAiCZ,QAAQ,CAAC8B,QAAT,CAAkBlB,SAAS,CAAC3rC,WAAV,EAAlB,EAA2C,OAA3C,CAArC,EAA0F;MACtF2rC,SAAS,GAAGA,SAAS,CAAC/oD,OAAV,CAAkB,SAAlB,EAA6B,EAA7B,CAAZ;MACAypD,QAAQ,GAAG,YAAX;IACH;;IACD,IAAI,CAACA,QAAD,IAAa,OAAOA,QAAP,KAAoB,QAArC,EAA+C;MAC3CM,KAAK,GAAGN,QAAQ,GAAGA,QAAQ,CAACrsC,WAAT,EAAH,GAA4B,WAA5C;MACAqsC,QAAQ,GAAGtB,QAAQ,CAAC+B,MAAT,CAAgBT,QAAhB,CAAX;IACH;;IACD,IAAIG,WAAJ,EAAiB;MACbI,KAAK,GAAGhD,KAAK,CAACmD,aAAN,CAAoB,KAAK9C,OAAzB,EAAkC,UAAlC,CAAR;;MACA,KAAK,IAAInnD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8pD,KAAK,CAACzqD,MAA1B,EAAkCW,CAAC,EAAnC,EAAuC;QACnCuW,IAAI,GAAGuzC,KAAK,CAAC9pD,CAAD,CAAL,CAAS6E,CAAT,CAAWgkD,SAAlB;;QACA,IAAI,OAAOtyC,IAAP,KAAgB,QAApB,EAA8B;UAC1B,IAAIA,IAAI,KAAKsyC,SAAb,EAAwB;YACpB,OAAO,IAAP;UACH;QACJ,CAJD,MAKK,IAAItyC,IAAI,YAAY5U,KAApB,EAA2B;UAC5B,KAAK,IAAI8K,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8J,IAAI,CAAClX,MAAzB,EAAiCoN,CAAC,EAAlC,EAAsC;YAClC,IAAI8J,IAAI,CAAC9J,CAAD,CAAJ,KAAYo8C,SAAZ,IAAyBA,SAAS,CAAC3rC,WAAV,OAA4B3G,IAAI,CAAC9J,CAAD,CAAJ,GAAU,OAAnE,EAA4E;cACxE,OAAO,IAAP;YACH;UACJ;QACJ;MACJ;IACJ;;IACD,KAAK06C,OAAL,CAAarjD,IAAb,CAAkB;MACd49C,EAAE,EAAE,UADU;MAEd78C,CAAC,EAAE;QACCgkD,SAAS,EAAEA,SADZ;QAECU,QAAQ,EAAEA,QAFX;QAGCK,SAAS,EAAEC;MAHZ;IAFW,CAAlB;IAQA,OAAO,IAAP;EACH,CAvCD;EAwCA;AACJ;AACA;AACA;AACA;;;EACI/C,KAAK,CAAC5oD,SAAN,CAAgBgsD,UAAhB,GAA6B,UAAUrB,SAAV,EAAqB;IAC9C,OAAO,KAAKY,MAAL,CAAYZ,SAAZ,EAAuB,YAAvB,CAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACI/B,KAAK,CAAC5oD,SAAN,CAAgBisD,KAAhB,GAAwB,UAAUtB,SAAV,EAAqBnH,EAArB,EAAyBlyC,MAAzB,EAAiC;IACrD,KAAKi6C,MAAL,CAAYZ,SAAZ,EAAuB,IAAvB,EAA6B,IAA7B;IACA,KAAK1B,OAAL,CAAarjD,IAAb,CAAkB;MACd49C,EAAE,EAAE,SADU;MAEd78C,CAAC,EAAE;QACCgkD,SAAS,EAAEA,SADZ;QAECU,QAAQ,EAAE7H,EAAE,GAAGA,EAAH,GAAQ,IAFrB;QAGClyC,MAAM,EAAEA,MAAM,GAAGA,MAAH,GAAY;MAH3B;IAFW,CAAlB;IAQA,OAAO,IAAP;EACH,CAXD;EAYA;AACJ;AACA;AACA;AACA;AACA;;;EACIs3C,KAAK,CAAC5oD,SAAN,CAAgBksD,IAAhB,GAAuB,UAAUC,SAAV,EAAqBC,QAArB,EAA+B;IAClD,KAAKnD,OAAL,CAAarjD,IAAb,CAAkB;MACd49C,EAAE,EAAE,QADU;MAEd78C,CAAC,EAAE;QACCwlD,SAAS,EAAEA,SADZ;QAECC,QAAQ,EAAEA;MAFX;IAFW,CAAlB;IAOA,OAAO,IAAP;EACH,CATD;EAUA;AACJ;AACA;AACA;AACA;AACA;;;EACIxD,KAAK,CAAC5oD,SAAN,CAAgBkZ,KAAhB,GAAwB,UAAU9W,KAAV,EAAiB6d,GAAjB,EAAsB;IAC1C,KAAKgpC,OAAL,CAAarjD,IAAb,CAAkB;MACd49C,EAAE,EAAE,SADU;MAEd78C,CAAC,EAAE;QACCvE,KAAK,EAAEA,KADR;QAEC6d,GAAG,EAAEA;MAFN;IAFW,CAAlB;IAOA,OAAO,IAAP;EACH,CATD;EAUA;AACJ;AACA;AACA;AACA;;;EACI2oC,KAAK,CAAC5oD,SAAN,CAAgBqsD,IAAhB,GAAuB,UAAUC,GAAV,EAAe;IAClC,KAAKrD,OAAL,CAAarjD,IAAb,CAAkB;MACd49C,EAAE,EAAE,QADU;MAEd78C,CAAC,EAAE;QACC2lD,GAAG,EAAEA;MADN;IAFW,CAAlB;IAMA,OAAO,IAAP;EACH,CARD;EASA;AACJ;AACA;AACA;AACA;;;EACI1D,KAAK,CAAC5oD,SAAN,CAAgBusD,IAAhB,GAAuB,UAAUD,GAAV,EAAe;IAClC,KAAKrD,OAAL,CAAarjD,IAAb,CAAkB;MACd49C,EAAE,EAAE,QADU;MAEd78C,CAAC,EAAE;QAAE2lD,GAAG,EAAEA;MAAP;IAFW,CAAlB;IAIA,OAAO,IAAP;EACH,CAND;EAOA;AACJ;AACA;AACA;AACA;;;EACI1D,KAAK,CAAC5oD,SAAN,CAAgBo1B,MAAhB,GAAyB,UAAUg2B,UAAV,EAAsB;IAC3C,IAAI,OAAOA,UAAP,KAAsB,QAA1B,EAAoC;MAChCA,UAAU,GAAG,GAAGjkD,KAAH,CAASlB,IAAT,CAAc,CAACmlD,UAAD,CAAd,EAA4B,CAA5B,CAAb;IACH;;IACD,KAAKnC,OAAL,CAAarjD,IAAb,CAAkB;MACd49C,EAAE,EAAE,UADU;MAEd78C,CAAC,EAAE;QAAEykD,UAAU,EAAEA;MAAd;IAFW,CAAlB;IAIA,OAAO,IAAP;EACH,CATD;EAUA;AACJ;AACA;AACA;AACA;AACA;;;EACIxC,KAAK,CAAC5oD,SAAN,CAAgBwsD,SAAhB,GAA4B,UAAUC,KAAV,EAAiBC,UAAjB,EAA6B;IACrD,KAAKxC,gBAAL,GAAwBwC,UAAxB;IACA,KAAK5D,QAAL,GAAgB2D,KAAhB;IACA,OAAO,IAAP;EACH,CAJD;EAKA;AACJ;AACA;AACA;AACA;;;EACI7D,KAAK,CAAC5oD,SAAN,CAAgB2sD,UAAhB,GAA6B,UAAUrqD,GAAV,EAAe;IACxC,KAAK4mD,IAAL,GAAY5mD,GAAZ;IACA,OAAO,IAAP;EACH,CAHD;EAIA;AACJ;AACA;;;EACIsmD,KAAK,CAAC5oD,SAAN,CAAgB4sD,aAAhB,GAAgC,YAAY;IACxC,KAAKzC,eAAL,GAAuB,IAAvB;IACA,OAAO,IAAP;EACH,CAHD,CA/Y6C,CAmZ7C;;EACA;AACJ;AACA;AACA;AACA;AACA;;;EACIvB,KAAK,CAAC5oD,SAAN,CAAgB6sD,SAAhB,GAA4B,UAAUp7C,IAAV,EAAgBg4C,KAAhB,EAAuB;IAC/C,KAAKR,OAAL,CAAarjD,IAAb,CAAkB;MACd49C,EAAE,EAAE,cADU;MAEd78C,CAAC,EAAE;QAAE8iD,KAAK,EAAEA,KAAT;QAAgBh4C,IAAI,EAAEA;MAAtB;IAFW,CAAlB;IAIA,OAAO,IAAP;EACH,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACIm3C,KAAK,CAACmD,aAAN,GAAsB,UAAU9C,OAAV,EAAmBznC,IAAnB,EAAyB;IAC3C,OAAOynC,OAAO,CAAC7vB,MAAR,CAAe,UAAU0zB,CAAV,EAAa;MAC/B,OAAOA,CAAC,CAACtJ,EAAF,KAAShiC,IAAhB;IACH,CAFM,CAAP;EAGH,CAJD;EAKA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACIonC,KAAK,CAACmE,gBAAN,GAAyB,UAAU9D,OAAV,EAAmB+D,OAAnB,EAA4B;IACjD,IAAIC,QAAQ,GAAGhE,OAAO,CAAC7vB,MAAR,CAAe,UAAU0zB,CAAV,EAAa;MACvC,OAAOE,OAAO,CAACxpD,OAAR,CAAgBspD,CAAC,CAACtJ,EAAlB,MAA0B,CAAC,CAAlC;IACH,CAFc,CAAf;IAGA,IAAIn5C,GAAG,GAAG,EAAV;;IACA,KAAK,IAAIvI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmrD,QAAQ,CAAC9rD,MAA7B,EAAqCW,CAAC,EAAtC,EAA0C;MACtC,IAAI,CAACuI,GAAG,CAAC4iD,QAAQ,CAACnrD,CAAD,CAAR,CAAY0hD,EAAb,CAAR,EAA0B;QACtBn5C,GAAG,CAAC4iD,QAAQ,CAACnrD,CAAD,CAAR,CAAY0hD,EAAb,CAAH,GAAsByJ,QAAQ,CAACnrD,CAAD,CAAR,CAAY6E,CAAlC;MACH;IACJ;;IACD,OAAO0D,GAAP;EACH,CAXD;;EAYA,OAAOu+C,KAAP;AACH,CAjcoC,EAArC;AAkcA;AACA;AACA;AACA;;;AACA,IAAIqC,SAAS;AAAG;AAAyB,YAAY;EACjD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,SAASA,SAAT,CAAmBxB,KAAnB,EAA0BmB,QAA1B,EAAoClpD,KAApC,EAA2CmpD,UAA3C,EAAuDC,YAAvD,EAAqEC,SAArE,EAAgF;IAC5E,IAAIF,UAAU,KAAK,KAAK,CAAxB,EAA2B;MAAEA,UAAU,GAAG,KAAb;IAAqB;IAClD;;;IACA,KAAKC,YAAL,GAAoB,KAApB;IACA;;IACA,KAAKoC,SAAL,GAAiB,KAAjB;;IACA,IAAI,OAAOzD,KAAP,KAAiB,QAArB,EAA+B;MAC3B,KAAKA,KAAL,GAAaA,KAAb;MACA,KAAKmB,QAAL,GAAgBA,QAAQ,CAAC5rC,WAAT,EAAhB;MACA,KAAKtd,KAAL,GAAaA,KAAb;MACA,KAAKqpD,SAAL,GAAiBA,SAAjB;MACA,KAAKF,UAAL,GAAkBA,UAAlB;MACA,KAAKC,YAAL,GAAoBA,YAApB;MACA,KAAKoC,SAAL,GAAiB,KAAjB;MACA,KAAK7B,QAAL,GAAgBtB,QAAQ,CAACuB,WAAT,CAAqB6B,eAArB,CAAqC,KAAKvC,QAA1C,CAAhB;IACH,CATD,MAUK,IAAInB,KAAK,YAAYwB,SAAjB,IAA8BvpD,KAAK,YAAYupD,SAA/C,IAA4DvpD,KAAK,YAAY+B,KAAjF,EAAwF;MACzF,KAAKypD,SAAL,GAAiB,IAAjB;MACA,KAAKE,SAAL,GAAiBxC,QAAQ,CAAC5rC,WAAT,EAAjB;MACA,KAAKquC,UAAL,GAAkB,CAAC5D,KAAD,CAAlB;MACA,KAAKsB,SAAL,GAAiBtB,KAAK,CAACsB,SAAvB;MACA,KAAKF,UAAL,GAAkBpB,KAAK,CAACoB,UAAxB;MACA,KAAKC,YAAL,GAAoBrB,KAAK,CAACqB,YAA1B;;MACA,IAAIppD,KAAK,YAAY+B,KAArB,EAA4B;QACxB,GAAGmC,IAAH,CAAQ1F,KAAR,CAAc,KAAKmtD,UAAnB,EAA+B3rD,KAA/B;MACH,CAFD,MAGK;QACD,KAAK2rD,UAAL,CAAgBznD,IAAhB,CAAqBlE,KAArB;MACH;IACJ;;IACD,OAAO,IAAP;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACIupD,SAAS,CAACqC,GAAV,GAAgB,YAAY;IACxB,IAAIjoD,IAAI,GAAG,EAAX;;IACA,KAAK,IAAI/B,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGW,SAAS,CAAC9C,MAAhC,EAAwCmC,EAAE,EAA1C,EAA8C;MAC1C+B,IAAI,CAAC/B,EAAD,CAAJ,GAAWW,SAAS,CAACX,EAAD,CAApB;IACH;;IACD,OAAO2nD,SAAS,CAACsC,iBAAV,CAA4B,GAAGpmD,KAAH,CAASlB,IAAT,CAAcZ,IAAd,EAAoB,CAApB,CAA5B,EAAoD,KAApD,CAAP;EACH,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI4lD,SAAS,CAACjrD,SAAV,CAAoBstD,GAApB,GAA0B,UAAU7D,KAAV,EAAiBmB,QAAjB,EAA2BlpD,KAA3B,EAAkCmpD,UAAlC,EAA8CC,YAA9C,EAA4D;IAClF,OAAOG,SAAS,CAACuC,OAAV,CAAkB,IAAlB,EAAwB/D,KAAxB,EAA+BmB,QAA/B,EAAyClpD,KAAzC,EAAgD,KAAhD,EAAuDmpD,UAAvD,EAAmEC,YAAnE,CAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;;;EACIG,SAAS,CAACwC,EAAV,GAAe,YAAY;IACvB,IAAIpoD,IAAI,GAAG,EAAX;;IACA,KAAK,IAAI/B,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGW,SAAS,CAAC9C,MAAhC,EAAwCmC,EAAE,EAA1C,EAA8C;MAC1C+B,IAAI,CAAC/B,EAAD,CAAJ,GAAWW,SAAS,CAACX,EAAD,CAApB;IACH;;IACD,OAAO2nD,SAAS,CAACsC,iBAAV,CAA4B,GAAGpmD,KAAH,CAASlB,IAAT,CAAcZ,IAAd,EAAoB,CAApB,CAA5B,EAAoD,IAApD,CAAP;EACH,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI4lD,SAAS,CAACjrD,SAAV,CAAoBytD,EAApB,GAAyB,UAAUhE,KAAV,EAAiBmB,QAAjB,EAA2BlpD,KAA3B,EAAkCmpD,UAAlC,EAA8CC,YAA9C,EAA4D;IACjF,OAAOG,SAAS,CAACuC,OAAV,CAAkB,IAAlB,EAAwB/D,KAAxB,EAA+BmB,QAA/B,EAAyClpD,KAAzC,EAAgD,IAAhD,EAAsDmpD,UAAtD,EAAkEC,YAAlE,CAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;;;EACIG,SAAS,CAACyC,KAAV,GAAkB,YAAY;IAC1B,IAAIroD,IAAI,GAAG,EAAX;;IACA,KAAK,IAAI/B,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGW,SAAS,CAAC9C,MAAhC,EAAwCmC,EAAE,EAA1C,EAA8C;MAC1C+B,IAAI,CAAC/B,EAAD,CAAJ,GAAWW,SAAS,CAACX,EAAD,CAApB;IACH;;IACD,OAAO2nD,SAAS,CAACsC,iBAAV,CAA4B,GAAGpmD,KAAH,CAASlB,IAAT,CAAcZ,IAAd,EAAoB,CAApB,CAA5B,EAAoD,QAApD,CAAP;EACH,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI4lD,SAAS,CAACjrD,SAAV,CAAoB0tD,KAApB,GAA4B,UAAUjE,KAAV,EAAiBmB,QAAjB,EAA2BlpD,KAA3B,EAAkCmpD,UAAlC,EAA8CC,YAA9C,EAA4D;IACpF,OAAOG,SAAS,CAACuC,OAAV,CAAkB,IAAlB,EAAwB/D,KAAxB,EAA+BmB,QAA/B,EAAyClpD,KAAzC,EAAgD,OAAhD,EAAyDmpD,UAAzD,EAAqEC,YAArE,CAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;;;EACIG,SAAS,CAAC0C,MAAV,GAAmB,YAAY;IAC3B,IAAItoD,IAAI,GAAG,EAAX;;IACA,KAAK,IAAI/B,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGW,SAAS,CAAC9C,MAAhC,EAAwCmC,EAAE,EAA1C,EAA8C;MAC1C+B,IAAI,CAAC/B,EAAD,CAAJ,GAAWW,SAAS,CAACX,EAAD,CAApB;IACH;;IACD,OAAO2nD,SAAS,CAACsC,iBAAV,CAA4B,GAAGpmD,KAAH,CAASlB,IAAT,CAAcZ,IAAd,EAAoB,CAApB,CAA5B,EAAoD,SAApD,CAAP;EACH,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI4lD,SAAS,CAACjrD,SAAV,CAAoB2tD,MAApB,GAA6B,UAAUlE,KAAV,EAAiBmB,QAAjB,EAA2BlpD,KAA3B,EAAkCmpD,UAAlC,EAA8CC,YAA9C,EAA4D;IACrF,OAAOG,SAAS,CAACuC,OAAV,CAAkB,IAAlB,EAAwB/D,KAAxB,EAA+BmB,QAA/B,EAAyClpD,KAAzC,EAAgD,QAAhD,EAA0DmpD,UAA1D,EAAsEC,YAAtE,CAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;;;EACIG,SAAS,CAAC2C,QAAV,GAAqB,UAAUC,IAAV,EAAgB;IACjC,IAAIA,IAAI,YAAYpqD,KAApB,EAA2B;MACvB,IAAI4G,GAAG,GAAG,EAAV;;MACA,KAAK,IAAIvI,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAGqmD,IAAI,CAAC1sD,MAA3B,EAAmCW,CAAC,GAAG0F,GAAvC,EAA4C1F,CAAC,EAA7C,EAAiD;QAC7CuI,GAAG,CAACzE,IAAJ,CAAS,KAAKkoD,YAAL,CAAkBD,IAAI,CAAC/rD,CAAD,CAAtB,CAAT;MACH;;MACD,OAAOuI,GAAP;IACH;;IACD,IAAI0jD,IAAI,GAAGF,IAAX;IACA,OAAO,KAAKC,YAAL,CAAkBC,IAAlB,CAAP;EACH,CAVD;EAWA;AACJ;AACA;AACA;AACA;;;EACI9C,SAAS,CAACjrD,SAAV,CAAoB0nC,QAApB,GAA+B,UAAUsmB,MAAV,EAAkB;IAC7C,IAAIhD,SAAS,GAAG,KAAKqC,UAAL,GAAkB,KAAKA,UAAvB,GAAoC,EAApD;IACA,IAAI5jD,GAAJ;IACA,IAAIwkD,KAAJ;;IACA,IAAI,CAAC,KAAKf,SAAN,IAAmB,KAAK7B,QAA5B,EAAsC;MAClC,IAAI,KAAK+B,SAAL,IAAkB,KAAKA,SAAL,CAAe5pD,OAAf,CAAuB,KAAvB,MAAkC,CAAC,CAAzD,EAA4D;QACxD,KAAK4pD,SAAL,GAAiB,KAAKA,SAAL,CAAevrD,KAAf,CAAqB,KAArB,EAA4B,CAA5B,MAAmC,EAAnC,GAAwC/B,SAAxC,GAAoD,KAAKstD,SAAL,CAAevrD,KAAf,CAAqB,KAArB,EAA4B,CAA5B,CAArE;QACA,OAAO,CAAC,KAAKwpD,QAAL,CAAcplD,IAAd,CAAmB,IAAnB,EAAyB8jD,QAAQ,CAAClwB,SAAT,CAAmB,KAAK4vB,KAAxB,EAA+BuE,MAA/B,CAAzB,EAAiE,KAAKtsD,KAAtE,EAA6E,KAAKmpD,UAAlF,EAA8F,KAAKC,YAAnG,CAAR;MACH,CAHD,MAIK;QACD,OAAO,KAAKO,QAAL,CAAcplD,IAAd,CAAmB,IAAnB,EAAyB8jD,QAAQ,CAAClwB,SAAT,CAAmB,KAAK4vB,KAAxB,EAA+BuE,MAA/B,CAAzB,EAAiE,KAAKtsD,KAAtE,EAA6E,KAAKmpD,UAAlF,EAA8F,KAAKC,YAAnG,CAAP;MACH;IACJ;;IACD,IAAI,KAAKsC,SAAL,IAAkB,KAAKA,SAAL,CAAe5pD,OAAf,CAAuB,KAAvB,MAAkC,CAAC,CAAzD,EAA4D;MACxDyqD,KAAK,GAAG,KAAKb,SAAL,CAAe5pD,OAAf,CAAuB,KAAvB,MAAkC,CAAC,CAA3C;IACH,CAFD,MAGK;MACDyqD,KAAK,GAAG,KAAKb,SAAL,KAAmB,KAA3B;IACH;;IACD,KAAK,IAAItrD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkpD,SAAS,CAAC7pD,MAA9B,EAAsCW,CAAC,EAAvC,EAA2C;MACvC,IAAIA,CAAC,GAAG,CAAJ,IAAS,KAAKsrD,SAAd,IAA2B,KAAKA,SAAL,CAAe5pD,OAAf,CAAuB,KAAvB,MAAkC,CAAC,CAAlE,EAAqE;QACjEwnD,SAAS,CAAClpD,CAAD,CAAT,CAAasrD,SAAb,GAAyBpC,SAAS,CAAClpD,CAAD,CAAT,CAAasrD,SAAb,GAAyBpC,SAAS,CAAClpD,CAAD,CAAT,CAAasrD,SAAb,GAAyB,KAAlD,GAA0D,KAAnF;MACH;;MACD3jD,GAAG,GAAGuhD,SAAS,CAAClpD,CAAD,CAAT,CAAa4lC,QAAb,CAAsBsmB,MAAtB,CAAN;;MACA,IAAIC,KAAJ,EAAW;QACP,IAAI,CAACxkD,GAAL,EAAU;UACN,OAAO,KAAP;QACH;MACJ,CAJD,MAKK;QACD,IAAIA,GAAJ,EAAS;UACL,OAAO,IAAP;QACH;MACJ;IACJ;;IACD,OAAOwkD,KAAP;EACH,CApCD;EAqCA;AACJ;AACA;AACA;;;EACIhD,SAAS,CAACjrD,SAAV,CAAoBkuD,MAApB,GAA6B,YAAY;IACrC,IAAIb,UAAJ;IACA,IAAIl1C,CAAJ;;IACA,IAAI,KAAK+0C,SAAT,EAAoB;MAChBG,UAAU,GAAG,EAAb;MACAl1C,CAAC,GAAG,KAAKk1C,UAAT;;MACA,KAAK,IAAIvrD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGqW,CAAC,CAAChX,MAAtB,EAA8BW,CAAC,EAA/B,EAAmC;QAC/BurD,UAAU,CAACznD,IAAX,CAAgBuS,CAAC,CAACrW,CAAD,CAAD,CAAKosD,MAAL,EAAhB;MACH;IACJ;;IACD,OAAO;MACHhB,SAAS,EAAE,KAAKA,SADb;MAEHzD,KAAK,EAAE,KAAKA,KAFT;MAGHmB,QAAQ,EAAE,KAAKA,QAHZ;MAIHlpD,KAAK,EAAE,KAAKA,KAJT;MAKHmpD,UAAU,EAAE,KAAKA,UALd;MAMHC,YAAY,EAAE,KAAKA,YANhB;MAOHsC,SAAS,EAAE,KAAKA,SAPb;MAQHC,UAAU,EAAEA,UART;MASHtC,SAAS,EAAE,KAAKA;IATb,CAAP;EAWH,CArBD;;EAsBAE,SAAS,CAACsC,iBAAV,GAA8B,UAAUF,UAAV,EAAsBzC,QAAtB,EAAgC;IAC1D,IAAIyC,UAAU,CAAClsD,MAAX,KAAsB,CAA1B,EAA6B;MACzB,IAAI,EAAEksD,UAAU,CAAC,CAAD,CAAV,YAAyB5pD,KAA3B,CAAJ,EAAuC;QACnC,OAAO4pD,UAAU,CAAC,CAAD,CAAjB;MACH;;MACDA,UAAU,GAAGA,UAAU,CAAC,CAAD,CAAvB;IACH;;IACD,OAAO,IAAIpC,SAAJ,CAAcoC,UAAU,CAAC,CAAD,CAAxB,EAA6BzC,QAA7B,EAAuCyC,UAAU,CAAClmD,KAAX,CAAiB,CAAjB,CAAvC,CAAP;EACH,CARD;;EASA8jD,SAAS,CAACuC,OAAV,GAAoB,UAAUO,IAAV,EAAgBtE,KAAhB,EAAuBmB,QAAvB,EAAiClpD,KAAjC,EAAwC0rD,SAAxC,EAAmDvC,UAAnD,EAA+DC,YAA/D,EAA6E;IAC7F,IAAIrB,KAAK,YAAYwB,SAArB,EAAgC;MAC5B,OAAOA,SAAS,CAACmC,SAAD,CAAT,CAAqBW,IAArB,EAA2BtE,KAA3B,CAAP;IACH;;IACD,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;MAC3B,OAAOwB,SAAS,CAACmC,SAAD,CAAT,CAAqBW,IAArB,EAA2B,IAAI9C,SAAJ,CAAcxB,KAAd,EAAqBmB,QAArB,EAA+BlpD,KAA/B,EAAsCmpD,UAAtC,EAAkDC,YAAlD,CAA3B,CAAP;IACH;;IACD,OAAOf,QAAQ,CAACvjD,UAAT,CAAoB,iBAAiB4mD,SAAjB,GAA6B,sBAAjD,CAAP;EACH,CARD;;EASAnC,SAAS,CAAC6C,YAAV,GAAyB,UAAUD,IAAV,EAAgB;IACrC,IAAIM,KAAK,GAAGN,IAAI,CAACR,UAAL,IAAmB,EAA/B;IACA,IAAI7lD,GAAG,GAAG2mD,KAAK,CAAChtD,MAAhB;IACA,IAAIksD,UAAU,GAAG,EAAjB;IACA,IAAIrpD,MAAJ;;IACA,KAAK,IAAIlC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG0F,GAApB,EAAyB1F,CAAC,EAA1B,EAA8B;MAC1BurD,UAAU,CAACznD,IAAX,CAAgB,KAAKkoD,YAAL,CAAkBK,KAAK,CAACrsD,CAAD,CAAvB,CAAhB;IACH;;IACD,IAAI,CAAC+rD,IAAI,CAACX,SAAV,EAAqB;MACjBlpD,MAAM,GAAG,IAAIinD,SAAJ,CAAc4C,IAAI,CAACpE,KAAnB,EAA0BoE,IAAI,CAACjD,QAA/B,EAAyCiD,IAAI,CAACnsD,KAA9C,EAAqDmsD,IAAI,CAAChD,UAA1D,EAAsEgD,IAAI,CAAC/C,YAA3E,CAAT;IACH,CAFD,MAGK;MACD9mD,MAAM,GAAG,IAAIinD,SAAJ,CAAcoC,UAAU,CAAC,CAAD,CAAxB,EAA6BQ,IAAI,CAACT,SAAlC,EAA6CC,UAAU,CAAClmD,KAAX,CAAiB,CAAjB,CAA7C,CAAT;IACH;;IACD,OAAOnD,MAAP;EACH,CAfD;;EAgBA,OAAOinD,SAAP;AACH,CA3QwC,EAAzC;AA6QA;;AACA;;;AACA,IAAImD,MAAM,GAAG;EAAEC,SAAS,EAAE;AAAb,CAAb;AACA;AACA;AACA;AACA;AACA;;AACA,IAAItE,QAAQ;AAAG;AAAyB,YAAY;EAChD,SAASA,QAAT,GAAoB,CACnB;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIA,QAAQ,CAACxoD,QAAT,GAAoB,UAAUG,KAAV,EAAiB2H,IAAjB,EAAuB;IACvC,IAAI,OAAO3H,KAAP,KAAiB,UAArB,EAAiC;MAC7B,OAAOA,KAAK,CAACuE,IAAN,CAAWoD,IAAI,IAAI,EAAnB,CAAP;IACH;;IACD,OAAO3H,KAAP;EACH,CALD;EAMA;AACJ;AACA;AACA;AACA;AACA;;;EACIqoD,QAAQ,CAAC8B,QAAT,GAAoB,UAAUyC,KAAV,EAAiB56C,MAAjB,EAAyB;IACzC,OAAO46C,KAAK,CAACnnD,KAAN,IAAemnD,KAAK,CAACnnD,KAAN,CAAY,CAACuM,MAAM,CAACvS,MAApB,MAAgCuS,MAAtD;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;;;EACIq2C,QAAQ,CAACwE,WAAT,GAAuB,UAAUD,KAAV,EAAiB56C,MAAjB,EAAyB;IAC5C,OAAO46C,KAAK,CAACnnD,KAAN,IAAemnD,KAAK,CAACnnD,KAAN,CAAY,CAACuM,MAAM,CAACvS,MAApB,MAAgCuS,MAAtD;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIq2C,QAAQ,CAACyE,UAAT,GAAsB,UAAUF,KAAV,EAAiBlsD,KAAjB,EAAwB;IAC1C,OAAOksD,KAAK,CAACnnD,KAAN,CAAY,CAAZ,EAAe/E,KAAK,CAACjB,MAArB,MAAiCiB,KAAxC;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI2nD,QAAQ,CAAC0E,aAAT,GAAyB,UAAUH,KAAV,EAAiBlsD,KAAjB,EAAwB;IAC7C,OAAOksD,KAAK,CAACnnD,KAAN,CAAY,CAAZ,EAAe/E,KAAK,CAACjB,MAArB,MAAiCiB,KAAxC;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI2nD,QAAQ,CAAC2E,QAAT,GAAoB,UAAUJ,KAAV,EAAiBz8C,OAAjB,EAA0B;IAC1C,IAAI88C,aAAJ;IACA,IAAIC,aAAJ,CAF0C,CAG1C;;IACA,IAAI/8C,OAAO,CAACrO,OAAR,CAAgB,GAAhB,MAAyB,CAAC,CAA9B,EAAiC;MAC7BqO,OAAO,GAAGA,OAAO,CAAChQ,KAAR,CAAc,GAAd,EAAmBiE,IAAnB,CAAwB,KAAxB,CAAV;IACH;;IACD,IAAI+L,OAAO,CAACrO,OAAR,CAAgB,GAAhB,MAAyB,CAAC,CAA9B,EAAiC;MAC7BqO,OAAO,GAAGA,OAAO,CAAChQ,KAAR,CAAc,GAAd,EAAmBiE,IAAnB,CAAwB,KAAxB,CAAV;IACH;;IACD,IAAI+L,OAAO,CAACrO,OAAR,CAAgB,GAAhB,MAAyB,CAAC,CAA9B,EAAiC;MAC7BqO,OAAO,GAAGA,OAAO,CAAChQ,KAAR,CAAc,GAAd,EAAmBiE,IAAnB,CAAwB,KAAxB,CAAV;IACH;;IACD,IAAI+L,OAAO,CAACrO,OAAR,CAAgB,GAAhB,MAAyB,CAAC,CAA9B,EAAiC;MAC7B,IAAIqO,OAAO,CAACg9C,MAAR,CAAe,CAAf,MAAsB,GAA1B,EAA+B;QAC3Bh9C,OAAO,GAAG,MAAMA,OAAhB;MACH;;MACD,IAAIA,OAAO,CAACg9C,MAAR,CAAeh9C,OAAO,CAAC1Q,MAAR,GAAiB,CAAhC,MAAuC,GAA3C,EAAgD;QAC5C0Q,OAAO,GAAGA,OAAO,GAAG,GAApB;MACH;;MACD88C,aAAa,GAAG98C,OAAO,CAAChQ,KAAR,CAAc,GAAd,CAAhB;;MACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6sD,aAAa,CAACxtD,MAAlC,EAA0CW,CAAC,EAA3C,EAA+C;QAC3C,IAAI6sD,aAAa,CAAC7sD,CAAD,CAAb,CAAiB0B,OAAjB,CAAyB,GAAzB,MAAkC,CAAC,CAAvC,EAA0C;UACtCmrD,aAAa,CAAC7sD,CAAD,CAAb,GAAmB6sD,aAAa,CAAC7sD,CAAD,CAAb,GAAmB,IAAtC;QACH,CAFD,MAGK;UACD6sD,aAAa,CAAC7sD,CAAD,CAAb,GAAmB6sD,aAAa,CAAC7sD,CAAD,CAAb,GAAmB,GAAtC;QACH;MACJ;;MACD+P,OAAO,GAAG88C,aAAa,CAAC7oD,IAAd,CAAmB,EAAnB,CAAV;IACH;;IACD,IAAI+L,OAAO,CAACrO,OAAR,CAAgB,KAAhB,MAA2B,CAAC,CAA5B,IAAiCqO,OAAO,CAACrO,OAAR,CAAgB,GAAhB,MAAyB,CAAC,CAA/D,EAAkE;MAC9DorD,aAAa,GAAG/8C,OAAO,CAACrO,OAAR,CAAgB,KAAhB,MAA2B,CAAC,CAA5B,GAAgCqO,OAAO,CAAChQ,KAAR,CAAc,KAAd,CAAhC,GAAuDgQ,OAAO,CAAChQ,KAAR,CAAc,GAAd,CAAvE;MACAgQ,OAAO,GAAG+8C,aAAa,CAAC9oD,IAAd,CAAmB,GAAnB,CAAV;IACH,CAlCyC,CAmC1C;;;IACA,IAAIgpD,YAAY,GAAG,IAAIjkD,MAAJ,CAAWgH,OAAX,EAAoB,GAApB,CAAnB;IACA,OAAOi9C,YAAY,CAAC59C,IAAb,CAAkBo9C,KAAlB,CAAP;EACH,CAtCD;EAuCA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIvE,QAAQ,CAACgF,IAAT,GAAgB,UAAUT,KAAV,EAAiBz8C,OAAjB,EAA0B;IACtC,IAAIA,OAAO,CAACrO,OAAR,CAAgB,GAAhB,MAAyB,CAAC,CAA9B,EAAiC;MAC7B,IAAIqO,OAAO,CAACg9C,MAAR,CAAe,CAAf,MAAsB,GAAtB,IAA6Bh9C,OAAO,CAACuG,WAAR,CAAoB,GAApB,IAA2B,CAA5D,EAA+D;QAC3DvG,OAAO,GAAGA,OAAO,CAAC2B,SAAR,CAAkB,CAAlB,EAAqB3B,OAAO,CAAC1Q,MAA7B,CAAV;QACA,OAAO4oD,QAAQ,CAACyE,UAAT,CAAoBzE,QAAQ,CAAC/qC,WAAT,CAAqBsvC,KAArB,CAApB,EAAiDvE,QAAQ,CAAC/qC,WAAT,CAAqBnN,OAArB,CAAjD,CAAP;MACH,CAHD,MAIK,IAAIA,OAAO,CAACg9C,MAAR,CAAeh9C,OAAO,CAAC1Q,MAAR,GAAiB,CAAhC,MAAuC,GAAvC,IAA8C0Q,OAAO,CAACrO,OAAR,CAAgB,GAAhB,IAAuBqO,OAAO,CAAC1Q,MAAR,GAAiB,CAA1F,EAA6F;QAC9F0Q,OAAO,GAAGA,OAAO,CAAC2B,SAAR,CAAkB,CAAlB,EAAqB3B,OAAO,CAAC1Q,MAAR,GAAiB,CAAtC,CAAV;QACA,OAAO4oD,QAAQ,CAAC8B,QAAT,CAAkB9B,QAAQ,CAAC/qC,WAAT,CAAqBsvC,KAArB,CAAlB,EAA+CvE,QAAQ,CAAC/qC,WAAT,CAAqBnN,OAArB,CAA/C,CAAP;MACH,CAHI,MAIA,IAAIA,OAAO,CAACuG,WAAR,CAAoB,GAApB,MAA6BvG,OAAO,CAACrO,OAAR,CAAgB,GAAhB,CAA7B,IAAqDqO,OAAO,CAACuG,WAAR,CAAoB,GAApB,IAA2BvG,OAAO,CAACrO,OAAR,CAAgB,GAAhB,IAAuB,CAA3G,EAA8G;QAC/GqO,OAAO,GAAGA,OAAO,CAAC2B,SAAR,CAAkB3B,OAAO,CAACrO,OAAR,CAAgB,GAAhB,IAAuB,CAAzC,EAA4CqO,OAAO,CAACuG,WAAR,CAAoB,GAApB,CAA5C,CAAV;QACA,OAAOk2C,KAAK,CAAC9qD,OAAN,CAAcqO,OAAd,MAA2B,CAAC,CAAnC;MACH,CAHI,MAIA;QACD,OAAOy8C,KAAK,CAAC9qD,OAAN,CAAcqO,OAAd,MAA2B,CAAC,CAAnC;MACH;IACJ,CAhBD,MAiBK;MACD,OAAO,KAAP;IACH;EACJ,CArBD;EAsBA;AACJ;AACA;AACA;AACA;AACA;;;EACIk4C,QAAQ,CAAC+B,MAAT,GAAkB,UAAUH,KAAV,EAAiB;IAC/BA,KAAK,GAAGA,KAAK,GAAG5B,QAAQ,CAAC/qC,WAAT,CAAqB2sC,KAArB,CAAH,GAAiC,WAA9C;;IACA,IAAIA,KAAK,KAAK,WAAd,EAA2B;MACvB,OAAO,KAAKqD,WAAZ;IACH;;IACD,OAAO,KAAKC,YAAZ;EACH,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACIlF,QAAQ,CAACiF,WAAT,GAAuB,UAAUhmC,CAAV,EAAarL,CAAb,EAAgB;IACnC,IAAIpb,uEAAiB,CAACymB,CAAD,CAAjB,IAAwBzmB,uEAAiB,CAACob,CAAD,CAA7C,EAAkD;MAC9C,OAAO,CAAC,CAAR;IACH;;IACD,IAAIA,CAAC,KAAK,IAAN,IAAcA,CAAC,KAAK7d,SAAxB,EAAmC;MAC/B,OAAO,CAAC,CAAR;IACH;;IACD,IAAI,OAAOkpB,CAAP,KAAa,QAAjB,EAA2B;MACvB,OAAOA,CAAC,CAACkmC,aAAF,CAAgBvxC,CAAhB,CAAP;IACH;;IACD,IAAIqL,CAAC,KAAK,IAAN,IAAcA,CAAC,KAAKlpB,SAAxB,EAAmC;MAC/B,OAAO,CAAP;IACH;;IACD,OAAOkpB,CAAC,GAAGrL,CAAX;EACH,CAdD;EAeA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACIosC,QAAQ,CAACkF,YAAT,GAAwB,UAAUjmC,CAAV,EAAarL,CAAb,EAAgB;IACpC,IAAIpb,uEAAiB,CAACymB,CAAD,CAAjB,IAAwBzmB,uEAAiB,CAACob,CAAD,CAA7C,EAAkD;MAC9C,OAAO,CAAC,CAAR;IACH;;IACD,IAAIA,CAAC,KAAK,IAAN,IAAcA,CAAC,KAAK7d,SAAxB,EAAmC;MAC/B,OAAO,CAAP;IACH;;IACD,IAAI,OAAOkpB,CAAP,KAAa,QAAjB,EAA2B;MACvB,OAAOA,CAAC,CAACkmC,aAAF,CAAgBvxC,CAAhB,IAAqB,CAAC,CAA7B;IACH;;IACD,IAAIqL,CAAC,KAAK,IAAN,IAAcA,CAAC,KAAKlpB,SAAxB,EAAmC;MAC/B,OAAO,CAAC,CAAR;IACH;;IACD,OAAO6d,CAAC,GAAGqL,CAAX;EACH,CAdD;;EAeA+gC,QAAQ,CAACoF,aAAT,GAAyB,UAAU1tD,GAAV,EAAe8oD,MAAf,EAAuB;IAC5C,IAAIrc,MAAM,GAAG,EAAb;;IACA,KAAK,IAAIpsC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyoD,MAAM,CAACppD,MAA3B,EAAmCW,CAAC,EAApC,EAAwC;MACpCosC,MAAM,GAAG,KAAKhsC,QAAL,CAAcqoD,MAAM,CAACzoD,CAAD,CAApB,EAAyB,KAAK+3B,SAAL,CAAe0wB,MAAM,CAACzoD,CAAD,CAArB,EAA0BL,GAA1B,CAAzB,EAAyDysC,MAAzD,CAAT;IACH;;IACD,OAAOA,MAAP;EACH,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;;;EACI6b,QAAQ,CAAC30B,MAAT,GAAkB,UAAUg6B,SAAV,EAAqB7E,MAArB,EAA6B;IAC3C,IAAI8E,OAAO,GAAG,EAAd;;IACA,KAAK,IAAIvtD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGstD,SAAS,CAACjuD,MAA9B,EAAsCW,CAAC,EAAvC,EAA2C;MACvCutD,OAAO,CAACzpD,IAAR,CAAa,KAAKupD,aAAL,CAAmBC,SAAS,CAACttD,CAAD,CAA5B,EAAiCyoD,MAAjC,CAAb;IACH;;IACD,OAAO8E,OAAP;EACH,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACItF,QAAQ,CAACkC,KAAT,GAAiB,UAAUmD,SAAV,EAAqB3F,KAArB,EAA4B6F,UAA5B,EAAwCC,KAAxC,EAA+CC,OAA/C,EAAwDl+C,MAAxD,EAAgEm+C,UAAhE,EAA4E;IACzFF,KAAK,GAAGA,KAAK,IAAI,CAAjB;IACA,IAAIG,QAAQ,GAAGN,SAAf;IACA,IAAIO,IAAI,GAAG,WAAX;;IACA,IAAID,QAAQ,CAACrB,SAAT,KAAuBD,MAAM,CAACuB,IAAD,CAAjC,EAAyC;MACrC,IAAIzrD,OAAO,GAAG,UAAUqK,CAAV,EAAa;QACvB,IAAI,CAAChM,uEAAiB,CAACitD,OAAD,CAAtB,EAAiC;UAC7B,IAAII,IAAI,GAAG,CAAC,CAAZ;UACA,IAAIv3C,IAAI,GAAGm3C,OAAO,CAACp2B,MAAR,CAAe,UAAUzyB,CAAV,EAAa;YAAE,OAAOA,CAAC,CAACrE,GAAF,KAAUotD,QAAQ,CAACnhD,CAAD,CAAR,CAAYjM,GAA7B;UAAmC,CAAjE,CAAX;UACAstD,IAAI,GAAGJ,OAAO,CAAChsD,OAAR,CAAgB6U,IAAI,CAAC,CAAD,CAApB,CAAP;UACAq3C,QAAQ,CAACnhD,CAAD,CAAR,CAAYshD,KAAZ,GAAoBzhB,MAAM,CAAC6d,KAAP,CAAayD,QAAQ,CAACnhD,CAAD,CAAR,CAAYshD,KAAzB,EAAgCpG,KAAhC,EAAuC6F,UAAvC,EAAmDI,QAAQ,CAACH,KAAT,GAAiB,CAApE,EAAuEC,OAAO,CAACI,IAAD,CAAP,CAAcC,KAArF,EAA4Fv+C,MAA5F,EAAoGm+C,UAApG,CAApB;UACAC,QAAQ,CAACnhD,CAAD,CAAR,CAAYuhD,KAAZ,GAAoBN,OAAO,CAACI,IAAD,CAAP,CAAcE,KAAlC;QACH,CAND,MAOK;UACDJ,QAAQ,CAACnhD,CAAD,CAAR,CAAYshD,KAAZ,GAAoBzhB,MAAM,CAAC6d,KAAP,CAAayD,QAAQ,CAACnhD,CAAD,CAAR,CAAYshD,KAAzB,EAAgCpG,KAAhC,EAAuC6F,UAAvC,EAAmDI,QAAQ,CAACH,KAAT,GAAiB,CAApE,EAAuE,IAAvE,EAA6Ej+C,MAA7E,EAAqFm+C,UAArF,CAApB;UACAC,QAAQ,CAACnhD,CAAD,CAAR,CAAYuhD,KAAZ,GAAoBJ,QAAQ,CAACnhD,CAAD,CAAR,CAAYshD,KAAZ,CAAkB1uD,MAAtC;QACH;MACJ,CAZD;;MAaA,IAAIitC,MAAM,GAAG,IAAb;;MACA,KAAK,IAAI7/B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmhD,QAAQ,CAACvuD,MAA7B,EAAqCoN,CAAC,EAAtC,EAA0C;QACtCrK,OAAO,CAACqK,CAAD,CAAP;MACH;;MACDmhD,QAAQ,CAACK,WAAT,IAAwB,CAAxB;MACA,OAAOL,QAAP;IACH;;IACD,IAAIM,OAAO,GAAG,EAAd;IACA,IAAIC,YAAY,GAAG,EAAnB;IACAA,YAAY,CAAC5B,SAAb,GAAyBD,MAAM,CAACuB,IAAD,CAA/B;IACAM,YAAY,CAACV,KAAb,GAAqBA,KAArB;IACAU,YAAY,CAACF,WAAb,GAA2B,CAA3B;IACAE,YAAY,CAACC,OAAb,GAAuBR,QAAvB;;IACA,IAAIS,OAAO,GAAG,UAAUruD,CAAV,EAAa;MACvB,IAAIoJ,GAAG,GAAGklD,MAAM,CAACC,MAAP,CAAcX,QAAd,EAAwB5tD,CAAxB,EAA2B2nD,KAA3B,CAAV;;MACA,IAAI,CAAClnD,uEAAiB,CAAC+O,MAAD,CAAtB,EAAgC;QAC5BpG,GAAG,GAAGoG,MAAM,CAACpG,GAAD,EAAMu+C,KAAN,CAAZ;MACH;;MACD,IAAI,CAACuG,OAAO,CAAC9kD,GAAD,CAAZ,EAAmB;QACf8kD,OAAO,CAAC9kD,GAAD,CAAP,GAAe;UACX5I,GAAG,EAAE4I,GADM;UAEX4kD,KAAK,EAAE,CAFI;UAGXD,KAAK,EAAE,EAHI;UAIXP,UAAU,EAAE,EAJD;UAKX7F,KAAK,EAAEA;QALI,CAAf;QAOAwG,YAAY,CAACrqD,IAAb,CAAkBoqD,OAAO,CAAC9kD,GAAD,CAAzB;;QACA,IAAI,CAAC3I,uEAAiB,CAACitD,OAAD,CAAtB,EAAiC;UAC7B,IAAIc,OAAO,GAAGd,OAAO,CAACp2B,MAAR,CAAe,UAAUzyB,CAAV,EAAa;YAAE,OAAOA,CAAC,CAACrE,GAAF,KAAU0tD,OAAO,CAAC9kD,GAAD,CAAP,CAAa5I,GAA9B;UAAoC,CAAlE,CAAd;UACA0tD,OAAO,CAAC9kD,GAAD,CAAP,CAAa4kD,KAAb,GAAqBQ,OAAO,CAAC,CAAD,CAAP,CAAWR,KAAhC;QACH;MACJ;;MACDE,OAAO,CAAC9kD,GAAD,CAAP,CAAa4kD,KAAb,GAAqB,CAACvtD,uEAAiB,CAACitD,OAAD,CAAlB,GAA8BQ,OAAO,CAAC9kD,GAAD,CAAP,CAAa4kD,KAA3C,GAAmDE,OAAO,CAAC9kD,GAAD,CAAP,CAAa4kD,KAAb,IAAsB,CAA9F;;MACA,IAAI,CAACL,UAAD,IAAgBA,UAAU,IAAIH,UAAU,CAACnuD,MAA7C,EAAsD;QAClD6uD,OAAO,CAAC9kD,GAAD,CAAP,CAAa2kD,KAAb,CAAmBjqD,IAAnB,CAAwB8pD,QAAQ,CAAC5tD,CAAD,CAAhC;MACH;IACJ,CAvBD;;IAwBA,IAAIsuD,MAAM,GAAG,IAAb;;IACA,KAAK,IAAItuD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4tD,QAAQ,CAACvuD,MAA7B,EAAqCW,CAAC,EAAtC,EAA0C;MACtCquD,OAAO,CAACruD,CAAD,CAAP;IACH;;IACD,IAAIwtD,UAAU,IAAIA,UAAU,CAACnuD,MAA7B,EAAqC;MACjC,IAAIovD,OAAO,GAAG,UAAUzuD,CAAV,EAAa;QACvB,IAAIuI,GAAG,GAAG,EAAV;QACA,IAAIm5C,EAAE,GAAG,KAAK,CAAd;QACA,IAAIgN,IAAI,GAAGlB,UAAX;;QACA,KAAK,IAAI/gD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+gD,UAAU,CAACnuD,MAA/B,EAAuCoN,CAAC,EAAxC,EAA4C;UACxCi1C,EAAE,GAAGuG,QAAQ,CAACuF,UAAT,CAAoBA,UAAU,CAAC/gD,CAAD,CAAV,CAAckD,IAAlC,CAAL;;UACA,IAAI,CAAClP,uEAAiB,CAACitD,OAAD,CAAtB,EAAiC;YAC7B,IAAIn3C,IAAI,GAAGm3C,OAAO,CAACp2B,MAAR,CAAe,UAAUzyB,CAAV,EAAa;cAAE,OAAOA,CAAC,CAACrE,GAAF,KAAU2tD,YAAY,CAACnuD,CAAD,CAAZ,CAAgBQ,GAAjC;YAAuC,CAArE,CAAX;;YACA,IAAIkhD,EAAJ,EAAQ;cACJn5C,GAAG,CAACmmD,IAAI,CAACjiD,CAAD,CAAJ,CAAQk7C,KAAR,GAAgB,KAAhB,GAAwB+G,IAAI,CAACjiD,CAAD,CAAJ,CAAQkD,IAAjC,CAAH,GAA4C+xC,EAAE,CAACnrC,IAAI,CAAC,CAAD,CAAJ,CAAQw3C,KAAT,EAAgBW,IAAI,CAACjiD,CAAD,CAAJ,CAAQk7C,KAAxB,CAA9C;YACH;UACJ,CALD,MAMK;YACD,IAAIjG,EAAJ,EAAQ;cACJn5C,GAAG,CAACmmD,IAAI,CAACjiD,CAAD,CAAJ,CAAQk7C,KAAR,GAAgB,KAAhB,GAAwB+G,IAAI,CAACjiD,CAAD,CAAJ,CAAQkD,IAAjC,CAAH,GAA4C+xC,EAAE,CAACyM,YAAY,CAACnuD,CAAD,CAAZ,CAAgB+tD,KAAjB,EAAwBW,IAAI,CAACjiD,CAAD,CAAJ,CAAQk7C,KAAhC,CAA9C;YACH;UACJ;QACJ;;QACDwG,YAAY,CAACnuD,CAAD,CAAZ,CAAgBwtD,UAAhB,GAA6BjlD,GAA7B;MACH,CAnBD;;MAoBA,KAAK,IAAIvI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmuD,YAAY,CAAC9uD,MAAjC,EAAyCW,CAAC,EAA1C,EAA8C;QAC1CyuD,OAAO,CAACzuD,CAAD,CAAP;MACH;IACJ;;IACD,IAAI2tD,UAAU,IAAIQ,YAAY,CAAC9uD,MAA3B,IAAqCmuD,UAAU,CAACnuD,MAApD,EAA4D;MACxD,KAAK,IAAIW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmuD,YAAY,CAAC9uD,MAAjC,EAAyCW,CAAC,EAA1C,EAA8C;QAC1CmuD,YAAY,CAACnuD,CAAD,CAAZ,CAAgB+tD,KAAhB,GAAwB,EAAxB;MACH;IACJ;;IACD,OAAOH,QAAQ,CAACvuD,MAAT,IAAmB8uD,YAAnB,IAAmCP,QAA1C;EACH,CA1FD;EA2FA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI3F,QAAQ,CAAC0G,cAAT,GAA0B,UAAUvH,IAAV,EAAgBL,IAAhB,EAAsB5nD,MAAtB,EAA8ByvD,MAA9B,EAAsCC,IAAtC,EAA4C;IAClE,IAAI7uD,CAAJ;IACA,IAAI8uD,GAAG,GAAG,EAAV;IACA,IAAIv4C,IAAJ;;IACA,IAAIq4C,MAAM,CAAC1sD,MAAX,EAAmB;MACf0sD,MAAM,GAAGA,MAAM,CAAC1sD,MAAhB;IACH;;IACD,IAAI0sD,MAAM,CAACrC,SAAX,EAAsB;MAClB,KAAK7nD,UAAL,CAAgB,wDAAhB;IACH;;IACD,KAAK1E,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG4uD,MAAM,CAACvvD,MAAvB,EAA+BW,CAAC,EAAhC,EAAoC;MAChC,IAAI+uD,QAAQ,GAAG,KAAKh3B,SAAL,CAAeqvB,IAAf,EAAqBwH,MAAM,CAAC5uD,CAAD,CAA3B,CAAf;MACAuW,IAAI,GAAGu4C,GAAG,CAACC,QAAD,CAAH,KAAkBD,GAAG,CAACC,QAAD,CAAH,GAAgB,EAAlC,CAAP;MACAx4C,IAAI,CAACzS,IAAL,CAAU8qD,MAAM,CAAC5uD,CAAD,CAAhB;IACH;;IACD,KAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGb,MAAM,CAACE,MAAvB,EAA+BW,CAAC,EAAhC,EAAoC;MAChC,IAAI+uD,QAAQ,GAAG,KAAKh3B,SAAL,CAAe82B,IAAI,IAAIzH,IAAvB,EAA6BjoD,MAAM,CAACa,CAAD,CAAnC,CAAf;MACAb,MAAM,CAACa,CAAD,CAAN,CAAU+mD,IAAV,IAAkB+H,GAAG,CAACC,QAAD,CAArB;IACH;EACJ,CAnBD;EAoBA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI9G,QAAQ,CAAC+G,YAAT,GAAwB,UAAUrvD,GAAV,EAAe8oD,MAAf,EAAuB7vC,MAAvB,EAA+B;IACnD,IAAIA,MAAM,KAAK5a,SAAf,EAA0B;MACtB4a,MAAM,GAAG,EAAT;IACH;;IACD,IAAI6vC,MAAM,KAAKzqD,SAAX,IAAwByqD,MAAM,KAAK,IAAvC,EAA6C;MACzC,OAAO,KAAKuG,YAAL,CAAkBrvD,GAAlB,EAAuB,EAAvB,EAA2BiZ,MAA3B,CAAP;IACH;;IACD,IAAIq2C,OAAO,GAAGtvD,GAAd;IACA,IAAIU,IAAI,GAAGiB,MAAM,CAACjB,IAAP,CAAYV,GAAZ,CAAX;;IACA,KAAK,IAAI6B,EAAE,GAAG,CAAT,EAAYC,MAAM,GAAGpB,IAA1B,EAAgCmB,EAAE,GAAGC,MAAM,CAACpC,MAA5C,EAAoDmC,EAAE,EAAtD,EAA0D;MACtD,IAAI6G,IAAI,GAAG5G,MAAM,CAACD,EAAD,CAAjB;;MACA,IAAI,OAAOytD,OAAO,CAAC5mD,IAAD,CAAd,KAAyB,QAAzB,IAAqC,EAAE4mD,OAAO,CAAC5mD,IAAD,CAAP,YAAyB1G,KAA3B,CAAzC,EAA4E;QACxE,KAAKqtD,YAAL,CAAkBC,OAAO,CAAC5mD,IAAD,CAAzB,EAAiCogD,MAAjC,EAAyC7vC,MAAM,GAAGvQ,IAAT,GAAgB,GAAzD;MACH,CAFD,MAGK;QACDogD,MAAM,CAAC3kD,IAAP,CAAY8U,MAAM,GAAGvQ,IAArB;MACH;IACJ;;IACD,OAAOogD,MAAP;EACH,CAnBD;EAoBA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACIR,QAAQ,CAAClwB,SAAT,GAAqB,UAAUr4B,SAAV,EAAqBqnD,IAArB,EAA2B;IAC5C,IAAI,CAACrnD,SAAL,EAAgB;MACZ,OAAOqnD,IAAP;IACH;;IACD,IAAI,CAACA,IAAL,EAAW;MACP,OAAO/oD,SAAP;IACH;;IACD,IAAI0B,SAAS,CAACgC,OAAV,CAAkB,GAAlB,MAA2B,CAAC,CAAhC,EAAmC;MAC/B,IAAIwtD,kBAAkB,GAAGxvD,SAAS,CAACqtD,MAAV,CAAiB,CAAjB,EAAoB7vC,WAApB,KAAoCxd,SAAS,CAAC2F,KAAV,CAAgB,CAAhB,CAA7D;MACA,IAAI8pD,kBAAkB,GAAGzvD,SAAS,CAACqtD,MAAV,CAAiB,CAAjB,EAAoB9vC,WAApB,KAAoCvd,SAAS,CAAC2F,KAAV,CAAgB,CAAhB,CAA7D;;MACA,IAAI,CAAC5E,uEAAiB,CAACsmD,IAAI,CAACrnD,SAAD,CAAL,CAAtB,EAAyC;QACrC,OAAOqnD,IAAI,CAACrnD,SAAD,CAAX;MACH,CAFD,MAGK;QACD,IAAI,CAACe,uEAAiB,CAACsmD,IAAI,CAACmI,kBAAD,CAAL,CAAtB,EAAkD;UAC9C,OAAOnI,IAAI,CAACmI,kBAAD,CAAX;QACH,CAFD,MAGK,IAAI,CAACzuD,uEAAiB,CAACsmD,IAAI,CAACoI,kBAAD,CAAL,CAAtB,EAAkD;UACnD,OAAOpI,IAAI,CAACoI,kBAAD,CAAX;QACH,CAFI,MAGA;UACD,OAAO,IAAP;QACH;MACJ;IACJ;;IACD,IAAIvvD,KAAK,GAAGmnD,IAAZ;IACA,IAAIlnD,MAAM,GAAGH,SAAS,CAACK,KAAV,CAAgB,GAAhB,CAAb;;IACA,KAAK,IAAIC,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,MAAM,CAACR,MAA3B,EAAmCW,CAAC,EAApC,EAAwC;MACpC,IAAIJ,KAAK,IAAI,IAAb,EAAmB;QACf;MACH;;MACDA,KAAK,GAAGA,KAAK,CAACC,MAAM,CAACG,CAAD,CAAP,CAAb;;MACA,IAAIJ,KAAK,KAAK5B,SAAd,EAAyB;QACrB,IAAIoxD,MAAM,GAAGvvD,MAAM,CAACG,CAAD,CAAN,CAAU+sD,MAAV,CAAiB,CAAjB,EAAoB9vC,WAApB,KAAoCpd,MAAM,CAACG,CAAD,CAAN,CAAUqF,KAAV,CAAgB,CAAhB,CAAjD;QACAzF,KAAK,GAAGmnD,IAAI,CAACqI,MAAD,CAAJ,IAAgBrI,IAAI,CAACqI,MAAM,CAACrC,MAAP,CAAc,CAAd,EAAiB7vC,WAAjB,KAAiCkyC,MAAM,CAAC/pD,KAAP,CAAa,CAAb,CAAlC,CAApB,IAA0E,IAAlF;MACH;;MACD0hD,IAAI,GAAGnnD,KAAP;IACH;;IACD,OAAOA,KAAP;EACH,CAvCD;EAwCA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIqoD,QAAQ,CAAC7nD,QAAT,GAAoB,UAAUV,SAAV,EAAqBE,KAArB,EAA4BD,GAA5B,EAAiC;IACjD,IAAIU,IAAI,GAAGX,SAAS,CAACS,QAAV,GAAqBJ,KAArB,CAA2B,GAA3B,CAAX;IACA,IAAIO,KAAK,GAAGX,GAAG,IAAI,EAAnB;IACA,IAAIY,OAAO,GAAGD,KAAd;IACA,IAAIN,CAAJ;IACA,IAAIX,MAAM,GAAGgB,IAAI,CAAChB,MAAlB;IACA,IAAImB,GAAJ;;IACA,KAAKR,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGX,MAAhB,EAAwBW,CAAC,EAAzB,EAA6B;MACzBQ,GAAG,GAAGH,IAAI,CAACL,CAAD,CAAV;;MACA,IAAIA,CAAC,GAAG,CAAJ,KAAUX,MAAd,EAAsB;QAClBkB,OAAO,CAACC,GAAD,CAAP,GAAeZ,KAAK,KAAK5B,SAAV,GAAsBA,SAAtB,GAAkC4B,KAAjD;MACH,CAFD,MAGK,IAAIa,uEAAiB,CAACF,OAAO,CAACC,GAAD,CAAR,CAArB,EAAqC;QACtCD,OAAO,CAACC,GAAD,CAAP,GAAe,EAAf;MACH;;MACDD,OAAO,GAAGA,OAAO,CAACC,GAAD,CAAjB;IACH;;IACD,OAAOF,KAAP;EACH,CAlBD;EAmBA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACI2nD,QAAQ,CAACoH,IAAT,GAAgB,UAAUC,EAAV,EAAc3H,KAAd,EAAqB4B,QAArB,EAA+B;IAC3C,IAAI+F,EAAE,CAACjwD,MAAH,IAAa,CAAjB,EAAoB;MAChB,OAAOiwD,EAAP;IACH;;IACD,IAAIC,MAAM,GAAGrvD,QAAQ,CAAC,CAACovD,EAAE,CAACjwD,MAAH,GAAY,CAAb,EAAgBc,QAAhB,EAAD,EAA6B,EAA7B,CAArB;IACA,IAAI4gC,IAAI,GAAGuuB,EAAE,CAACjqD,KAAH,CAAS,CAAT,EAAYkqD,MAAZ,CAAX;IACA,IAAIvuB,KAAK,GAAGsuB,EAAE,CAACjqD,KAAH,CAASkqD,MAAT,CAAZ;IACAxuB,IAAI,GAAG,KAAKsuB,IAAL,CAAUtuB,IAAV,EAAgB4mB,KAAhB,EAAuB4B,QAAvB,CAAP;IACAvoB,KAAK,GAAG,KAAKquB,IAAL,CAAUruB,KAAV,EAAiB2mB,KAAjB,EAAwB4B,QAAxB,CAAR;IACA,OAAO,KAAKroD,KAAL,CAAW6/B,IAAX,EAAiBC,KAAjB,EAAwB2mB,KAAxB,EAA+B4B,QAA/B,CAAP;EACH,CAVD;;EAWAtB,QAAQ,CAACuH,gBAAT,GAA4B,UAAU5vD,KAAV,EAAiB;IACzC,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;MAC3B,OAAOA,KAAP;IACH;;IACD,IAAIsC,MAAM,GAAGtC,KAAK,CAACG,KAAN,CAAY,EAAZ,CAAb;IACA,IAAIk3B,QAAQ,GAAG/0B,MAAM,CAAC0G,GAAP,CAAW,UAAU2N,IAAV,EAAgB;MAAE,OAAOA,IAAI,IAAI0xC,QAAQ,CAACwH,UAAjB,GAA8BxH,QAAQ,CAACwH,UAAT,CAAoBl5C,IAApB,CAA9B,GAA0DA,IAAjE;IAAwE,CAArG,CAAf;IACA,OAAO0gB,QAAQ,CAACjzB,IAAT,CAAc,EAAd,CAAP;EACH,CAPD;;EAQAikD,QAAQ,CAAC/mD,KAAT,GAAiB,UAAU6/B,IAAV,EAAgBC,KAAhB,EAAuB6nB,SAAvB,EAAkCU,QAAlC,EAA4C;IACzD,IAAIrnD,MAAM,GAAG,EAAb;IACA,IAAIwtD,OAAJ;;IACA,OAAO3uB,IAAI,CAAC1hC,MAAL,GAAc,CAAd,IAAmB2hC,KAAK,CAAC3hC,MAAN,GAAe,CAAzC,EAA4C;MACxC,IAAI0hC,IAAI,CAAC1hC,MAAL,GAAc,CAAd,IAAmB2hC,KAAK,CAAC3hC,MAAN,GAAe,CAAtC,EAAyC;QACrC,IAAIkqD,QAAJ,EAAc;UACVmG,OAAO,GAAGnG,QAAQ,CAAC,KAAKgF,MAAL,CAAYxtB,IAAZ,EAAkB,CAAlB,EAAqB8nB,SAArB,CAAD,EAAkC,KAAK0F,MAAL,CAAYvtB,KAAZ,EAAmB,CAAnB,EAAsB6nB,SAAtB,CAAlC,EAAoE9nB,IAAI,CAAC,CAAD,CAAxE,EAA6EC,KAAK,CAAC,CAAD,CAAlF,CAAR,IAAkG,CAAlG,GAAsGD,IAAtG,GAA6GC,KAAvH;QACH,CAFD,MAGK;UACD0uB,OAAO,GAAG3uB,IAAI,CAAC,CAAD,CAAJ,CAAQ8nB,SAAR,IAAqB9nB,IAAI,CAAC,CAAD,CAAJ,CAAQ8nB,SAAR,CAArB,GAA0C9nB,IAA1C,GAAiDC,KAA3D;QACH;MACJ,CAPD,MAQK;QACD0uB,OAAO,GAAG3uB,IAAI,CAAC1hC,MAAL,GAAc,CAAd,GAAkB0hC,IAAlB,GAAyBC,KAAnC;MACH;;MACD9+B,MAAM,CAAC4B,IAAP,CAAY4rD,OAAO,CAACt/B,KAAR,EAAZ;IACH;;IACD,OAAOluB,MAAP;EACH,CAlBD;;EAmBA+lD,QAAQ,CAACsG,MAAT,GAAkB,UAAU3qD,KAAV,EAAiBmc,KAAjB,EAAwB4nC,KAAxB,EAA+B;IAC7C,OAAOA,KAAK,GAAG,KAAK5vB,SAAL,CAAe4vB,KAAf,EAAsB/jD,KAAK,CAACmc,KAAD,CAA3B,CAAH,GAAyCnc,KAAK,CAACmc,KAAD,CAA1D;EACH,CAFD;;EAGAkoC,QAAQ,CAAC/qC,WAAT,GAAuB,UAAU9T,GAAV,EAAe;IAClC,OAAOA,GAAG,GAAG,OAAOA,GAAP,KAAe,QAAf,GAA0BA,GAAG,CAAC8T,WAAJ,EAA1B,GAA8C9T,GAAG,CAACjJ,QAAJ,EAAjD,GAAmEiJ,GAAG,KAAK,CAAR,IAAaA,GAAG,KAAK,KAAtB,GAA+BA,GAAG,CAACjJ,QAAJ,EAA/B,GAAgD,EAA5H;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI8nD,QAAQ,CAAC0H,mBAAT,GAA+B,UAAUC,OAAV,EAAmBC,MAAnB,EAA2BC,MAA3B,EAAmCC,MAAnC,EAA2C;IACtE,IAAIF,MAAM,IAAID,OAAd,EAAuB;MACnB,IAAIrnD,GAAG,GAAGqnD,OAAO,CAACC,MAAD,CAAP,CAAgBC,MAAhB,EAAwBC,MAAxB,CAAV;;MACA,IAAI,CAACtvD,uEAAiB,CAAC8H,GAAD,CAAtB,EAA6B;QACzBunD,MAAM,GAAGvnD,GAAT;MACH;IACJ;;IACD,OAAOunD,MAAP;EACH,CARD;;EASA7H,QAAQ,CAAC+H,YAAT,GAAwB,UAAUC,GAAV,EAAeC,EAAf,EAAmBvF,KAAnB,EAA0B;IAC9C,IAAIwF,GAAG,GAAG,EAAV;IACAlI,QAAQ,CAAC0H,mBAAT,CAA6BM,GAA7B,EAAkC,WAAlC,EAA+C;MAC3CC,EAAE,EAAEA,EADuC;MAE3CvF,KAAK,EAAEA,KAFoC;MAG3C9sD,MAAM,EAAE8sD,KAAK,CAAC9sD,MAH6B;MAI3CuyD,SAAS,EAAED;IAJgC,CAA/C;IAMA,OAAOA,GAAP;EACH,CATD;EAUA;AACJ;AACA;AACA;AACA;;;EACIlI,QAAQ,CAACoI,aAAT,GAAyB,UAAU1wD,GAAV,EAAe;IACpC,OAAQ,CAAC,CAACA,GAAH,IAAYA,GAAG,CAACmB,WAAJ,KAAoBQ,MAAvC;EACH,CAFD;EAGA;AACJ;AACA;;;EACI2mD,QAAQ,CAACqI,MAAT,GAAkB,YAAY;IAC1B,IAAIC,GAAG,GAAG,IAAV;IACA,IAAIC,OAAO,GAAG,gBAAd;;IACA,IAAI;MACAD,GAAG,GAAG,IAAI5xD,MAAM,CAAC6xD,OAAD,CAAV,EAAN;IACH,CAFD,CAGA,OAAO3rD,CAAP,EAAU,CACN;IACH;;IACD,OAAO,CAAC,CAAC0rD,GAAF,IAAU,qBAAqBA,GAAtC;EACH,CAVD;EAWA;AACJ;AACA;AACA;AACA;;;EACItI,QAAQ,CAACwI,OAAT,GAAmB,UAAU73C,MAAV,EAAkB;IACjC,IAAI83C,IAAI,GAAG,kBAAX;IACA,IAAIC,IAAJ;IACA,OAAO,CAAC/3C,MAAM,IAAI,EAAX,IAAiB,uCAAuC9Y,OAAvC,CAA+C,IAA/C,EAAqD,UAAUsJ,GAAV,EAAepJ,CAAf,EAAkB;MAC3F,IAAI,YAAYrB,MAAZ,IAAsB,qBAAqBE,MAA/C,EAAuD;QACnD,IAAIgpC,GAAG,GAAG,IAAI+oB,UAAJ,CAAe,CAAf,CAAV;QACAjyD,MAAM,CAACE,MAAP,CAAcC,eAAd,CAA8B+oC,GAA9B;QACA8oB,IAAI,GAAG9oB,GAAG,CAAC,CAAD,CAAH,GAAS,EAAT,GAAc,CAArB;MACH,CAJD,MAKK;QACD8oB,IAAI,GAAG9kD,IAAI,CAAC+3C,MAAL,KAAgB,EAAhB,GAAqB,CAA5B;MACH;;MACD,OAAO8M,IAAI,CAAC1wD,CAAC,KAAK,EAAN,GAAW2wD,IAAI,GAAG,GAAP,GAAa,GAAxB,GAA8BA,IAA/B,CAAX;IACH,CAVuB,CAAxB;EAWH,CAdD;EAeA;AACJ;AACA;AACA;AACA;AACA;;;EACI1I,QAAQ,CAAC4I,MAAT,GAAkB,UAAUznD,GAAV,EAAe;IAC7B,OAAOA,GAAG,KAAKpL,SAAR,IAAqBoL,GAAG,KAAK,IAApC;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI6+C,QAAQ,CAAC6I,mBAAT,GAA+B,UAAUltD,KAAV,EAAiB+jD,KAAjB,EAAwB4B,QAAxB,EAAkC;IAC7D,IAAIvO,MAAJ;IACA,IAAI0U,OAAJ;IACA,IAAIlvD,GAAJ;IACA,IAAIR,CAAC,GAAG,CAAR;IACA,IAAI+wD,YAAY,GAAG,OAAO9I,QAAQ,CAACsG,MAAT,CAAgB3qD,KAAhB,EAAuB,CAAvB,EAA0B+jD,KAA1B,CAAP,KAA4C,QAA/D;;IACA,IAAI/jD,KAAK,CAACvE,MAAV,EAAkB;MACd,OAAOoB,uEAAiB,CAACu6C,MAAD,CAAjB,IAA6Bh7C,CAAC,GAAG4D,KAAK,CAACvE,MAA9C,EAAsD;QAClD27C,MAAM,GAAGiN,QAAQ,CAACsG,MAAT,CAAgB3qD,KAAhB,EAAuB5D,CAAvB,EAA0B2nD,KAA1B,CAAT;QACAnnD,GAAG,GAAGoD,KAAK,CAAC5D,CAAC,EAAF,CAAX;MACH;IACJ;;IACD,OAAOA,CAAC,GAAG4D,KAAK,CAACvE,MAAjB,EAAyBW,CAAC,EAA1B,EAA8B;MAC1B0vD,OAAO,GAAGzH,QAAQ,CAACsG,MAAT,CAAgB3qD,KAAhB,EAAuB5D,CAAvB,EAA0B2nD,KAA1B,CAAV;;MACA,IAAIlnD,uEAAiB,CAACivD,OAAD,CAArB,EAAgC;QAC5B;MACH;;MACD,IAAIqB,YAAJ,EAAkB;QACd/V,MAAM,GAAG,CAACA,MAAV;QACA0U,OAAO,GAAG,CAACA,OAAX;MACH;;MACD,IAAInG,QAAQ,CAACvO,MAAD,EAAS0U,OAAT,CAAR,GAA4B,CAAhC,EAAmC;QAC/B1U,MAAM,GAAG0U,OAAT;QACAlvD,GAAG,GAAGoD,KAAK,CAAC5D,CAAD,CAAX;MACH;IACJ;;IACD,OAAOQ,GAAP;EACH,CA3BD;EA4BA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIynD,QAAQ,CAACO,QAAT,GAAoB,UAAUuD,IAAV,EAAgBlD,SAAhB,EAA2BmI,sBAA3B,EAAmD;IACnEA,sBAAsB,GAAGvwD,uEAAiB,CAACuwD,sBAAD,CAAjB,GAA4C,KAA5C,GAAoDA,sBAA7E;IACA,IAAI9uD,MAAM,GAAG,EAAb;IACA,IAAIkH,GAAJ;IACA,IAAI6nD,GAAG,GAAG,EAAV;IACAlF,IAAI,CAACxpD,OAAL,CAAa,UAAUnD,IAAV,EAAgB2gB,KAAhB,EAAuB;MAChC3W,GAAG,GAAG,OAAQ2iD,IAAI,CAAChsC,KAAD,CAAZ,KAAyB,QAAzB,GAAoCkoC,QAAQ,CAACsG,MAAT,CAAgBxC,IAAhB,EAAsBhsC,KAAtB,EAA6B8oC,SAA7B,CAApC,GAA8EkD,IAAI,CAAChsC,KAAD,CAAxF;;MACA,IAAI,EAAE3W,GAAG,IAAI6nD,GAAT,CAAJ,EAAmB;QACf/uD,MAAM,CAAC4B,IAAP,CAAY,CAACktD,sBAAD,GAA0B5nD,GAA1B,GAAgC2iD,IAAI,CAAChsC,KAAD,CAAhD;QACAkxC,GAAG,CAAC7nD,GAAD,CAAH,GAAW,CAAX;MACH;IACJ,CAND;IAOA,OAAOlH,MAAP;EACH,CAbD;EAcA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACI+lD,QAAQ,CAACiJ,WAAT,GAAuB,UAAUhB,EAAV,EAAc9B,OAAd,EAAuB;IAC1C,IAAIzD,KAAK,GAAG,KAAKwG,YAAL,CAAkBjB,EAAlB,CAAZ;IACA,IAAIkB,UAAU,GAAG,IAAIC,WAAJ,CAAgBjD,OAAhB,CAAjB;;IACA,IAAI8B,EAAE,CAACoB,cAAP,EAAuB;MACnB3G,KAAK,CAACG,aAAN;IACH;IACD;IACA;;;IACA,IAAI5oD,MAAM,GAAGkvD,UAAU,CAAClJ,YAAX,CAAwByC,KAAxB,CAAb;IACA;;IACA,IAAIrU,WAAW,GAAG;MACdp0C,MAAM,EAAEguD,EAAE,CAACoB,cAAH,GAAoBpvD,MAAM,CAACA,MAA3B,GAAoCA,MAD9B;MAEd8rD,KAAK,EAAE9rD,MAAM,CAAC8rD,KAFA;MAGdR,UAAU,EAAEntC,IAAI,CAAC2rB,SAAL,CAAe9pC,MAAM,CAACsrD,UAAtB;IAHE,CAAlB;IAKA,OAAO0C,EAAE,CAACoB,cAAH,GAAoBhb,WAApB,GAAkCp0C,MAAzC;EACH,CAhBD;;EAiBA+lD,QAAQ,CAACkJ,YAAT,GAAwB,UAAUjB,EAAV,EAAc;IAClC,IAAI5sD,KAAK,GAAG,IAAZ;;IACA,IAAIqnD,KAAK,GAAG,IAAI7D,KAAJ,EAAZ;;IACA,IAAIoJ,EAAE,CAAC58B,MAAP,EAAe;MACXq3B,KAAK,CAACr3B,MAAN,CAAa48B,EAAE,CAAC58B,MAAhB;IACH;;IACD,IAAI48B,EAAE,CAACtH,KAAP,EAAc;MACV,IAAIA,KAAK,GAAGX,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyBrB,EAAE,CAACtH,KAA5B,CAAZ;MACAA,KAAK,CAACtxB,MAAN,CAAa,UAAU20B,IAAV,EAAgB;QACzB,IAAIxrD,uEAAiB,CAACwrD,IAAI,CAACX,SAAN,CAArB,EAAuC;UACnCX,KAAK,CAAC/B,KAAN,CAAYqD,IAAI,CAACtE,KAAjB,EAAwBsE,IAAI,CAACnD,QAA7B,EAAuCmD,IAAI,CAACrsD,KAA5C,EAAmDqsD,IAAI,CAAClD,UAAxD,EAAoEkD,IAAI,CAACjD,YAAzE;QACH,CAFD,MAGK;UACD,IAAIwI,aAAa,GAAG,EAApB;;UACA,IAAIvF,IAAI,CAACtE,KAAT,EAAgB;YACZ6J,aAAa,CAAC1tD,IAAd,CAAmB,IAAIqlD,SAAJ,CAAc8C,IAAI,CAACtE,KAAnB,EAA0BsE,IAAI,CAACnD,QAA/B,EAAyCmD,IAAI,CAACrsD,KAA9C,EAAqDqsD,IAAI,CAAClD,UAA1D,EAAsEkD,IAAI,CAACjD,YAA3E,CAAnB;UACH,CAFD,MAGK;YACDwI,aAAa,GAAGA,aAAa,CAACC,MAAd,CAAqBnuD,KAAK,CAACouD,YAAN,CAAmBzF,IAAI,CAACV,UAAxB,CAArB,CAAhB;UACH;;UACD,IAAIU,IAAI,CAACX,SAAL,KAAmB,IAAvB,EAA6B;YACzBX,KAAK,CAAC/B,KAAN,CAAYO,SAAS,CAACwC,EAAV,CAAa6F,aAAb,CAAZ;UACH,CAFD,MAGK,IAAIvF,IAAI,CAACX,SAAL,KAAmB,KAAvB,EAA8B;YAC/BX,KAAK,CAAC/B,KAAN,CAAYO,SAAS,CAACqC,GAAV,CAAcgG,aAAd,CAAZ;UACH;QACJ;MACJ,CAnBD;IAoBH;;IACD,IAAItB,EAAE,CAAC9G,MAAP,EAAe;MACX,IAAIA,MAAM,GAAGnB,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyBrB,EAAE,CAAC9G,MAA5B,CAAb,CADW,CAEX;;MACAA,MAAM,CAAC9xB,MAAP,CAAc,UAAUzyB,CAAV,EAAa;QAAE,OAAO8lD,KAAK,CAACvB,MAAN,CAAavkD,CAAC,CAACrE,GAAf,EAAoBqE,CAAC,CAAC4jD,MAAtB,EAA8B5jD,CAAC,CAAC,UAAD,CAA/B,EACpC;QACAA,CAAC,CAAC,YAAD,CAFmC,EAEnBA,CAAC,CAAC,cAAD,CAFkB,CAAP;MAES,CAFtC;IAGH;;IACD,IAAIqrD,EAAE,CAAC1C,UAAP,EAAmB;MACf0C,EAAE,CAAC1C,UAAH,CAAcl2B,MAAd,CAAqB,UAAUzyB,CAAV,EAAa;QAAE,OAAO8lD,KAAK,CAACI,SAAN,CAAgBlmD,CAAC,CAAC8K,IAAlB,EAAwB9K,CAAC,CAAC8iD,KAA1B,CAAP;MAA0C,CAA9E;IACH;;IACD,IAAIuI,EAAE,CAACyB,MAAP,EAAe;MACXzB,EAAE,CAACyB,MAAH,CAAUr6B,MAAV,CAAiB,UAAUzyB,CAAV,EAAa;QAAE,OAAO8lD,KAAK,CAAClB,MAAN,CAAa5kD,CAAC,CAAC6a,IAAf,EAAqB7a,CAAC,CAAC+kD,SAAvB,CAAP;MAA2C,CAA3E;IACH;;IACD,IAAIsG,EAAE,CAACzF,IAAP,EAAa;MACTE,KAAK,CAACF,IAAN,CAAWyF,EAAE,CAACzF,IAAd;IACH;;IACD,IAAIyF,EAAE,CAAC3F,IAAP,EAAa;MACTI,KAAK,CAACJ,IAAN,CAAW2F,EAAE,CAAC3F,IAAd;IACH;;IACD,IAAI2F,EAAE,CAAC/F,KAAP,EAAc;MACV+F,EAAE,CAAC/F,KAAH,CAAS7yB,MAAT,CAAgB,UAAUw3B,GAAV,EAAe;QAAE,OAAOnE,KAAK,CAACR,KAAN,CAAY2E,GAAZ,CAAP;MAA0B,CAA3D;IACH;;IACD,OAAOnE,KAAP;EACH,CApDD;;EAqDA1C,QAAQ,CAACyJ,YAAT,GAAwB,UAAUzF,IAAV,EAAgB;IACpC,IAAI2F,QAAQ,GAAG,EAAf;;IACA,KAAK,IAAI5xD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGisD,IAAI,CAAC5sD,MAAzB,EAAiCW,CAAC,EAAlC,EAAsC;MAClC,IAAI6E,CAAC,GAAGonD,IAAI,CAACjsD,CAAD,CAAZ;;MACA,IAAI6E,CAAC,CAAC8iD,KAAN,EAAa;QACTiK,QAAQ,CAAC9tD,IAAT,CAAc,IAAIqlD,SAAJ,CAActkD,CAAC,CAAC8iD,KAAhB,EAAuB9iD,CAAC,CAACikD,QAAzB,EAAmCjkD,CAAC,CAACjF,KAArC,EAA4CiF,CAAC,CAACkkD,UAA9C,EAA0DlkD,CAAC,CAACmkD,YAA5D,CAAd;MACH,CAFD,MAGK;QACD,IAAI6I,SAAS,GAAG,EAAhB,CADC,CAED;;QACA,IAAIC,IAAI,GAAG,KAAKJ,YAAL,CAAkB7sD,CAAC,CAAC0mD,UAApB,CAAX;;QACA,KAAK,IAAI/pD,EAAE,GAAG,CAAT,EAAY8F,EAAE,GAAGhG,MAAM,CAACjB,IAAP,CAAYyxD,IAAZ,CAAtB,EAAyCtwD,EAAE,GAAG8F,EAAE,CAACjI,MAAjD,EAAyDmC,EAAE,EAA3D,EAA+D;UAC3D,IAAI6G,IAAI,GAAGf,EAAE,CAAC9F,EAAD,CAAb;UACAqwD,SAAS,CAAC/tD,IAAV,CAAeguD,IAAI,CAACzpD,IAAD,CAAnB;QACH;;QACDupD,QAAQ,CAAC9tD,IAAT,CAAce,CAAC,CAACymD,SAAF,KAAgB,IAAhB,GAAuBnC,SAAS,CAACwC,EAAV,CAAakG,SAAb,CAAvB,GAAiD1I,SAAS,CAACqC,GAAV,CAAcqG,SAAd,CAA/D;MACH;IACJ;;IACD,OAAOD,QAAP;EACH,CAnBD;EAoBA;AACJ;AACA;AACA;AACA;;;EACI3J,QAAQ,CAAC8J,oBAAT,GAAgC,IAAhC;EACA;AACJ;AACA;AACA;AACA;;EACI9J,QAAQ,CAAC+J,gBAAT,GAA4B,IAA5B;EACA;AACJ;AACA;AACA;AACA;AACA;;EACI/J,QAAQ,CAACvjD,UAAT,GAAsB,UAAUylB,KAAV,EAAiB;IACnC,IAAI;MACA,MAAM,IAAIvlB,KAAJ,CAAUulB,KAAV,CAAN;IACH,CAFD,CAGA,OAAOtlB,CAAP,EAAU;MACN;MACA,MAAMA,CAAC,CAACF,OAAF,GAAY,IAAZ,GAAmBE,CAAC,CAACC,KAA3B;IACH;EACJ,CARD;;EASAmjD,QAAQ,CAACuF,UAAT,GAAsB;IAClB;AACR;AACA;AACA;AACA;AACA;IACQyE,GAAG,EAAE,UAAU3C,EAAV,EAAc3H,KAAd,EAAqB;MACtB,IAAIzlD,MAAM,GAAG,CAAb;MACA,IAAIkH,GAAJ;MACA,IAAI2nD,YAAY,GAAG,OAAO9I,QAAQ,CAACsG,MAAT,CAAgBe,EAAhB,EAAoB,CAApB,EAAuB3H,KAAvB,CAAP,KAAyC,QAA5D;;MACA,KAAK,IAAI3nD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGsvD,EAAE,CAACjwD,MAAvB,EAA+BW,CAAC,EAAhC,EAAoC;QAChCoJ,GAAG,GAAG6+C,QAAQ,CAACsG,MAAT,CAAgBe,EAAhB,EAAoBtvD,CAApB,EAAuB2nD,KAAvB,CAAN;;QACA,IAAI,CAAC/2C,KAAK,CAACxH,GAAD,CAAN,IAAeA,GAAG,KAAK,IAA3B,EAAiC;UAC7B,IAAI2nD,YAAJ,EAAkB;YACd3nD,GAAG,GAAG,CAACA,GAAP;UACH;;UACDlH,MAAM,IAAIkH,GAAV;QACH;MACJ;;MACD,OAAOlH,MAAP;IACH,CArBiB;;IAsBlB;AACR;AACA;AACA;AACA;AACA;IACQgwD,OAAO,EAAE,UAAU5C,EAAV,EAAc3H,KAAd,EAAqB;MAC1B,OAAOM,QAAQ,CAACuF,UAAT,CAAoByE,GAApB,CAAwB3C,EAAxB,EAA4B3H,KAA5B,IAAqC2H,EAAE,CAACjwD,MAA/C;IACH,CA9BiB;;IA+BlB;AACR;AACA;AACA;AACA;AACA;IACQ8Y,GAAG,EAAE,UAAUm3C,EAAV,EAAc3H,KAAd,EAAqB;MACtB,IAAI4B,QAAJ;;MACA,IAAI,OAAO5B,KAAP,KAAiB,UAArB,EAAiC;QAC7B4B,QAAQ,GAAG5B,KAAX;QACAA,KAAK,GAAG,IAAR;MACH;;MACD,OAAOM,QAAQ,CAAClwB,SAAT,CAAmB4vB,KAAnB,EAA0BM,QAAQ,CAAC6I,mBAAT,CAA6BxB,EAA7B,EAAiC3H,KAAjC,EAAwC4B,QAAQ,IAAItB,QAAQ,CAACiF,WAA7D,CAA1B,CAAP;IACH,CA5CiB;;IA6ClB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ90C,GAAG,EAAE,UAAUk3C,EAAV,EAAc3H,KAAd,EAAqB;MACtB,IAAI4B,QAAJ;;MACA,IAAI,OAAO5B,KAAP,KAAiB,UAArB,EAAiC;QAC7B4B,QAAQ,GAAG5B,KAAX;QACAA,KAAK,GAAG,IAAR;MACH;;MACD,OAAOM,QAAQ,CAAClwB,SAAT,CAAmB4vB,KAAnB,EAA0BM,QAAQ,CAAC6I,mBAAT,CAA6BxB,EAA7B,EAAiC3H,KAAjC,EAAwC4B,QAAQ,IAAItB,QAAQ,CAACkF,YAA7D,CAA1B,CAAP;IACH,CA3DiB;;IA4DlB;AACR;AACA;AACA;AACA;AACA;IACQgF,SAAS,EAAE,UAAU7C,EAAV,EAAc3H,KAAd,EAAqB;MAC5B,OAAO,IAAI0J,WAAJ,CAAgB/B,EAAhB,EAAoBpH,YAApB,CAAiC,IAAIpB,KAAJ,GAAY8B,KAAZ,CAAkBjB,KAAlB,EAAyB,OAAzB,EAAkC,IAAlC,EAAwC,IAAxC,CAAjC,EAAgFtoD,MAAvF;IACH,CApEiB;;IAqElB;AACR;AACA;AACA;AACA;AACA;IACQ+yD,UAAU,EAAE,UAAU9C,EAAV,EAAc3H,KAAd,EAAqB;MAC7B,OAAO,IAAI0J,WAAJ,CAAgB/B,EAAhB,EAAoBpH,YAApB,CAAiC,IAAIpB,KAAJ,GAAY8B,KAAZ,CAAkBjB,KAAlB,EAAyB,OAAzB,EAAkC,KAAlC,EAAyC,IAAzC,CAAjC,EAAiFtoD,MAAxF;IACH,CA7EiB;;IA8ElB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;IACQ2uD,KAAK,EAAE,UAAUsB,EAAV,EAAc3H,KAAd,EAAqB;MACxB,OAAO2H,EAAE,CAACjwD,MAAV;IACH;EAxFiB,CAAtB;EA0FA;AACJ;AACA;;EACI4oD,QAAQ,CAACoK,eAAT,GAA2B;IACvB,KAAK,UADkB;IAEvB,KAAK,aAFkB;IAGvB,MAAM,iBAHiB;IAIvB,MAAM,oBAJiB;IAKvB,MAAM,OALiB;IAMvB,MAAM,UANiB;IAOvB,MAAM,UAPiB;IAQvB,MAAM,UARiB;IASvB,MAAM;EATiB,CAA3B;EAWA;AACJ;AACA;AACA;;EACIpK,QAAQ,CAACqK,YAAT,GAAwB;IACpB,KAAK,MADe;IAEpB,KAAK,MAFe;IAGpB,MAAM,MAHc;IAIpB,MAAM,MAJc;IAKpB,MAAM,MALc;IAMpB,MAAM,MANc;IAOpB,YAAY,MAPQ;IAQpB,mBAAmB,MARC;IASpB,eAAe,MATK;IAUpB,sBAAsB,MAVF;IAWpB,SAAS,MAXW;IAYpB,YAAY;EAZQ,CAAxB;EAcA;AACJ;AACA;AACA;;EACIrK,QAAQ,CAACsK,aAAT,GAAyB;IACrB,MAAM,UADe;IAErB,MAAM,YAFe;IAGrB,MAAM,aAHe;IAIrB,YAAY,UAJS;IAKrB,cAAc,YALO;IAMrB,YAAY,aANS;IAOrB,kBAAkB,cAPG;IAQrB,oBAAoB,gBARC;IASrB,kBAAkB,iBATG;IAUrB,YAAY,UAVS;IAWrB,QAAQ;EAXa,CAAzB;EAaA;AACJ;AACA;AACA;;EACItK,QAAQ,CAACuK,eAAT,GAA2B;IACvB,MAAM,UADiB;IAEvB,MAAM,YAFiB;IAGvB,MAAM,UAHiB;IAIvB,YAAY,UAJW;IAKvB,cAAc,YALS;IAMvB,YAAY,UANW;IAOvB,kBAAkB,cAPK;IAQvB,oBAAoB,gBARG;IASvB,kBAAkB,cATK;IAUvB,YAAY,UAVW;IAWvB,QAAQ;EAXe,CAA3B;EAaAvK,QAAQ,CAACwH,UAAT,GAAsB;IAClB,UAAU,GADQ;IAElB,UAAU,GAFQ;IAGlB,UAAU,GAHQ;IAIlB,UAAU,GAJQ;IAKlB,UAAU,GALQ;IAMlB,UAAU,GANQ;IAOlB,UAAU,GAPQ;IAQlB,UAAU,GARQ;IASlB,UAAU,GATQ;IAUlB,UAAU,GAVQ;IAWlB,UAAU,GAXQ;IAYlB,UAAU,GAZQ;IAalB,UAAU,GAbQ;IAclB,UAAU,GAdQ;IAelB,UAAU,GAfQ;IAgBlB,UAAU,GAhBQ;IAiBlB,UAAU,GAjBQ;IAkBlB,UAAU,GAlBQ;IAmBlB,UAAU,GAnBQ;IAoBlB,UAAU,GApBQ;IAqBlB,UAAU,GArBQ;IAsBlB,UAAU,GAtBQ;IAuBlB,UAAU,GAvBQ;IAwBlB,UAAU,GAxBQ;IAyBlB,UAAU,GAzBQ;IA0BlB,UAAU,GA1BQ;IA2BlB,UAAU,GA3BQ;IA4BlB,UAAU,GA5BQ;IA6BlB,UAAU,GA7BQ;IA8BlB,UAAU,GA9BQ;IA+BlB,UAAU,GA/BQ;IAgClB,UAAU,GAhCQ;IAiClB,UAAU,GAjCQ;IAkClB,UAAU,IAlCQ;IAmClB,UAAU,IAnCQ;IAoClB,UAAU,IApCQ;IAqClB,UAAU,IArCQ;IAsClB,UAAU,IAtCQ;IAuClB,UAAU,IAvCQ;IAwClB,UAAU,IAxCQ;IAyClB,UAAU,IAzCQ;IA0ClB,UAAU,IA1CQ;IA2ClB,UAAU,GA3CQ;IA4ClB,UAAU,GA5CQ;IA6ClB,UAAU,GA7CQ;IA8ClB,UAAU,GA9CQ;IA+ClB,UAAU,GA/CQ;IAgDlB,UAAU,GAhDQ;IAiDlB,UAAU,GAjDQ;IAkDlB,UAAU,GAlDQ;IAmDlB,UAAU,GAnDQ;IAoDlB,UAAU,GApDQ;IAqDlB,UAAU,GArDQ;IAsDlB,UAAU,GAtDQ;IAuDlB,UAAU,GAvDQ;IAwDlB,UAAU,GAxDQ;IAyDlB,UAAU,GAzDQ;IA0DlB,UAAU,GA1DQ;IA2DlB,UAAU,GA3DQ;IA4DlB,UAAU,GA5DQ;IA6DlB,UAAU,GA7DQ;IA8DlB,UAAU,GA9DQ;IA+DlB,UAAU,GA/DQ;IAgElB,UAAU,GAhEQ;IAiElB,UAAU,GAjEQ;IAkElB,UAAU,GAlEQ;IAmElB,UAAU,GAnEQ;IAoElB,UAAU,GApEQ;IAqElB,UAAU,GArEQ;IAsElB,UAAU,GAtEQ;IAuElB,UAAU,GAvEQ;IAwElB,UAAU,GAxEQ;IAyElB,UAAU,GAzEQ;IA0ElB,UAAU,GA1EQ;IA2ElB,UAAU,IA3EQ;IA4ElB,UAAU,IA5EQ;IA6ElB,UAAU,IA7EQ;IA8ElB,UAAU,IA9EQ;IA+ElB,UAAU,GA/EQ;IAgFlB,UAAU,GAhFQ;IAiFlB,UAAU,GAjFQ;IAkFlB,UAAU,GAlFQ;IAmFlB,UAAU,GAnFQ;IAoFlB,UAAU,GApFQ;IAqFlB,UAAU,GArFQ;IAsFlB,UAAU,GAtFQ;IAuFlB,UAAU,GAvFQ;IAwFlB,UAAU,GAxFQ;IAyFlB,UAAU,GAzFQ;IA0FlB,UAAU,GA1FQ;IA2FlB,UAAU,GA3FQ;IA4FlB,UAAU,GA5FQ;IA6FlB,UAAU,GA7FQ;IA8FlB,UAAU,GA9FQ;IA+FlB,UAAU,GA/FQ;IAgGlB,UAAU,GAhGQ;IAiGlB,UAAU,GAjGQ;IAkGlB,UAAU,GAlGQ;IAmGlB,UAAU,GAnGQ;IAoGlB,UAAU,GApGQ;IAqGlB,UAAU,GArGQ;IAsGlB,UAAU,GAtGQ;IAuGlB,UAAU,GAvGQ;IAwGlB,UAAU,GAxGQ;IAyGlB,UAAU,GAzGQ;IA0GlB,UAAU,GA1GQ;IA2GlB,UAAU,GA3GQ;IA4GlB,UAAU,GA5GQ;IA6GlB,UAAU,GA7GQ;IA8GlB,UAAU,GA9GQ;IA+GlB,UAAU,GA/GQ;IAgHlB,UAAU,GAhHQ;IAiHlB,UAAU,GAjHQ;IAkHlB,UAAU,GAlHQ;IAmHlB,UAAU,GAnHQ;IAoHlB,UAAU,GApHQ;IAqHlB,UAAU,GArHQ;IAsHlB,UAAU,GAtHQ;IAuHlB,UAAU,GAvHQ;IAwHlB,UAAU,GAxHQ;IAyHlB,UAAU,GAzHQ;IA0HlB,UAAU,GA1HQ;IA2HlB,UAAU,GA3HQ;IA4HlB,UAAU,GA5HQ;IA6HlB,UAAU,GA7HQ;IA8HlB,UAAU,GA9HQ;IA+HlB,UAAU,GA/HQ;IAgIlB,UAAU,GAhIQ;IAiIlB,UAAU,GAjIQ;IAkIlB,UAAU,GAlIQ;IAmIlB,UAAU,GAnIQ;IAoIlB,UAAU,GApIQ;IAqIlB,UAAU,GArIQ;IAsIlB,UAAU,GAtIQ;IAuIlB,UAAU,GAvIQ;IAwIlB,UAAU,GAxIQ;IAyIlB,UAAU,GAzIQ;IA0IlB,UAAU,GA1IQ;IA2IlB,UAAU,GA3IQ;IA4IlB,UAAU,GA5IQ;IA6IlB,UAAU,GA7IQ;IA8IlB,UAAU,GA9IQ;IA+IlB,UAAU,GA/IQ;IAgJlB,UAAU,GAhJQ;IAiJlB,UAAU,GAjJQ;IAkJlB,UAAU,GAlJQ;IAmJlB,UAAU,GAnJQ;IAoJlB,UAAU,GApJQ;IAqJlB,UAAU,GArJQ;IAsJlB,UAAU,GAtJQ;IAuJlB,UAAU,GAvJQ;IAwJlB,UAAU,GAxJQ;IAyJlB,UAAU,GAzJQ;IA0JlB,UAAU,GA1JQ;IA2JlB,UAAU,GA3JQ;IA4JlB,UAAU,GA5JQ;IA6JlB,UAAU,GA7JQ;IA8JlB,UAAU,GA9JQ;IA+JlB,UAAU,GA/JQ;IAgKlB,UAAU,GAhKQ;IAiKlB,UAAU,GAjKQ;IAkKlB,UAAU,GAlKQ;IAmKlB,UAAU,GAnKQ;IAoKlB,UAAU,GApKQ;IAqKlB,UAAU,GArKQ;IAsKlB,UAAU,GAtKQ;IAuKlB,UAAU,GAvKQ;IAwKlB,UAAU,GAxKQ;IAyKlB,UAAU,GAzKQ;IA0KlB,UAAU,GA1KQ;IA2KlB,UAAU,GA3KQ;IA4KlB,UAAU,GA5KQ;IA6KlB,UAAU,GA7KQ;IA8KlB,UAAU,GA9KQ;IA+KlB,UAAU,GA/KQ;IAgLlB,UAAU,GAhLQ;IAiLlB,UAAU,GAjLQ;IAkLlB,UAAU,GAlLQ;IAmLlB,UAAU,GAnLQ;IAoLlB,UAAU,GApLQ;IAqLlB,UAAU,GArLQ;IAsLlB,UAAU,GAtLQ;IAuLlB,UAAU,GAvLQ;IAwLlB,UAAU,GAxLQ;IAyLlB,UAAU,GAzLQ;IA0LlB,UAAU,GA1LQ;IA2LlB,UAAU,GA3LQ;IA4LlB,UAAU,GA5LQ;IA6LlB,UAAU,GA7LQ;IA8LlB,UAAU,GA9LQ;IA+LlB,UAAU,GA/LQ;IAgMlB,UAAU,GAhMQ;IAiMlB,UAAU,IAjMQ;IAkMlB,UAAU,IAlMQ;IAmMlB,UAAU,GAnMQ;IAoMlB,UAAU,GApMQ;IAqMlB,UAAU,GArMQ;IAsMlB,UAAU,GAtMQ;IAuMlB,UAAU,GAvMQ;IAwMlB,UAAU,GAxMQ;IAyMlB,UAAU,GAzMQ;IA0MlB,UAAU,GA1MQ;IA2MlB,UAAU,GA3MQ;IA4MlB,UAAU,GA5MQ;IA6MlB,UAAU,GA7MQ;IA8MlB,UAAU,GA9MQ;IA+MlB,UAAU,GA/MQ;IAgNlB,UAAU,GAhNQ;IAiNlB,UAAU,GAjNQ;IAkNlB,UAAU,GAlNQ;IAmNlB,UAAU,GAnNQ;IAoNlB,UAAU,GApNQ;IAqNlB,UAAU,GArNQ;IAsNlB,UAAU,GAtNQ;IAuNlB,UAAU,GAvNQ;IAwNlB,UAAU,GAxNQ;IAyNlB,UAAU,IAzNQ;IA0NlB,UAAU,IA1NQ;IA2NlB,UAAU,GA3NQ;IA4NlB,UAAU,GA5NQ;IA6NlB,UAAU,GA7NQ;IA8NlB,UAAU,GA9NQ;IA+NlB,UAAU,GA/NQ;IAgOlB,UAAU,GAhOQ;IAiOlB,UAAU,GAjOQ;IAkOlB,UAAU,GAlOQ;IAmOlB,UAAU,GAnOQ;IAoOlB,UAAU,GApOQ;IAqOlB,UAAU,GArOQ;IAsOlB,UAAU,GAtOQ;IAuOlB,UAAU,GAvOQ;IAwOlB,UAAU,GAxOQ;IAyOlB,UAAU,GAzOQ;IA0OlB,UAAU,GA1OQ;IA2OlB,UAAU,GA3OQ;IA4OlB,UAAU,GA5OQ;IA6OlB,UAAU,GA7OQ;IA8OlB,UAAU,GA9OQ;IA+OlB,UAAU,GA/OQ;IAgPlB,UAAU,GAhPQ;IAiPlB,UAAU,GAjPQ;IAkPlB,UAAU,GAlPQ;IAmPlB,UAAU,GAnPQ;IAoPlB,UAAU,GApPQ;IAqPlB,UAAU,GArPQ;IAsPlB,UAAU,GAtPQ;IAuPlB,UAAU,GAvPQ;IAwPlB,UAAU,GAxPQ;IAyPlB,UAAU,GAzPQ;IA0PlB,UAAU,GA1PQ;IA2PlB,UAAU,GA3PQ;IA4PlB,UAAU,GA5PQ;IA6PlB,UAAU,GA7PQ;IA8PlB,UAAU,GA9PQ;IA+PlB,UAAU,GA/PQ;IAgQlB,UAAU,GAhQQ;IAiQlB,UAAU,GAjQQ;IAkQlB,UAAU,GAlQQ;IAmQlB,UAAU,GAnQQ;IAoQlB,UAAU,GApQQ;IAqQlB,UAAU,IArQQ;IAsQlB,UAAU,IAtQQ;IAuQlB,UAAU,IAvQQ;IAwQlB,UAAU,GAxQQ;IAyQlB,UAAU,GAzQQ;IA0QlB,UAAU,GA1QQ;IA2QlB,UAAU,GA3QQ;IA4QlB,UAAU,GA5QQ;IA6QlB,UAAU,GA7QQ;IA8QlB,UAAU,GA9QQ;IA+QlB,UAAU,GA/QQ;IAgRlB,UAAU,GAhRQ;IAiRlB,UAAU,GAjRQ;IAkRlB,UAAU,GAlRQ;IAmRlB,UAAU,GAnRQ;IAoRlB,UAAU,GApRQ;IAqRlB,UAAU,GArRQ;IAsRlB,UAAU,GAtRQ;IAuRlB,UAAU,GAvRQ;IAwRlB,UAAU,GAxRQ;IAyRlB,UAAU,GAzRQ;IA0RlB,UAAU,GA1RQ;IA2RlB,UAAU,GA3RQ;IA4RlB,UAAU,GA5RQ;IA6RlB,UAAU,GA7RQ;IA8RlB,UAAU,GA9RQ;IA+RlB,UAAU,GA/RQ;IAgSlB,UAAU,GAhSQ;IAiSlB,UAAU,GAjSQ;IAkSlB,UAAU,GAlSQ;IAmSlB,UAAU,GAnSQ;IAoSlB,UAAU,GApSQ;IAqSlB,UAAU,GArSQ;IAsSlB,UAAU,GAtSQ;IAuSlB,UAAU,GAvSQ;IAwSlB,UAAU,GAxSQ;IAySlB,UAAU,GAzSQ;IA0SlB,UAAU,GA1SQ;IA2SlB,UAAU,GA3SQ;IA4SlB,UAAU,GA5SQ;IA6SlB,UAAU,GA7SQ;IA8SlB,UAAU,GA9SQ;IA+SlB,UAAU,GA/SQ;IAgTlB,UAAU,GAhTQ;IAiTlB,UAAU,GAjTQ;IAkTlB,UAAU,GAlTQ;IAmTlB,UAAU,GAnTQ;IAoTlB,UAAU,GApTQ;IAqTlB,UAAU,GArTQ;IAsTlB,UAAU,GAtTQ;IAuTlB,UAAU,GAvTQ;IAwTlB,UAAU,GAxTQ;IAyTlB,UAAU,GAzTQ;IA0TlB,UAAU,GA1TQ;IA2TlB,UAAU,GA3TQ;IA4TlB,UAAU,GA5TQ;IA6TlB,UAAU,GA7TQ;IA8TlB,UAAU,GA9TQ;IA+TlB,UAAU,GA/TQ;IAgUlB,UAAU,GAhUQ;IAiUlB,UAAU,GAjUQ;IAkUlB,UAAU,GAlUQ;IAmUlB,UAAU,GAnUQ;IAoUlB,UAAU,IApUQ;IAqUlB,UAAU,GArUQ;IAsUlB,UAAU,GAtUQ;IAuUlB,UAAU,GAvUQ;IAwUlB,UAAU,GAxUQ;IAyUlB,UAAU,GAzUQ;IA0UlB,UAAU,GA1UQ;IA2UlB,UAAU,GA3UQ;IA4UlB,UAAU,GA5UQ;IA6UlB,UAAU,GA7UQ;IA8UlB,UAAU,GA9UQ;IA+UlB,UAAU,GA/UQ;IAgVlB,UAAU,GAhVQ;IAiVlB,UAAU,GAjVQ;IAkVlB,UAAU,GAlVQ;IAmVlB,UAAU,GAnVQ;IAoVlB,UAAU,GApVQ;IAqVlB,UAAU,GArVQ;IAsVlB,UAAU,GAtVQ;IAuVlB,UAAU,GAvVQ;IAwVlB,UAAU,GAxVQ;IAyVlB,UAAU,GAzVQ;IA0VlB,UAAU,GA1VQ;IA2VlB,UAAU,GA3VQ;IA4VlB,UAAU,GA5VQ;IA6VlB,UAAU,GA7VQ;IA8VlB,UAAU,GA9VQ;IA+VlB,UAAU,GA/VQ;IAgWlB,UAAU,GAhWQ;IAiWlB,UAAU,GAjWQ;IAkWlB,UAAU,GAlWQ;IAmWlB,UAAU,GAnWQ;IAoWlB,UAAU,GApWQ;IAqWlB,UAAU,GArWQ;IAsWlB,UAAU,GAtWQ;IAuWlB,UAAU,GAvWQ;IAwWlB,UAAU,GAxWQ;IAyWlB,UAAU,GAzWQ;IA0WlB,UAAU,GA1WQ;IA2WlB,UAAU,GA3WQ;IA4WlB,UAAU,GA5WQ;IA6WlB,UAAU,IA7WQ;IA8WlB,UAAU,GA9WQ;IA+WlB,UAAU,GA/WQ;IAgXlB,UAAU,GAhXQ;IAiXlB,UAAU,GAjXQ;IAkXlB,UAAU,GAlXQ;IAmXlB,UAAU,GAnXQ;IAoXlB,UAAU,GApXQ;IAqXlB,UAAU,GArXQ;IAsXlB,UAAU,GAtXQ;IAuXlB,UAAU,GAvXQ;IAwXlB,UAAU,GAxXQ;IAyXlB,UAAU,GAzXQ;IA0XlB,UAAU,GA1XQ;IA2XlB,UAAU,GA3XQ;IA4XlB,UAAU,GA5XQ;IA6XlB,UAAU,GA7XQ;IA8XlB,UAAU,GA9XQ;IA+XlB,UAAU,GA/XQ;IAgYlB,UAAU,GAhYQ;IAiYlB,UAAU,GAjYQ;IAkYlB,UAAU,GAlYQ;IAmYlB,UAAU,GAnYQ;IAoYlB,UAAU,GApYQ;IAqYlB,UAAU,GArYQ;IAsYlB,UAAU,GAtYQ;IAuYlB,UAAU,GAvYQ;IAwYlB,UAAU,GAxYQ;IAyYlB,UAAU,GAzYQ;IA0YlB,UAAU,GA1YQ;IA2YlB,UAAU,GA3YQ;IA4YlB,UAAU,GA5YQ;IA6YlB,UAAU,GA7YQ;IA8YlB,UAAU,GA9YQ;IA+YlB,UAAU,GA/YQ;IAgZlB,UAAU,GAhZQ;IAiZlB,UAAU,GAjZQ;IAkZlB,UAAU,GAlZQ;IAmZlB,UAAU,GAnZQ;IAoZlB,UAAU,GApZQ;IAqZlB,UAAU,GArZQ;IAsZlB,UAAU,GAtZQ;IAuZlB,UAAU,GAvZQ;IAwZlB,UAAU,GAxZQ;IAyZlB,UAAU,GAzZQ;IA0ZlB,UAAU,GA1ZQ;IA2ZlB,UAAU,GA3ZQ;IA4ZlB,UAAU,GA5ZQ;IA6ZlB,UAAU,GA7ZQ;IA8ZlB,UAAU,GA9ZQ;IA+ZlB,UAAU,GA/ZQ;IAgalB,UAAU,GAhaQ;IAialB,UAAU,GAjaQ;IAkalB,UAAU,GAlaQ;IAmalB,UAAU,GAnaQ;IAoalB,UAAU,GApaQ;IAqalB,UAAU,GAraQ;IAsalB,UAAU,GAtaQ;IAualB,UAAU,GAvaQ;IAwalB,UAAU,GAxaQ;IAyalB,UAAU,GAzaQ;IA0alB,UAAU,GA1aQ;IA2alB,UAAU,GA3aQ;IA4alB,UAAU,GA5aQ;IA6alB,UAAU,GA7aQ;IA8alB,UAAU,GA9aQ;IA+alB,UAAU,GA/aQ;IAgblB,UAAU,GAhbQ;IAiblB,UAAU,GAjbQ;IAkblB,UAAU,GAlbQ;IAmblB,UAAU,GAnbQ;IAoblB,UAAU,GApbQ;IAqblB,UAAU,GArbQ;IAsblB,UAAU,GAtbQ;IAublB,UAAU,GAvbQ;IAwblB,UAAU,IAxbQ;IAyblB,UAAU,IAzbQ;IA0blB,UAAU,IA1bQ;IA2blB,UAAU,IA3bQ;IA4blB,UAAU,IA5bQ;IA6blB,UAAU,IA7bQ;IA8blB,UAAU,IA9bQ;IA+blB,UAAU,IA/bQ;IAgclB,UAAU,IAhcQ;IAiclB,UAAU,GAjcQ;IAkclB,UAAU,GAlcQ;IAmclB,UAAU,GAncQ;IAoclB,UAAU,GApcQ;IAqclB,UAAU,GArcQ;IAsclB,UAAU,GAtcQ;IAuclB,UAAU,GAvcQ;IAwclB,UAAU,GAxcQ;IAyclB,UAAU,GAzcQ;IA0clB,UAAU,GA1cQ;IA2clB,UAAU,GA3cQ;IA4clB,UAAU,GA5cQ;IA6clB,UAAU,GA7cQ;IA8clB,UAAU,GA9cQ;IA+clB,UAAU,GA/cQ;IAgdlB,UAAU,GAhdQ;IAidlB,UAAU,GAjdQ;IAkdlB,UAAU,GAldQ;IAmdlB,UAAU,GAndQ;IAodlB,UAAU,GApdQ;IAqdlB,UAAU,GArdQ;IAsdlB,UAAU,GAtdQ;IAudlB,UAAU,GAvdQ;IAwdlB,UAAU,GAxdQ;IAydlB,UAAU,GAzdQ;IA0dlB,UAAU,GA1dQ;IA2dlB,UAAU,GA3dQ;IA4dlB,UAAU,GA5dQ;IA6dlB,UAAU,GA7dQ;IA8dlB,UAAU,GA9dQ;IA+dlB,UAAU,GA/dQ;IAgelB,UAAU,GAheQ;IAielB,UAAU,GAjeQ;IAkelB,UAAU,IAleQ;IAmelB,UAAU,IAneQ;IAoelB,UAAU,GApeQ;IAqelB,UAAU,GAreQ;IAselB,UAAU,GAteQ;IAuelB,UAAU,GAveQ;IAwelB,UAAU,GAxeQ;IAyelB,UAAU,GAzeQ;IA0elB,UAAU,GA1eQ;IA2elB,UAAU,GA3eQ;IA4elB,UAAU,GA5eQ;IA6elB,UAAU,GA7eQ;IA8elB,UAAU,GA9eQ;IA+elB,UAAU,GA/eQ;IAgflB,UAAU,GAhfQ;IAiflB,UAAU,GAjfQ;IAkflB,UAAU,GAlfQ;IAmflB,UAAU,GAnfQ;IAoflB,UAAU,GApfQ;IAqflB,UAAU,GArfQ;IAsflB,UAAU,GAtfQ;IAuflB,UAAU,GAvfQ;IAwflB,UAAU,GAxfQ;IAyflB,UAAU,GAzfQ;IA0flB,UAAU,GA1fQ;IA2flB,UAAU,GA3fQ;IA4flB,UAAU,GA5fQ;IA6flB,UAAU,GA7fQ;IA8flB,UAAU,GA9fQ;IA+flB,UAAU,GA/fQ;IAggBlB,UAAU,GAhgBQ;IAigBlB,UAAU,GAjgBQ;IAkgBlB,UAAU,GAlgBQ;IAmgBlB,UAAU,GAngBQ;IAogBlB,UAAU,GApgBQ;IAqgBlB,UAAU,GArgBQ;IAsgBlB,UAAU,GAtgBQ;IAugBlB,UAAU,GAvgBQ;IAwgBlB,UAAU,GAxgBQ;IAygBlB,UAAU,GAzgBQ;IA0gBlB,UAAU,GA1gBQ;IA2gBlB,UAAU,GA3gBQ;IA4gBlB,UAAU,GA5gBQ;IA6gBlB,UAAU,GA7gBQ;IA8gBlB,UAAU,GA9gBQ;IA+gBlB,UAAU,GA/gBQ;IAghBlB,UAAU,GAhhBQ;IAihBlB,UAAU,GAjhBQ;IAkhBlB,UAAU,GAlhBQ;IAmhBlB,UAAU,GAnhBQ;IAohBlB,UAAU,GAphBQ;IAqhBlB,UAAU,GArhBQ;IAshBlB,UAAU,GAthBQ;IAuhBlB,UAAU,GAvhBQ;IAwhBlB,UAAU,GAxhBQ;IAyhBlB,UAAU,GAzhBQ;IA0hBlB,UAAU,GA1hBQ;IA2hBlB,UAAU,GA3hBQ;IA4hBlB,UAAU,GA5hBQ;IA6hBlB,UAAU,GA7hBQ;IA8hBlB,UAAU,GA9hBQ;IA+hBlB,UAAU,GA/hBQ;IAgiBlB,UAAU,GAhiBQ;IAiiBlB,UAAU,GAjiBQ;IAkiBlB,UAAU,GAliBQ;IAmiBlB,UAAU,IAniBQ;IAoiBlB,UAAU,GApiBQ;IAqiBlB,UAAU,GAriBQ;IAsiBlB,UAAU,GAtiBQ;IAuiBlB,UAAU,GAviBQ;IAwiBlB,UAAU,GAxiBQ;IAyiBlB,UAAU,GAziBQ;IA0iBlB,UAAU,GA1iBQ;IA2iBlB,UAAU,GA3iBQ;IA4iBlB,UAAU,GA5iBQ;IA6iBlB,UAAU,GA7iBQ;IA8iBlB,UAAU,GA9iBQ;IA+iBlB,UAAU,GA/iBQ;IAgjBlB,UAAU,GAhjBQ;IAijBlB,UAAU,GAjjBQ;IAkjBlB,UAAU,GAljBQ;IAmjBlB,UAAU,GAnjBQ;IAojBlB,UAAU,GApjBQ;IAqjBlB,UAAU,GArjBQ;IAsjBlB,UAAU,GAtjBQ;IAujBlB,UAAU,GAvjBQ;IAwjBlB,UAAU,GAxjBQ;IAyjBlB,UAAU,GAzjBQ;IA0jBlB,UAAU,GA1jBQ;IA2jBlB,UAAU,GA3jBQ;IA4jBlB,UAAU,GA5jBQ;IA6jBlB,UAAU,GA7jBQ;IA8jBlB,UAAU,GA9jBQ;IA+jBlB,UAAU,GA/jBQ;IAgkBlB,UAAU,GAhkBQ;IAikBlB,UAAU,GAjkBQ;IAkkBlB,UAAU,GAlkBQ;IAmkBlB,UAAU,GAnkBQ;IAokBlB,UAAU,GApkBQ;IAqkBlB,UAAU,GArkBQ;IAskBlB,UAAU,GAtkBQ;IAukBlB,UAAU,GAvkBQ;IAwkBlB,UAAU,GAxkBQ;IAykBlB,UAAU,GAzkBQ;IA0kBlB,UAAU,GA1kBQ;IA2kBlB,UAAU,GA3kBQ;IA4kBlB,UAAU,GA5kBQ;IA6kBlB,UAAU,GA7kBQ;IA8kBlB,UAAU,GA9kBQ;IA+kBlB,UAAU,GA/kBQ;IAglBlB,UAAU,GAhlBQ;IAilBlB,UAAU,GAjlBQ;IAklBlB,UAAU,GAllBQ;IAmlBlB,UAAU,GAnlBQ;IAolBlB,UAAU,GAplBQ;IAqlBlB,UAAU,GArlBQ;IAslBlB,UAAU,GAtlBQ;IAulBlB,UAAU,GAvlBQ;IAwlBlB,UAAU,GAxlBQ;IAylBlB,UAAU,GAzlBQ;IA0lBlB,UAAU,GA1lBQ;IA2lBlB,UAAU,IA3lBQ;IA4lBlB,UAAU,GA5lBQ;IA6lBlB,UAAU,GA7lBQ;IA8lBlB,UAAU,GA9lBQ;IA+lBlB,UAAU,GA/lBQ;IAgmBlB,UAAU,GAhmBQ;IAimBlB,UAAU,GAjmBQ;IAkmBlB,UAAU,GAlmBQ;IAmmBlB,UAAU,GAnmBQ;IAomBlB,UAAU,GApmBQ;IAqmBlB,UAAU,GArmBQ;IAsmBlB,UAAU,GAtmBQ;IAumBlB,UAAU,GAvmBQ;IAwmBlB,UAAU,GAxmBQ;IAymBlB,UAAU,GAzmBQ;IA0mBlB,UAAU,GA1mBQ;IA2mBlB,UAAU,GA3mBQ;IA4mBlB,UAAU,GA5mBQ;IA6mBlB,UAAU,GA7mBQ;IA8mBlB,UAAU,GA9mBQ;IA+mBlB,UAAU,GA/mBQ;IAgnBlB,UAAU,GAhnBQ;IAinBlB,UAAU,GAjnBQ;IAknBlB,UAAU,GAlnBQ;IAmnBlB,UAAU,IAnnBQ;IAonBlB,UAAU,GApnBQ;IAqnBlB,UAAU,GArnBQ;IAsnBlB,UAAU,GAtnBQ;IAunBlB,UAAU,GAvnBQ;IAwnBlB,UAAU,GAxnBQ;IAynBlB,UAAU,GAznBQ;IA0nBlB,UAAU,GA1nBQ;IA2nBlB,UAAU,GA3nBQ;IA4nBlB,UAAU,GA5nBQ;IA6nBlB,UAAU,GA7nBQ;IA8nBlB,UAAU,GA9nBQ;IA+nBlB,UAAU,GA/nBQ;IAgoBlB,UAAU,GAhoBQ;IAioBlB,UAAU,GAjoBQ;IAkoBlB,UAAU,GAloBQ;IAmoBlB,UAAU,GAnoBQ;IAooBlB,UAAU,GApoBQ;IAqoBlB,UAAU,GAroBQ;IAsoBlB,UAAU,GAtoBQ;IAuoBlB,UAAU,GAvoBQ;IAwoBlB,UAAU,GAxoBQ;IAyoBlB,UAAU,GAzoBQ;IA0oBlB,UAAU,GA1oBQ;IA2oBlB,UAAU,GA3oBQ;IA4oBlB,UAAU,GA5oBQ;IA6oBlB,UAAU,GA7oBQ;IA8oBlB,UAAU,GA9oBQ;IA+oBlB,UAAU,GA/oBQ;IAgpBlB,UAAU,GAhpBQ;IAipBlB,UAAU,GAjpBQ;IAkpBlB,UAAU,GAlpBQ;IAmpBlB,UAAU,GAnpBQ;IAopBlB,UAAU,GAppBQ;IAqpBlB,UAAU,GArpBQ;IAspBlB,UAAU,GAtpBQ;IAupBlB,UAAU,GAvpBQ;IAwpBlB,UAAU,GAxpBQ;IAypBlB,UAAU,GAzpBQ;IA0pBlB,UAAU,GA1pBQ;IA2pBlB,UAAU,GA3pBQ;IA4pBlB,UAAU,GA5pBQ;IA6pBlB,UAAU,GA7pBQ;IA8pBlB,UAAU,IA9pBQ;IA+pBlB,UAAU,IA/pBQ;IAgqBlB,UAAU,IAhqBQ;IAiqBlB,UAAU,GAjqBQ;IAkqBlB,UAAU,GAlqBQ;IAmqBlB,UAAU,GAnqBQ;IAoqBlB,UAAU,GApqBQ;IAqqBlB,UAAU,GArqBQ;IAsqBlB,UAAU,GAtqBQ;IAuqBlB,UAAU,GAvqBQ;IAwqBlB,UAAU,GAxqBQ;IAyqBlB,UAAU,GAzqBQ;IA0qBlB,UAAU,GA1qBQ;IA2qBlB,UAAU,GA3qBQ;IA4qBlB,UAAU,GA5qBQ;IA6qBlB,UAAU,GA7qBQ;IA8qBlB,UAAU,GA9qBQ;IA+qBlB,UAAU,GA/qBQ;IAgrBlB,UAAU,GAhrBQ;IAirBlB,UAAU,GAjrBQ;IAkrBlB,UAAU,GAlrBQ;IAmrBlB,UAAU,GAnrBQ;IAorBlB,UAAU,GAprBQ;IAqrBlB,UAAU,GArrBQ;IAsrBlB,UAAU,GAtrBQ;IAurBlB,UAAU,GAvrBQ;IAwrBlB,UAAU,GAxrBQ;IAyrBlB,UAAU,GAzrBQ;IA0rBlB,UAAU,GA1rBQ;IA2rBlB,UAAU,GA3rBQ;IA4rBlB,UAAU,GA5rBQ;IA6rBlB,UAAU,GA7rBQ;IA8rBlB,UAAU,GA9rBQ;IA+rBlB,UAAU,GA/rBQ;IAgsBlB,UAAU,GAhsBQ;IAisBlB,UAAU,GAjsBQ;IAksBlB,UAAU,GAlsBQ;IAmsBlB,UAAU,GAnsBQ;IAosBlB,UAAU,GApsBQ;IAqsBlB,UAAU,GArsBQ;IAssBlB,UAAU,GAtsBQ;IAusBlB,UAAU,GAvsBQ;IAwsBlB,UAAU,GAxsBQ;IAysBlB,UAAU,GAzsBQ;IA0sBlB,UAAU,GA1sBQ;IA2sBlB,UAAU,GA3sBQ;IA4sBlB,UAAU,GA5sBQ;IA6sBlB,UAAU,GA7sBQ;IA8sBlB,UAAU,GA9sBQ;IA+sBlB,UAAU,GA/sBQ;IAgtBlB,UAAU,GAhtBQ;IAitBlB,UAAU,GAjtBQ;IAktBlB,UAAU,GAltBQ;IAmtBlB,UAAU,GAntBQ;IAotBlB,UAAU,GAptBQ;IAqtBlB,UAAU,GArtBQ;IAstBlB,UAAU,GAttBQ;IAutBlB,UAAU,GAvtBQ;IAwtBlB,UAAU,GAxtBQ;IAytBlB,UAAU,GAztBQ;IA0tBlB,UAAU,GA1tBQ;IA2tBlB,UAAU,GA3tBQ;IA4tBlB,UAAU,GA5tBQ;IA6tBlB,UAAU,GA7tBQ;IA8tBlB,UAAU,GA9tBQ;IA+tBlB,UAAU,IA/tBQ;IAguBlB,UAAU,GAhuBQ;IAiuBlB,UAAU,GAjuBQ;IAkuBlB,UAAU,GAluBQ;IAmuBlB,UAAU,GAnuBQ;IAouBlB,UAAU,GApuBQ;IAquBlB,UAAU,GAruBQ;IAsuBlB,UAAU,GAtuBQ;IAuuBlB,UAAU,GAvuBQ;IAwuBlB,UAAU,GAxuBQ;IAyuBlB,UAAU,GAzuBQ;IA0uBlB,UAAU,GA1uBQ;IA2uBlB,UAAU,GA3uBQ;IA4uBlB,UAAU,GA5uBQ;IA6uBlB,UAAU,GA7uBQ;IA8uBlB,UAAU,GA9uBQ;IA+uBlB,UAAU,GA/uBQ;IAgvBlB,UAAU,GAhvBQ;IAivBlB,UAAU,GAjvBQ;IAkvBlB,UAAU,GAlvBQ;IAmvBlB,UAAU,GAnvBQ;IAovBlB,UAAU,GApvBQ;IAqvBlB,UAAU,GArvBQ;IAsvBlB,UAAU,GAtvBQ;IAuvBlB,UAAU,GAvvBQ;IAwvBlB,UAAU,GAxvBQ;IAyvBlB,UAAU,GAzvBQ;IA0vBlB,UAAU,GA1vBQ;IA2vBlB,UAAU,GA3vBQ;IA4vBlB,UAAU,GA5vBQ;IA6vBlB,UAAU,GA7vBQ;IA8vBlB,UAAU,GA9vBQ;IA+vBlB,UAAU,GA/vBQ;IAgwBlB,UAAU,GAhwBQ;IAiwBlB,UAAU,GAjwBQ;IAkwBlB,UAAU,GAlwBQ;IAmwBlB,UAAU,GAnwBQ;IAowBlB,UAAU,GApwBQ;IAqwBlB,UAAU,GArwBQ;IAswBlB,UAAU,GAtwBQ;IAuwBlB,UAAU,GAvwBQ;IAwwBlB,UAAU,IAxwBQ;IAywBlB,UAAU,GAzwBQ;IA0wBlB,UAAU,GA1wBQ;IA2wBlB,UAAU,GA3wBQ;IA4wBlB,UAAU,GA5wBQ;IA6wBlB,UAAU,GA7wBQ;IA8wBlB,UAAU,GA9wBQ;IA+wBlB,UAAU,GA/wBQ;IAgxBlB,UAAU,GAhxBQ;IAixBlB,UAAU,GAjxBQ;IAkxBlB,UAAU,GAlxBQ;IAmxBlB,UAAU,GAnxBQ;IAoxBlB,UAAU,GApxBQ;IAqxBlB,UAAU,GArxBQ;IAsxBlB,UAAU,GAtxBQ;IAuxBlB,UAAU,GAvxBQ;IAwxBlB,UAAU,GAxxBQ;IAyxBlB,UAAU,GAzxBQ;IA0xBlB,UAAU,GA1xBQ;IA2xBlB,UAAU,GA3xBQ;IA4xBlB,UAAU,GA5xBQ;IA6xBlB,UAAU,GA7xBQ;IA8xBlB,UAAU,GA9xBQ;IA+xBlB,UAAU,GA/xBQ;IAgyBlB,UAAU,GAhyBQ;IAiyBlB,UAAU,GAjyBQ;IAkyBlB,UAAU,GAlyBQ;IAmyBlB,UAAU,GAnyBQ;IAoyBlB,UAAU,GApyBQ;IAqyBlB,UAAU,GAryBQ;IAsyBlB,UAAU,GAtyBQ;IAuyBlB,UAAU,GAvyBQ;IAwyBlB,UAAU,GAxyBQ;IAyyBlB,UAAU,GAzyBQ;IA0yBlB,UAAU,GA1yBQ;IA2yBlB,UAAU,GA3yBQ;IA4yBlB,UAAU,GA5yBQ;IA6yBlB,UAAU,GA7yBQ;IA8yBlB,UAAU,GA9yBQ;IA+yBlB,UAAU,GA/yBQ;IAgzBlB,UAAU,GAhzBQ;IAizBlB,UAAU,GAjzBQ;IAkzBlB,UAAU,GAlzBQ;IAmzBlB,UAAU,QAnzBQ;IAozBlB,UAAU,QApzBQ;IAqzBlB,UAAU,QArzBQ;IAszBlB,UAAU,QAtzBQ;IAuzBlB,UAAU,QAvzBQ;IAwzBlB,UAAU,QAxzBQ;IAyzBlB,UAAU,QAzzBQ;IA0zBlB,UAAU,QA1zBQ;IA2zBlB,UAAU,QA3zBQ;IA4zBlB,UAAU,QA5zBQ;IA6zBlB,UAAU,QA7zBQ;IA8zBlB,UAAU,QA9zBQ;IA+zBlB,UAAU,QA/zBQ;IAg0BlB,UAAU,QAh0BQ;IAi0BlB,UAAU,QAj0BQ;IAk0BlB,UAAU,QAl0BQ;IAm0BlB,UAAU,QAn0BQ;IAo0BlB,UAAU,QAp0BQ;IAq0BlB,UAAU,QAr0BQ;IAs0BlB,UAAU,QAt0BQ;IAu0BlB,UAAU;EAv0BQ,CAAtB;EAy0BAxH,QAAQ,CAACuB,WAAT,GAAuB;IACnB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQiJ,KAAK,EAAE,UAAU5sC,MAAV,EAAkB6sC,QAAlB,EAA4B3J,UAA5B,EAAwCC,YAAxC,EAAsD;MACzD,IAAIA,YAAJ,EAAkB;QACdnjC,MAAM,GAAGoiC,QAAQ,CAACuH,gBAAT,CAA0B3pC,MAA1B,CAAT;QACA6sC,QAAQ,GAAGzK,QAAQ,CAACuH,gBAAT,CAA0BkD,QAA1B,CAAX;MACH;;MACD,IAAI3J,UAAJ,EAAgB;QACZ,OAAOd,QAAQ,CAAC/qC,WAAT,CAAqB2I,MAArB,MAAiCoiC,QAAQ,CAAC/qC,WAAT,CAAqBw1C,QAArB,CAAxC;MACH;;MACD,OAAO7sC,MAAM,KAAK6sC,QAAlB;IACH,CApBkB;;IAqBnB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQC,QAAQ,EAAE,UAAU9sC,MAAV,EAAkB6sC,QAAlB,EAA4B3J,UAA5B,EAAwCC,YAAxC,EAAsD;MAC5D,IAAIA,YAAJ,EAAkB;QACdnjC,MAAM,GAAGoiC,QAAQ,CAACuH,gBAAT,CAA0B3pC,MAA1B,CAAT;QACA6sC,QAAQ,GAAGzK,QAAQ,CAACuH,gBAAT,CAA0BkD,QAA1B,CAAX;MACH;;MACD,OAAO,CAACzK,QAAQ,CAACuB,WAAT,CAAqBiJ,KAArB,CAA2B5sC,MAA3B,EAAmC6sC,QAAnC,EAA6C3J,UAA7C,CAAR;IACH,CApCkB;;IAqCnB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;IACQ6J,QAAQ,EAAE,UAAU/sC,MAAV,EAAkB6sC,QAAlB,EAA4B3J,UAA5B,EAAwC;MAC9C,IAAIA,UAAJ,EAAgB;QACZ,OAAOd,QAAQ,CAAC/qC,WAAT,CAAqB2I,MAArB,IAA+BoiC,QAAQ,CAAC/qC,WAAT,CAAqBw1C,QAArB,CAAtC;MACH;;MACD,IAAIjyD,uEAAiB,CAAColB,MAAD,CAArB,EAA+B;QAC3BA,MAAM,GAAG7nB,SAAT;MACH;;MACD,OAAO6nB,MAAM,GAAG6sC,QAAhB;IACH,CArDkB;;IAsDnB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;IACQG,WAAW,EAAE,UAAUhtC,MAAV,EAAkB6sC,QAAlB,EAA4B3J,UAA5B,EAAwC;MACjD,IAAIA,UAAJ,EAAgB;QACZ,OAAOd,QAAQ,CAAC/qC,WAAT,CAAqB2I,MAArB,IAA+BoiC,QAAQ,CAAC/qC,WAAT,CAAqBw1C,QAArB,CAAtC;MACH;;MACD,OAAO7sC,MAAM,GAAG6sC,QAAhB;IACH,CAnEkB;;IAoEnB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;IACQI,eAAe,EAAE,UAAUjtC,MAAV,EAAkB6sC,QAAlB,EAA4B3J,UAA5B,EAAwC;MACrD,IAAIA,UAAJ,EAAgB;QACZ,OAAOd,QAAQ,CAAC/qC,WAAT,CAAqB2I,MAArB,KAAgCoiC,QAAQ,CAAC/qC,WAAT,CAAqBw1C,QAArB,CAAvC;MACH;;MACD,IAAIjyD,uEAAiB,CAAColB,MAAD,CAArB,EAA+B;QAC3BA,MAAM,GAAG7nB,SAAT;MACH;;MACD,OAAO6nB,MAAM,IAAI6sC,QAAjB;IACH,CApFkB;;IAqFnB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;IACQK,kBAAkB,EAAE,UAAUltC,MAAV,EAAkB6sC,QAAlB,EAA4B3J,UAA5B,EAAwC;MACxD,IAAIA,UAAJ,EAAgB;QACZ,OAAOd,QAAQ,CAAC/qC,WAAT,CAAqB2I,MAArB,KAAgCoiC,QAAQ,CAAC/qC,WAAT,CAAqBw1C,QAArB,CAAvC;MACH;;MACD,OAAO7sC,MAAM,IAAI6sC,QAAjB;IACH,CAlGkB;;IAmGnB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQ/gC,QAAQ,EAAE,UAAU9L,MAAV,EAAkB6sC,QAAlB,EAA4B3J,UAA5B,EAAwCC,YAAxC,EAAsD;MAC5D,IAAIA,YAAJ,EAAkB;QACdnjC,MAAM,GAAGoiC,QAAQ,CAACuH,gBAAT,CAA0B3pC,MAA1B,CAAT;QACA6sC,QAAQ,GAAGzK,QAAQ,CAACuH,gBAAT,CAA0BkD,QAA1B,CAAX;MACH;;MACD,IAAI3J,UAAJ,EAAgB;QACZ,OAAO,CAACtoD,uEAAiB,CAAColB,MAAD,CAAlB,IAA8B,CAACplB,uEAAiB,CAACiyD,QAAD,CAAhD,IACHzK,QAAQ,CAAC/qC,WAAT,CAAqB2I,MAArB,EAA6BnkB,OAA7B,CAAqCumD,QAAQ,CAAC/qC,WAAT,CAAqBw1C,QAArB,CAArC,MAAyE,CAAC,CAD9E;MAEH;;MACD,OAAO,CAACjyD,uEAAiB,CAAColB,MAAD,CAAlB,IAA8B,CAACplB,uEAAiB,CAACiyD,QAAD,CAAhD,IACH7sC,MAAM,CAAC1lB,QAAP,GAAkBuB,OAAlB,CAA0BgxD,QAA1B,MAAwC,CAAC,CAD7C;IAEH,CAvHkB;;IAwHnB;AACR;AACA;AACA;AACA;AACA;AACA;IACQM,cAAc,EAAE,UAAUntC,MAAV,EAAkB6sC,QAAlB,EAA4B3J,UAA5B,EAAwCC,YAAxC,EAAsD;MAClE,IAAIA,YAAJ,EAAkB;QACdnjC,MAAM,GAAGoiC,QAAQ,CAACuH,gBAAT,CAA0B3pC,MAA1B,CAAT;QACA6sC,QAAQ,GAAGzK,QAAQ,CAACuH,gBAAT,CAA0BkD,QAA1B,CAAX;MACH;;MACD,IAAI3J,UAAJ,EAAgB;QACZ,OAAO,CAACtoD,uEAAiB,CAAColB,MAAD,CAAlB,IAA8B,CAACplB,uEAAiB,CAACiyD,QAAD,CAAhD,IACHzK,QAAQ,CAAC/qC,WAAT,CAAqB2I,MAArB,EAA6BnkB,OAA7B,CAAqCumD,QAAQ,CAAC/qC,WAAT,CAAqBw1C,QAArB,CAArC,MAAyE,CAAC,CAD9E;MAEH;;MACD,OAAO,CAACjyD,uEAAiB,CAAColB,MAAD,CAAlB,IAA8B,CAACplB,uEAAiB,CAACiyD,QAAD,CAAhD,IACH7sC,MAAM,CAAC1lB,QAAP,GAAkBuB,OAAlB,CAA0BgxD,QAA1B,MAAwC,CAAC,CAD7C;IAEH,CA1IkB;;IA2InB;AACR;AACA;AACA;AACA;AACA;IACQO,SAAS,EAAE,UAAUptC,MAAV,EAAkB;MACzB,OAAOA,MAAM,KAAK,IAAX,IAAmBA,MAAM,KAAK7nB,SAArC;IACH,CAnJkB;;IAoJnB;AACR;AACA;AACA;AACA;AACA;IACQk1D,MAAM,EAAE,UAAUrtC,MAAV,EAAkB;MACtB,OAAOA,MAAM,KAAK,IAAX,IAAmBA,MAAM,KAAK7nB,SAArC;IACH,CA5JkB;;IA6JnB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQm1D,UAAU,EAAE,UAAUttC,MAAV,EAAkB6sC,QAAlB,EAA4B3J,UAA5B,EAAwCC,YAAxC,EAAsD;MAC9D,IAAIA,YAAJ,EAAkB;QACdnjC,MAAM,GAAGoiC,QAAQ,CAACuH,gBAAT,CAA0B3pC,MAA1B,CAAT;QACA6sC,QAAQ,GAAGzK,QAAQ,CAACuH,gBAAT,CAA0BkD,QAA1B,CAAX;MACH;;MACD,IAAI3J,UAAJ,EAAgB;QACZ,OAAOljC,MAAM,IAAI6sC,QAAV,IAAsBzK,QAAQ,CAACyE,UAAT,CAAoBzE,QAAQ,CAAC/qC,WAAT,CAAqB2I,MAArB,CAApB,EAAkDoiC,QAAQ,CAAC/qC,WAAT,CAAqBw1C,QAArB,CAAlD,CAA7B;MACH;;MACD,OAAO7sC,MAAM,IAAI6sC,QAAV,IAAsBzK,QAAQ,CAACyE,UAAT,CAAoB7mC,MAApB,EAA4B6sC,QAA5B,CAA7B;IACH,CA/KkB;;IAgLnB;AACR;AACA;AACA;AACA;AACA;AACA;IACQU,gBAAgB,EAAE,UAAUvtC,MAAV,EAAkB6sC,QAAlB,EAA4B3J,UAA5B,EAAwCC,YAAxC,EAAsD;MACpE,IAAIA,YAAJ,EAAkB;QACdnjC,MAAM,GAAGoiC,QAAQ,CAACuH,gBAAT,CAA0B3pC,MAA1B,CAAT;QACA6sC,QAAQ,GAAGzK,QAAQ,CAACuH,gBAAT,CAA0BkD,QAA1B,CAAX;MACH;;MACD,IAAI3J,UAAJ,EAAgB;QACZ,OAAOljC,MAAM,IAAI6sC,QAAV,IAAsBzK,QAAQ,CAAC0E,aAAT,CAAuB1E,QAAQ,CAAC/qC,WAAT,CAAqB2I,MAArB,CAAvB,EAAqDoiC,QAAQ,CAAC/qC,WAAT,CAAqBw1C,QAArB,CAArD,CAA7B;MACH;;MACD,OAAO7sC,MAAM,IAAI6sC,QAAV,IAAsBzK,QAAQ,CAAC0E,aAAT,CAAuB9mC,MAAvB,EAA+B6sC,QAA/B,CAA7B;IACH,CAhMkB;;IAiMnB;AACR;AACA;AACA;AACA;AACA;AACA;IACQzF,IAAI,EAAE,UAAUpnC,MAAV,EAAkB6sC,QAAlB,EAA4B3J,UAA5B,EAAwCC,YAAxC,EAAsD;MACxD,IAAIA,YAAJ,EAAkB;QACdnjC,MAAM,GAAGoiC,QAAQ,CAACuH,gBAAT,CAA0B3pC,MAA1B,CAAT;QACA6sC,QAAQ,GAAGzK,QAAQ,CAACuH,gBAAT,CAA0BkD,QAA1B,CAAX;MACH;;MACD,IAAI3J,UAAJ,EAAgB;QACZ,OAAOljC,MAAM,IAAI6sC,QAAV,IAAsBzK,QAAQ,CAACgF,IAAT,CAAchF,QAAQ,CAAC/qC,WAAT,CAAqB2I,MAArB,CAAd,EAA4CoiC,QAAQ,CAAC/qC,WAAT,CAAqBw1C,QAArB,CAA5C,CAA7B;MACH;;MACD,OAAO7sC,MAAM,IAAI6sC,QAAV,IAAsBzK,QAAQ,CAACgF,IAAT,CAAcpnC,MAAd,EAAsB6sC,QAAtB,CAA7B;IACH,CAjNkB;;IAkNnB;AACR;AACA;AACA;AACA;AACA;IACQW,OAAO,EAAE,UAAUxtC,MAAV,EAAkB;MACvB,OAAOA,MAAM,KAAK7nB,SAAX,IAAwB6nB,MAAM,KAAK,EAA1C;IACH,CA1NkB;;IA2NnB;AACR;AACA;AACA;AACA;AACA;IACQytC,UAAU,EAAE,UAAUztC,MAAV,EAAkB;MAC1B,OAAOA,MAAM,KAAK7nB,SAAX,IAAwB6nB,MAAM,KAAK,EAA1C;IACH,CAnOkB;;IAoOnB;AACR;AACA;AACA;AACA;AACA;AACA;IACQ0tC,QAAQ,EAAE,UAAU1tC,MAAV,EAAkB6sC,QAAlB,EAA4B3J,UAA5B,EAAwCC,YAAxC,EAAsD;MAC5D,IAAIA,YAAJ,EAAkB;QACdnjC,MAAM,GAAGoiC,QAAQ,CAACuH,gBAAT,CAA0B3pC,MAA1B,CAAT;QACA6sC,QAAQ,GAAGzK,QAAQ,CAACuH,gBAAT,CAA0BkD,QAA1B,CAAX;MACH;;MACD,IAAI3J,UAAJ,EAAgB;QACZ,OAAO,CAACljC,MAAM,IAAI,OAAOA,MAAP,KAAkB,SAA7B,KAA2C6sC,QAA3C,IAAuD,OAAO7sC,MAAP,KAAkB,QAAzE,IACHoiC,QAAQ,CAAC2E,QAAT,CAAkB3E,QAAQ,CAAC/qC,WAAT,CAAqB2I,MAArB,CAAlB,EAAgDoiC,QAAQ,CAAC/qC,WAAT,CAAqBw1C,QAArB,CAAhD,CADJ;MAEH;;MACD,OAAO,CAAC7sC,MAAM,IAAI,OAAOA,MAAP,KAAkB,SAA7B,KAA2C6sC,QAA3C,IAAuDzK,QAAQ,CAAC2E,QAAT,CAAkB/mC,MAAlB,EAA0B6sC,QAA1B,CAA9D;IACH,CArPkB;;IAsPnB;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACQc,QAAQ,EAAE,UAAU3tC,MAAV,EAAkB6sC,QAAlB,EAA4B3J,UAA5B,EAAwCC,YAAxC,EAAsD;MAC5D,IAAIA,YAAJ,EAAkB;QACdnjC,MAAM,GAAGoiC,QAAQ,CAACuH,gBAAT,CAA0B3pC,MAA1B,CAAT;QACA6sC,QAAQ,GAAGzK,QAAQ,CAACuH,gBAAT,CAA0BkD,QAA1B,CAAX;MACH;;MACD,IAAI3J,UAAJ,EAAgB;QACZ,OAAOljC,MAAM,IAAI6sC,QAAV,IAAsBzK,QAAQ,CAAC8B,QAAT,CAAkB9B,QAAQ,CAAC/qC,WAAT,CAAqB2I,MAArB,CAAlB,EAAgDoiC,QAAQ,CAAC/qC,WAAT,CAAqBw1C,QAArB,CAAhD,CAA7B;MACH;;MACD,OAAO7sC,MAAM,IAAI6sC,QAAV,IAAsBzK,QAAQ,CAAC8B,QAAT,CAAkBlkC,MAAlB,EAA0B6sC,QAA1B,CAA7B;IACH,CAxQkB;;IAyQnB;AACR;AACA;AACA;AACA;AACA;AACA;IACQe,cAAc,EAAE,UAAU5tC,MAAV,EAAkB6sC,QAAlB,EAA4B3J,UAA5B,EAAwCC,YAAxC,EAAsD;MAClE,IAAIA,YAAJ,EAAkB;QACdnjC,MAAM,GAAGoiC,QAAQ,CAACuH,gBAAT,CAA0B3pC,MAA1B,CAAT;QACA6sC,QAAQ,GAAGzK,QAAQ,CAACuH,gBAAT,CAA0BkD,QAA1B,CAAX;MACH;;MACD,IAAI3J,UAAJ,EAAgB;QACZ,OAAOljC,MAAM,IAAI6sC,QAAV,IAAsBzK,QAAQ,CAACwE,WAAT,CAAqBxE,QAAQ,CAAC/qC,WAAT,CAAqB2I,MAArB,CAArB,EAAmDoiC,QAAQ,CAAC/qC,WAAT,CAAqBw1C,QAArB,CAAnD,CAA7B;MACH;;MACD,OAAO7sC,MAAM,IAAI6sC,QAAV,IAAsBzK,QAAQ,CAACwE,WAAT,CAAqB5mC,MAArB,EAA6B6sC,QAA7B,CAA7B;IACH,CAzRkB;;IA0RnB;AACR;AACA;AACA;AACA;AACA;IACQgB,cAAc,EAAE,UAAU5K,QAAV,EAAoB;MAChC,IAAI+G,MAAM,GAAG5H,QAAQ,CAACoK,eAAT,CAAyBvJ,QAAzB,CAAb;;MACA,IAAI+G,MAAJ,EAAY;QACR,IAAInO,EAAE,GAAGuG,QAAQ,CAACuB,WAAT,CAAqBqG,MAArB,CAAT;QACA,OAAOnO,EAAP;MACH;;MACD,OAAOuG,QAAQ,CAACvjD,UAAT,CAAoB,6CAApB,CAAP;IACH,CAvSkB;;IAwSnB;AACR;AACA;AACA;AACA;AACA;IACQ2mD,eAAe,EAAE,UAAUvC,QAAV,EAAoB;MACjC,IAAIpH,EAAE,GAAGuG,QAAQ,CAACuB,WAAT,CAAqBV,QAArB,CAAT;;MACA,IAAIpH,EAAJ,EAAQ;QACJ,OAAOA,EAAP;MACH;;MACD,OAAOuG,QAAQ,CAACuB,WAAT,CAAqBkK,cAArB,CAAoC5K,QAApC,CAAP;IACH;EApTkB,CAAvB;EAsTA;AACJ;AACA;;EACIb,QAAQ,CAAC3nC,KAAT,GAAiB;IACb;AACR;AACA;AACA;AACA;IACQixC,SAAS,EAAE,UAAUoC,QAAV,EAAoB;MAC3B,IAAI,OAAOA,QAAP,KAAoB,QAAxB,EAAkC;QAC9BA,QAAQ,GAAGtzC,IAAI,CAACC,KAAL,CAAWqzC,QAAX,EAAqB1L,QAAQ,CAAC3nC,KAAT,CAAeszC,WAApC,CAAX;MACH,CAFD,MAGK,IAAID,QAAQ,YAAYhyD,KAAxB,EAA+B;QAChCsmD,QAAQ,CAAC3nC,KAAT,CAAeuzC,qBAAf,CAAqCF,QAArC;MACH,CAFI,MAGA,IAAI,OAAOA,QAAP,KAAoB,QAApB,IAAgCA,QAAQ,KAAK,IAAjD,EAAuD;QACxD1L,QAAQ,CAAC3nC,KAAT,CAAewzC,oBAAf,CAAoCH,QAApC;MACH;;MACD,OAAOA,QAAP;IACH,CAjBY;;IAkBb;AACR;AACA;AACA;AACA;AACA;IACQE,qBAAqB,EAAE,UAAUjwD,KAAV,EAAiB;MACpC,KAAK,IAAI5D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4D,KAAK,CAACvE,MAA1B,EAAkCW,CAAC,EAAnC,EAAuC;QACnC,IAAI,OAAO4D,KAAK,CAAC5D,CAAD,CAAZ,KAAoB,QAApB,IAAgC4D,KAAK,CAAC5D,CAAD,CAAL,KAAa,IAAjD,EAAuD;UACnDioD,QAAQ,CAAC3nC,KAAT,CAAewzC,oBAAf,CAAoClwD,KAAK,CAAC5D,CAAD,CAAzC,EADmD,CAEnD;QACH,CAHD,MAIK,IAAI,OAAO4D,KAAK,CAAC5D,CAAD,CAAZ,KAAoB,QAApB,IAAgC,CAAC,6BAA6BoP,IAA7B,CAAkCxL,KAAK,CAAC5D,CAAD,CAAvC,CAArC,EAAkF;UACnF4D,KAAK,CAAC5D,CAAD,CAAL,GAAWioD,QAAQ,CAAC3nC,KAAT,CAAeszC,WAAf,CAA2B,EAA3B,EAA+BhwD,KAAK,CAAC5D,CAAD,CAApC,CAAX;QACH,CAFI,MAGA;UACD4D,KAAK,CAAC5D,CAAD,CAAL,GAAWioD,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyB3tD,KAAK,CAAC5D,CAAD,CAA9B,CAAX;QACH;MACJ;IACJ,CArCY;;IAsCb;AACR;AACA;AACA;AACA;AACA;IACQ8zD,oBAAoB,EAAE,UAAU/H,IAAV,EAAgB;MAClC,IAAInsD,KAAJ;MACA,IAAIS,IAAI,GAAGiB,MAAM,CAACjB,IAAP,CAAY0rD,IAAZ,CAAX;;MACA,KAAK,IAAIvqD,EAAE,GAAG,CAAT,EAAYqC,MAAM,GAAGxD,IAA1B,EAAgCmB,EAAE,GAAGqC,MAAM,CAACxE,MAA5C,EAAoDmC,EAAE,EAAtD,EAA0D;QACtD,IAAI6G,IAAI,GAAGxE,MAAM,CAACrC,EAAD,CAAjB;;QACA,IAAIymD,QAAQ,CAACyE,UAAT,CAAoBrkD,IAApB,EAA0B,IAA1B,CAAJ,EAAqC;UACjC;QACH;;QACDzI,KAAK,GAAGmsD,IAAI,CAAC1jD,IAAD,CAAZ;;QACA,IAAI,OAAOzI,KAAP,KAAiB,QAArB,EAA+B;UAC3B,IAAIA,KAAK,YAAY+B,KAArB,EAA4B;YACxBsmD,QAAQ,CAAC3nC,KAAT,CAAeuzC,qBAAf,CAAqCj0D,KAArC;UACH,CAFD,MAGK,IAAIA,KAAJ,EAAW;YACZqoD,QAAQ,CAAC3nC,KAAT,CAAewzC,oBAAf,CAAoCl0D,KAApC;UACH;QACJ,CAPD,MAQK;UACDmsD,IAAI,CAAC1jD,IAAD,CAAJ,GAAa4/C,QAAQ,CAAC3nC,KAAT,CAAeszC,WAAf,CAA2B7H,IAAI,CAAC1jD,IAAD,CAA/B,EAAuCzI,KAAvC,CAAb;QACH;MACJ;IACJ,CAjEY;;IAkEb;AACR;AACA;AACA;AACA;AACA;AACA;IACQg0D,WAAW,EAAE,UAAUjM,KAAV,EAAiB/nD,KAAjB,EAAwB;MACjC,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;QAC3B;QACA,IAAIm0D,EAAE,GAAG,6CAA6CrpC,IAA7C,CAAkD9qB,KAAlD,CAAT;QACA,IAAIo0D,MAAM,GAAG/L,QAAQ,CAAC+J,gBAAT,GAA4B/J,QAAQ,CAAC8J,oBAArC,GAA4D,IAAzE;;QACA,IAAIgC,EAAJ,EAAQ;UACJ,OAAO9L,QAAQ,CAACgM,SAAT,CAAmBC,UAAnB,CAA8B,IAAIvmD,IAAJ,CAASzN,QAAQ,CAAC6zD,EAAE,CAAC,CAAD,CAAH,EAAQ,EAAR,CAAjB,CAA9B,EAA6DC,MAA7D,EAAqE,IAArE,CAAP,CADI,CAEJ;QACH,CAHD,MAIK,IAAI,sEAAsE5kD,IAAtE,CAA2ExP,KAA3E,CAAJ,EAAuF;UACxF,IAAIu0D,KAAK,GAAGv0D,KAAK,CAAC8B,OAAN,CAAc,GAAd,IAAqB,CAAC,CAAtB,IAA2B9B,KAAK,CAAC8B,OAAN,CAAc,GAAd,IAAqB,CAAC,CAA7D;UACA,IAAImmC,GAAG,GAAGjoC,KAAK,CAACG,KAAN,CAAY,SAAZ,CAAV;;UACA,IAAIo0D,KAAJ,EAAW;YACP,IAAItsB,GAAG,CAAC,CAAD,CAAH,CAAOnmC,OAAP,CAAe,GAAf,IAAsB,CAAC,CAA3B,EAA8B;cAC1B,IAAI0yD,SAAS,GAAGvsB,GAAG,CAAC,CAAD,CAAH,CAAO9nC,KAAP,CAAa,GAAb,CAAhB;cACA8nC,GAAG,CAAC,CAAD,CAAH,GAASusB,SAAS,CAAC,CAAD,CAAlB;cACAvsB,GAAG,CAAC,CAAD,CAAH,GAAS,IAAIl6B,IAAJ,CAAS/N,KAAT,EAAgBy0D,kBAAhB,GAAqCl0D,QAArC,EAAT;YACH,CAJD,MAKK;cACD0nC,GAAG,CAAC,CAAD,CAAH,GAAS,IAAT;YACH;;YACDjoC,KAAK,GAAGqoD,QAAQ,CAACgM,SAAT,CACHC,UADG,CACQ,IAAIvmD,IAAJ,CAASzN,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAjB,EAA+B3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAtD,EAAyD3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAjE,EAA+E3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAvF,EAAqG3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAA7G,EAA2H3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAH,GAASA,GAAG,CAAC,CAAD,CAAZ,GAAkB,IAAnB,EAAyB,EAAzB,CAAnI,EAAiK3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAzK,CADR,EACgMogB,QAAQ,CAAC8J,oBADzM,EAC+N,KAD/N,CAAR;UAEH,CAXD,MAYK;YACD,IAAIuC,SAAS,GAAG,IAAI3mD,IAAJ,CAASzN,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAjB,EAA+B3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAtD,EAAyD3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAjE,EAA+E3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAvF,EAAqG3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAA7G,EAA2H3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAH,GAASA,GAAG,CAAC,CAAD,CAAZ,GAAkB,IAAnB,EAAyB,EAAzB,CAAnI,CAAhB;YACA,IAAI0sB,GAAG,GAAGr0D,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAlB;YACA,IAAI2sB,IAAI,GAAGt0D,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAnB;;YACA,IAAIj3B,KAAK,CAAC2jD,GAAD,CAAL,IAAc3jD,KAAK,CAAC4jD,IAAD,CAAvB,EAA+B;cAC3B,OAAOF,SAAP;YACH;;YACD,IAAI10D,KAAK,CAAC8B,OAAN,CAAc,GAAd,IAAqB,CAAC,CAA1B,EAA6B;cACzB4yD,SAAS,CAACh4C,QAAV,CAAmBg4C,SAAS,CAACxiD,QAAV,KAAuByiD,GAA1C,EAA+CD,SAAS,CAAC73C,UAAV,KAAyB+3C,IAAxE;YACH,CAFD,MAGK;cACDF,SAAS,CAACh4C,QAAV,CAAmBg4C,SAAS,CAACxiD,QAAV,KAAuByiD,GAA1C,EAA+CD,SAAS,CAAC73C,UAAV,KAAyB+3C,IAAxE;YACH;;YACD50D,KAAK,GAAGqoD,QAAQ,CAACgM,SAAT,CACHC,UADG,CACQI,SADR,EACmBrM,QAAQ,CAAC8J,oBAD5B,EACkD,KADlD,CAAR;UAEH;;UACD,IAAI9J,QAAQ,CAAC8J,oBAAT,IAAiC,IAArC,EAA2C;YACvCnyD,KAAK,GAAGqoD,QAAQ,CAACgM,SAAT,CAAmBQ,aAAnB,CAAiC70D,KAAjC,CAAR;UACH;QACJ,CAlCI,MAmCA,IAAI,sBAAsBwP,IAAtB,CAA2BxP,KAA3B,CAAJ,EAAuC;UACxC,IAAIioC,GAAG,GAAGjoC,KAAK,CAACG,KAAN,CAAY,SAAZ,CAAV;UACA,OAAO,IAAI4N,IAAJ,CAASzN,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAjB,EAA+B3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAtD,EAAyD3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAjE,CAAP;QACH;MACJ;;MACD,OAAOjoC,KAAP;IACH,CA3HY;;IA4Hb;AACR;AACA;AACA;AACA;IACQwgB,MAAM,EAAE,UAAUwtC,QAAV,EAAoB;MACxB,IAAI,OAAOA,QAAQ,CAAC,CAAD,CAAf,KAAuB,QAA3B,EAAqC;QACjC,OAAOA,QAAP;MACH;;MACD,OAAO3F,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyB3D,QAAzB,CAAP;IACH,CAtIY;;IAuIb;AACR;AACA;AACA;AACA;IACQ8G,MAAM,EAAE,UAAU90D,KAAV,EAAiB;MACrB;MACA,IAAI0J,KAAK,GAAG,uDAAZ;MACA,IAAI7C,KAAK,GAAG6C,KAAK,CAACohB,IAAN,CAAW9qB,KAAX,CAAZ;MACA,OAAO6G,KAAK,IAAI,IAAhB;IACH,CAjJY;;IAkJb;AACR;AACA;AACA;AACA;AACA;AACA;IACQkuD,QAAQ,EAAE,UAAU/0D,KAAV,EAAiBosC,SAAjB,EAA4B;MAClC,IAAIic,QAAQ,CAACoI,aAAT,CAAuBzwD,KAAvB,CAAJ,EAAmC;QAC/B,OAAOqoD,QAAQ,CAAC3nC,KAAT,CAAes0C,YAAf,CAA4Bh1D,KAA5B,EAAmCosC,SAAnC,CAAP;MACH;;MACD,IAAIpsC,KAAK,YAAY+B,KAArB,EAA4B;QACxB,OAAOsmD,QAAQ,CAAC3nC,KAAT,CAAeu0C,aAAf,CAA6Bj1D,KAA7B,CAAP;MACH;;MACD,IAAIA,KAAK,YAAY+N,IAArB,EAA2B;QACvB,OAAOs6C,QAAQ,CAAC3nC,KAAT,CAAes0C,YAAf,CAA4B;UAAExrD,GAAG,EAAExJ;QAAP,CAA5B,EAA4CosC,SAA5C,EAAuD5iC,GAA9D;MACH;;MACD,OAAOxJ,KAAP;IACH,CApKY;;IAqKb;AACR;AACA;AACA;AACA;AACA;AACA;AACA;IACQg1D,YAAY,EAAE,UAAUxrD,GAAV,EAAe4iC,SAAf,EAA0B;MACpC,IAAIpsC,KAAJ;MACA,IAAIS,IAAI,GAAGiB,MAAM,CAACjB,IAAP,CAAY+I,GAAZ,CAAX;;MACA,KAAK,IAAI5H,EAAE,GAAG,CAAT,EAAYszD,MAAM,GAAGz0D,IAA1B,EAAgCmB,EAAE,GAAGszD,MAAM,CAACz1D,MAA5C,EAAoDmC,EAAE,EAAtD,EAA0D;QACtD,IAAI6G,IAAI,GAAGysD,MAAM,CAACtzD,EAAD,CAAjB;QACA5B,KAAK,GAAGwJ,GAAG,CAACf,IAAD,CAAX;;QACA,IAAI,EAAEzI,KAAK,YAAY+N,IAAnB,CAAJ,EAA8B;UAC1B;QACH;;QACD,IAAIxB,CAAC,GAAGvM,KAAR;;QACA,IAAIqoD,QAAQ,CAAC8J,oBAAT,IAAiC,IAArC,EAA2C;UACvC3oD,GAAG,CAACf,IAAD,CAAH,GAAY4/C,QAAQ,CAACgM,SAAT,CAAmBC,UAAnB,CAA8B/nD,CAA9B,EAAiC,IAAjC,EAAuC4oD,MAAvC,EAAZ;QACH,CAFD,MAGK;UACD5oD,CAAC,GAAG,IAAIwB,IAAJ,CAAS,CAACxB,CAAD,GAAK87C,QAAQ,CAAC8J,oBAAT,GAAgC,OAA9C,CAAJ;UACA3oD,GAAG,CAACf,IAAD,CAAH,GAAY4/C,QAAQ,CAACgM,SAAT,CAAmBC,UAAnB,CAA8BjM,QAAQ,CAACgM,SAAT,CAAmBQ,aAAnB,CAAiCtoD,CAAjC,CAA9B,EAAmE,IAAnE,EAAyE4oD,MAAzE,EAAZ;QACH;MACJ;;MACD,OAAO3rD,GAAP;IACH,CAhMY;;IAiMb;AACR;AACA;AACA;AACA;AACA;AACA;IACQyrD,aAAa,EAAE,UAAUzrD,GAAV,EAAe;MAC1B,KAAK,IAAIpJ,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGoJ,GAAG,CAAC/J,MAAxB,EAAgCW,CAAC,EAAjC,EAAqC;QACjC,IAAIioD,QAAQ,CAACoI,aAAT,CAAuBjnD,GAAG,CAACpJ,CAAD,CAA1B,CAAJ,EAAoC;UAChCoJ,GAAG,CAACpJ,CAAD,CAAH,GAASioD,QAAQ,CAAC3nC,KAAT,CAAes0C,YAAf,CAA4BxrD,GAAG,CAACpJ,CAAD,CAA/B,CAAT;QACH,CAFD,MAGK,IAAIoJ,GAAG,CAACpJ,CAAD,CAAH,YAAkB2N,IAAtB,EAA4B;UAC7BvE,GAAG,CAACpJ,CAAD,CAAH,GAASioD,QAAQ,CAAC3nC,KAAT,CAAes0C,YAAf,CAA4B;YAAE1nD,IAAI,EAAE9D,GAAG,CAACpJ,CAAD;UAAX,CAA5B,EAA8CkN,IAAvD;QACH;MACJ;;MACD,OAAO9D,GAAP;IACH,CAlNY;;IAmNb;AACR;AACA;AACA;AACA;AACA;AACA;;IACQ;;IACA;IACA4rD,gBAAgB,EAAE,UAAUx0D,GAAV,EAAeZ,KAAf,EAAsB;MACpC;MACA,IAAIY,GAAG,KAAK,OAAR,IAAmBZ,KAAvB,EAA8B;QAC1B,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;UAC3B;UACA,IAAIm0D,EAAE,GAAG,6CAA6CrpC,IAA7C,CAAkD9qB,KAAlD,CAAT;;UACA,IAAIm0D,EAAJ,EAAQ;YACJn0D,KAAK,GAAGqoD,QAAQ,CAACgM,SAAT,CAAmBC,UAAnB,CAA8B,IAAIvmD,IAAJ,CAASzN,QAAQ,CAAC6zD,EAAE,CAAC,CAAD,CAAH,EAAQ,EAAR,CAAjB,CAA9B,EAA6D,IAA7D,EAAmE,IAAnE,CAAR,CADI,CAEJ;UACH,CAHD,MAIK,IAAI,sEAAsE3kD,IAAtE,CAA2ExP,KAA3E,CAAJ,EAAuF;YACxF,IAAIioC,GAAG,GAAGjoC,KAAK,CAACG,KAAN,CAAY,QAAZ,CAAV;YACAH,KAAK,GAAGqoD,QAAQ,CAACgM,SAAT,CACHC,UADG,CACQ,IAAIvmD,IAAJ,CAASzN,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAjB,EAA+B3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAR,GAAuB,CAAtD,EAAyD3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAjE,EAA+E3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAvF,EAAqG3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAA7G,EAA2H3nC,QAAQ,CAAC2nC,GAAG,CAAC,CAAD,CAAJ,EAAS,EAAT,CAAnI,CADR,EAC0J,IAD1J,EACgK,IADhK,CAAR;UAEH;QACJ;;QACD,IAAIjoC,KAAK,YAAY+N,IAArB,EAA2B;UACvB/N,KAAK,GAAGqoD,QAAQ,CAACgM,SAAT,CAAmBQ,aAAnB,CAAiC70D,KAAjC,CAAR;;UACA,IAAIqoD,QAAQ,CAAC8J,oBAAT,KAAkC,IAAtC,EAA4C;YACxC,OAAO9J,QAAQ,CAACgM,SAAT,CAAmBC,UAAnB,CAA8BjM,QAAQ,CAACgM,SAAT,CAAmBQ,aAAnB,CAAiC70D,KAAjC,CAA9B,EAAuE,IAAvE,EAA6Em1D,MAA7E,EAAP;UACH,CAFD,MAGK;YACDn1D,KAAK,GAAGqoD,QAAQ,CAACgM,SAAT,CAAmBC,UAAnB,CAA8Bt0D,KAA9B,EAAwCA,KAAK,CAACsS,iBAAN,KAA4B,EAA7B,GAAmC,CAApC,GACxC+1C,QAAQ,CAAC8J,oBADP,EAC8B,KAD9B,CAAR;YAEA,OAAOnyD,KAAK,CAACm1D,MAAN,EAAP;UACH;QACJ;MACJ;;MACD,OAAOn1D,KAAP;IACH;EAzPY,CAAjB;EA2PA;AACJ;AACA;;EACIqoD,QAAQ,CAACgM,SAAT,GAAqB;IACjBQ,aAAa,EAAE,UAAUjI,KAAV,EAAiB;MAC5B,OAAO,IAAI7+C,IAAJ,CAAS,CAAC6+C,KAAD,GAAUA,KAAK,CAACt6C,iBAAN,KAA4B,KAA/C,CAAP;IACH,CAHgB;IAIjB+iD,KAAK,EAAE,UAAUzI,KAAV,EAAiB;MACpB,OAAO,IAAI7+C,IAAJ,CAAS,CAAC6+C,KAAD,GAAUA,KAAK,CAACt6C,iBAAN,KAA4B,KAA/C,CAAP;IACH,CANgB;IAOjBgiD,UAAU,EAAE,UAAU1H,KAAV,EAAiBlsB,MAAjB,EAAyB40B,GAAzB,EAA8B;MACtC,IAAI50B,MAAM,KAAK,IAAf,EAAqB;QACjB,OAAOksB,KAAP;MACH;;MACD,IAAI2I,IAAI,GAAGD,GAAG,GAAGjN,QAAQ,CAACgM,SAAT,CAAmBgB,KAAnB,CAAyBzI,KAAzB,CAAH,GAAqCA,KAAnD;MACA,OAAO,IAAI7+C,IAAJ,CAAS,CAACwnD,IAAD,GAAS70B,MAAM,GAAG,OAA3B,CAAP;IACH,CAbgB;IAcjB80B,WAAW,EAAE,UAAU5I,KAAV,EAAiB;MAC1B,IAAI6I,MAAM,GAAG7I,KAAb;MACA,IAAI77C,QAAQ,GAAG,CAAC0kD,MAAM,CAACnjD,iBAAP,EAAhB;MACA,IAAIojD,gBAAgB,GAAG3kD,QAAQ,IAAI,CAAZ,GAAgB,GAAhB,GAAsB,GAA7C;;MACA,IAAI4kD,WAAW,GAAG,UAAU/2D,GAAV,EAAe;QAC7B,IAAIg3D,IAAI,GAAG3pD,IAAI,CAACC,KAAL,CAAWD,IAAI,CAACkH,GAAL,CAASvU,GAAT,CAAX,CAAX;QACA,OAAO,CAACg3D,IAAI,GAAG,EAAP,GAAY,GAAZ,GAAkB,EAAnB,IAAyBA,IAAhC;MACH,CAHD;;MAIA,IAAIpsD,GAAG,GAAGisD,MAAM,CAAC5pD,WAAP,KAAuB,GAAvB,GAA6B8pD,WAAW,CAACF,MAAM,CAAC9pD,QAAP,KAAoB,CAArB,CAAxC,GAAkE,GAAlE,GAAwEgqD,WAAW,CAACF,MAAM,CAAChqD,OAAP,EAAD,CAAnF,GACN,GADM,GACAkqD,WAAW,CAACF,MAAM,CAACvjD,QAAP,EAAD,CADX,GAEN,GAFM,GAEAyjD,WAAW,CAACF,MAAM,CAAC54C,UAAP,EAAD,CAFX,GAGN,GAHM,GAGA84C,WAAW,CAACF,MAAM,CAACI,UAAP,EAAD,CAHX,GAINH,gBAJM,GAIaC,WAAW,CAAC5kD,QAAQ,GAAG,EAAZ,CAJxB,GAKN,GALM,GAKA4kD,WAAW,CAAC5kD,QAAQ,GAAG,EAAZ,CALrB;MAMA,OAAOvH,GAAP;IACH;EA7BgB,CAArB;EA+BA,OAAO6+C,QAAP;AACH,CAn0EuC,EAAxC;;AAq0EA,IAAIzrB,SAAS,GAAIx+B,MAAD,IAAuC,YAAY;EAC/D,IAAIy+B,aAAa,GAAG,UAAUtwB,CAAV,EAAaF,CAAb,EAAgB;IAChCwwB,aAAa,GAAGn7B,MAAM,CAACo7B,cAAP,IACX;MAAEC,SAAS,EAAE;IAAb,aAA6Bh7B,KAA7B,IAAsC,UAAUwK,CAAV,EAAaF,CAAb,EAAgB;MAAEE,CAAC,CAACwwB,SAAF,GAAc1wB,CAAd;IAAkB,CAD/D,IAEZ,UAAUE,CAAV,EAAaF,CAAb,EAAgB;MAAE,KAAK,IAAIoK,CAAT,IAAcpK,CAAd,EAAiB,IAAIA,CAAC,CAAClJ,cAAF,CAAiBsT,CAAjB,CAAJ,EAAyBlK,CAAC,CAACkK,CAAD,CAAD,GAAOpK,CAAC,CAACoK,CAAD,CAAR;IAAc,CAF9E;;IAGA,OAAOomB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAApB;EACH,CALD;;EAMA,OAAO,UAAUE,CAAV,EAAaF,CAAb,EAAgB;IACnBwwB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAAb;;IACA,SAAS2wB,EAAT,GAAc;MAAE,KAAK97B,WAAL,GAAmBqL,CAAnB;IAAuB;;IACvCA,CAAC,CAACjO,SAAF,GAAc+N,CAAC,KAAK,IAAN,GAAa3K,MAAM,CAACg7B,MAAP,CAAcrwB,CAAd,CAAb,IAAiC2wB,EAAE,CAAC1+B,SAAH,GAAe+N,CAAC,CAAC/N,SAAjB,EAA4B,IAAI0+B,EAAJ,EAA7D,CAAd;EACH,CAJD;AAKH,CAZqD,EAAtD;;AAaA,IAAI84B,QAAQ,GAAG;EAAEnJ,SAAS,EAAE;AAAb,CAAf;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAIoJ,OAAO;AAAG;AAAyB,YAAY;EAC/C;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACI,SAASA,OAAT,CAAiBrG,EAAjB,EAAqB;IACjB;IACA,KAAKx+C,OAAL,GAAe;MACXi2C,IAAI,EAAE,OADK;MAEX6O,WAAW,EAAE,MAFF;MAGXnM,MAAM,EAAE,QAHG;MAIXn2B,MAAM,EAAE,QAJG;MAKXm3B,IAAI,EAAE,MALK;MAMXN,KAAK,EAAE,OANI;MAOXI,IAAI,EAAE,MAPK;MAQXnB,MAAM,EAAE,QARG;MASX4E,KAAK,EAAE,gBATI;MAUXpF,KAAK,EAAE,OAVI;MAWX4E,UAAU,EAAE,YAXD;MAYX9E,MAAM,EAAE;IAZG,CAAf;IAcA;AACR;AACA;AACA;AACA;;IACQ,KAAK/4C,IAAL,GAAYgmD,OAAZ;IACA,KAAKE,UAAL,GAAkBvG,EAAlB;IACA,KAAKwG,GAAL,GAAW,EAAX;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIH,OAAO,CAACz3D,SAAR,CAAkB63D,eAAlB,GAAoC,UAAU32D,IAAV,EAAgBkwD,EAAhB,EAAoB3E,KAApB,EAA2B4F,GAA3B,EAAgC;IAChE,OAAOnxD,IAAP;EACH,CAFD;;EAGA,OAAOu2D,OAAP;AACH,CAlDsC,EAAvC;AAmDA;AACA;AACA;AACA;AACA;;;AACA,IAAIK,WAAW;AAAG;AAAyB,UAAU34B,MAAV,EAAkB;EACzDb,SAAS,CAACw5B,WAAD,EAAc34B,MAAd,CAAT;;EACA,SAAS24B,WAAT,GAAuB;IACnB,OAAO34B,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACj/B,KAAP,CAAa,IAAb,EAAmB+D,SAAnB,CAAnB,IAAoD,IAA3D;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACI6zD,WAAW,CAAC93D,SAAZ,CAAsB+3D,YAAtB,GAAqC,UAAUpO,WAAV,EAAuB8C,KAAvB,EAA8B;IAC/D,IAAIzoD,MAAM,GAAG2lD,WAAW,CAACgO,UAAZ,CAAuB9J,IAAvB,CAA4B1mD,KAA5B,CAAkC,CAAlC,CAAb;IACA,IAAI2oD,KAAK,GAAG9rD,MAAM,CAAC7C,MAAnB;IACA,IAAI62D,QAAQ,GAAG,IAAf;IACA,IAAIvuD,GAAJ;IACA,IAAInH,GAAJ;IACA,IAAIknD,QAAQ,GAAG,EAAf;IACA,IAAIyO,QAAQ,GAAG,CAAf;IACA,IAAIhM,KAAK,GAAG,EAAZ;IACA,IAAIC,IAAJ;;IACA,KAAK,IAAIpqD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2qD,KAAK,CAACjD,QAAN,CAAeroD,MAAnC,EAA2CW,CAAC,EAA5C,EAAgD;MAC5Cm2D,QAAQ;MACRzO,QAAQ,CAACiD,KAAK,CAACjD,QAAN,CAAe1nD,CAAf,EAAkBQ,GAAnB,CAAR,GAAkCmqD,KAAK,CAACjD,QAAN,CAAe1nD,CAAf,EAAkBJ,KAApD;IACH;;IACD,IAAIw2D,GAAG,GAAG,EAAV;;IACA,KAAK,IAAIp2D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2qD,KAAK,CAACxD,OAAN,CAAc9nD,MAAlC,EAA0CW,CAAC,EAA3C,EAA+C;MAC3CQ,GAAG,GAAGmqD,KAAK,CAACxD,OAAN,CAAcnnD,CAAd,CAAN;;MACA,IAAI,CAACQ,GAAG,CAACkhD,EAAJ,KAAW,QAAX,IAAuBlhD,GAAG,CAACkhD,EAAJ,KAAW,SAAnC,KAAiDiJ,KAAK,CAACjD,QAAN,CAAeroD,MAApE,EAA4E;QACxE,IAAImB,GAAG,CAACkhD,EAAJ,KAAW,SAAf,EAA0B;UACtByI,KAAK,CAACrmD,IAAN,CAAWtD,GAAG,CAACqE,CAAf;QACH;;QACD,IAAIrE,GAAG,CAACkhD,EAAJ,KAAW,QAAf,EAAyB;UACrB0I,IAAI,GAAG5pD,GAAG,CAACqE,CAAX;QACH;;QACD;MACH;;MACD8C,GAAG,GAAG,KAAKnH,GAAG,CAACkhD,EAAT,EAAav9C,IAAb,CAAkB,IAAlB,EAAwBjC,MAAxB,EAAgC1B,GAAG,CAACqE,CAApC,EAAuC8lD,KAAvC,CAAN;;MACA,IAAInqD,GAAG,CAACkhD,EAAJ,KAAW,cAAf,EAA+B;QAC3B0U,GAAG,CAAC51D,GAAG,CAACqE,CAAJ,CAAM8iD,KAAN,GAAc,KAAd,GAAsBnnD,GAAG,CAACqE,CAAJ,CAAM8K,IAA7B,CAAH,GAAwChI,GAAxC;MACH,CAFD,MAGK;QACDzF,MAAM,GAAGyF,GAAG,KAAK3J,SAAR,GAAoB2J,GAApB,GAA0BzF,MAAnC;MACH;;MACD,IAAI1B,GAAG,CAACkhD,EAAJ,KAAW,QAAX,IAAuBlhD,GAAG,CAACkhD,EAAJ,KAAW,QAAlC,IAA8ClhD,GAAG,CAACkhD,EAAJ,KAAW,QAAzD,IAAqElhD,GAAG,CAACkhD,EAAJ,KAAW,SAApF,EAA+F;QAC3FwU,QAAQ,GAAG,KAAX;MACH;;MACD,IAAIA,QAAJ,EAAc;QACVlI,KAAK,GAAG9rD,MAAM,CAAC7C,MAAf;MACH;IACJ;;IACD,IAAI82D,QAAJ,EAAc;MACV,IAAI5yD,IAAI,GAAG;QACPonD,KAAK,EAAEA,KADA;QACOjD,QAAQ,EAAEA,QADjB;QAC2BxlD,MAAM,EAAEA,MADnC;QAC2CioD,KAAK,EAAEA,KADlD;QACyDC,IAAI,EAAEA;MAD/D,CAAX;MAGA,IAAIiM,YAAY,GAAG,KAAKC,aAAL,CAAmB/yD,IAAnB,CAAnB;MACArB,MAAM,GAAGm0D,YAAY,CAACn0D,MAAtB;MACA8rD,KAAK,GAAGqI,YAAY,CAACrI,KAArB;IACH;;IACD,IAAIrD,KAAK,CAACtC,eAAV,EAA2B;MACvBnmD,MAAM,GAAG;QACLA,MAAM,EAAEA,MADH;QAEL8rD,KAAK,EAAEA,KAFF;QAGLR,UAAU,EAAE4I;MAHP,CAAT;IAKH;;IACD,OAAOl0D,MAAP;EACH,CAxDD;EAyDA;AACJ;AACA;AACA;AACA;;;EACI8zD,WAAW,CAAC93D,SAAZ,CAAsBo4D,aAAtB,GAAsC,UAAU/yD,IAAV,EAAgB;IAClD,IAAIyqD,KAAK,GAAG,CAAZ;IACA,IAAIoI,GAAG,GAAG,KAAKG,YAAL,CAAkBhzD,IAAI,CAAConD,KAAvB,CAAV;IACA,IAAIzoD,MAAM,GAAGqB,IAAI,CAACrB,MAAlB;;IACA,IAAI,CAACzB,uEAAiB,CAAC8C,IAAI,CAACmkD,QAAL,CAAc8O,iBAAf,CAAtB,EAAyD;MACrD,IAAIrG,GAAG,GAAG5sD,IAAI,CAACmkD,QAAL,CAAc8O,iBAAxB;;MACA,KAAK,IAAIx2D,CAAC,GAAGmwD,GAAG,CAACvH,KAAJ,CAAUvpD,MAAV,GAAmB,CAAhC,EAAmCW,CAAC,IAAI,CAAxC,EAA2CA,CAAC,EAA5C,EAAgD;QAC5CkC,MAAM,GAAG,KAAKu0D,OAAL,CAAav0D,MAAb,EAAqBiuD,GAAG,CAACvH,KAAJ,CAAU5oD,CAAV,CAArB,CAAT;MACH;;MACD,IAAIuD,IAAI,CAAC4mD,KAAL,CAAW9qD,MAAX,KAAsB8wD,GAAG,CAAC1C,KAA9B,EAAqC;QACjC,IAAI9F,KAAK,GAAGpkD,IAAI,CAAC4mD,KAAL,CAAWgG,GAAG,CAAC1C,KAAf,EAAsB5E,SAAlC;QACA3mD,MAAM,GAAG+lD,QAAQ,CAACkC,KAAT,CAAejoD,MAAf,EAAuBylD,KAAvB,EAA8ByO,GAA9B,EAAmC,IAAnC,EAAyC,IAAzC,EAA+C7yD,IAAI,CAAC4mD,KAAL,CAAW,CAAX,EAAcZ,QAA7D,EAAuE,IAAvE,CAAT;MACH;;MACDyE,KAAK,GAAG9rD,MAAM,CAAC7C,MAAf;MACA,IAAID,IAAI,GAAG8C,MAAX;MACAA,MAAM,GAAGA,MAAM,CAACmD,KAAP,CAAa8qD,GAAG,CAAC1F,IAAjB,CAAT;MACAvoD,MAAM,GAAGA,MAAM,CAACmD,KAAP,CAAa,CAAb,EAAgB8qD,GAAG,CAAC5F,IAApB,CAAT;;MACA,IAAIhnD,IAAI,CAAC4mD,KAAL,CAAW9qD,MAAX,KAAsB8wD,GAAG,CAAC1C,KAA9B,EAAqC;QACjC,KAAKiJ,eAAL,CAAqBx0D,MAArB,EAA6B9C,IAA7B;MACH;IACJ,CAhBD,MAiBK;MACD,IAAIuoD,KAAK,GAAGpkD,IAAI,CAAC4mD,KAAL,CAAW,CAAX,EAActB,SAA1B;MACA3mD,MAAM,GAAG+lD,QAAQ,CAACkC,KAAT,CAAejoD,MAAf,EAAuBylD,KAAvB,EAA8ByO,GAA9B,EAAmC,IAAnC,EAAyC,IAAzC,EAA+C7yD,IAAI,CAAC4mD,KAAL,CAAW,CAAX,EAAcZ,QAA7D,EAAuE,IAAvE,CAAT;MACAyE,KAAK,GAAG9rD,MAAM,CAAC7C,MAAf;MACA,IAAID,IAAI,GAAG8C,MAAX;;MACA,IAAIqB,IAAI,CAAC6mD,IAAT,EAAe;QACXloD,MAAM,GAAG,KAAKy0D,MAAL,CAAYz0D,MAAZ,EAAoBqB,IAAI,CAAC6mD,IAAzB,EAA+B7mD,IAAI,CAAConD,KAApC,CAAT;MACH;;MACD,KAAK+L,eAAL,CAAqBx0D,MAArB,EAA6B9C,IAA7B;IACH;;IACD,OAAO;MAAE8C,MAAM,EAAEA,MAAV;MAAkB8rD,KAAK,EAAEA;IAAzB,CAAP;EACH,CAhCD;;EAiCAgI,WAAW,CAAC93D,SAAZ,CAAsBw4D,eAAtB,GAAwC,UAAUx0D,MAAV,EAAkB9C,IAAlB,EAAwB;IAC5D,IAAI8C,MAAM,CAAC7C,MAAP,IAAiBD,IAAI,CAACC,MAA1B,EAAkC;MAC9B,IAAI7B,GAAG,GAAG,WAAV;MACA,IAAIo5D,UAAU,GAAG,aAAjB;MACA,IAAInJ,KAAK,GAAG,OAAZ;MACA,IAAIW,OAAO,GAAG,SAAd;MACAlsD,MAAM,CAAC1E,GAAD,CAAN,GAAc4B,IAAI,CAAC5B,GAAD,CAAlB;MACA0E,MAAM,CAAC00D,UAAD,CAAN,GAAqBx3D,IAAI,CAACw3D,UAAD,CAAzB;MACA10D,MAAM,CAACurD,KAAD,CAAN,GAAgBruD,IAAI,CAACquD,KAAD,CAApB;MACAvrD,MAAM,CAACksD,OAAD,CAAN,GAAkBhvD,IAAI,CAACgvD,OAAD,CAAtB;IACH;;IACD,OAAOlsD,MAAP;EACH,CAZD;EAaA;AACJ;AACA;AACA;AACA;;;EACI8zD,WAAW,CAAC93D,SAAZ,CAAsBq4D,YAAtB,GAAqC,UAAU5L,KAAV,EAAiB;IAClD,IAAIkM,QAAQ,GAAG/P,KAAK,CAACmD,aAAN,CAAoBU,KAAK,CAACxD,OAA1B,EAAmC,cAAnC,CAAf;IACA,IAAIiP,GAAG,GAAG,EAAV;;IACA,IAAIS,QAAQ,CAACx3D,MAAb,EAAqB;MACjB,IAAI4xD,GAAG,GAAG,KAAK,CAAf;;MACA,KAAK,IAAIjxD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG62D,QAAQ,CAACx3D,MAA7B,EAAqCW,CAAC,EAAtC,EAA0C;QACtCixD,GAAG,GAAG4F,QAAQ,CAAC72D,CAAD,CAAR,CAAY6E,CAAlB;QACAuxD,GAAG,CAACtyD,IAAJ,CAAS;UAAE6L,IAAI,EAAEshD,GAAG,CAACthD,IAAZ;UAAkBg4C,KAAK,EAAEM,QAAQ,CAACxoD,QAAT,CAAkBwxD,GAAG,CAACtJ,KAAtB,EAA6BgD,KAA7B;QAAzB,CAAT;MACH;IACJ;;IACD,OAAOyL,GAAP;EACH,CAXD;EAYA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACIJ,WAAW,CAAC93D,SAAZ,CAAsB44D,YAAtB,GAAqC,UAAU5G,EAAV,EAAc6G,OAAd,EAAuBlyD,CAAvB,EAA0B;IAC3D,IAAI7E,CAAJ;IACA,IAAIg3D,iBAAiB,GAAGD,OAAO,CAACE,cAAR,CAAuB53D,MAA/C;;IACA,KAAKW,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+2D,OAAO,CAACG,YAAR,CAAqB73D,MAArC,EAA6CW,CAAC,EAA9C,EAAkD;MAC9C,KAAKm3D,MAAL,CAAYjH,EAAZ,EAAgB6G,OAAO,CAACG,YAAR,CAAqBl3D,CAArB,CAAhB;IACH;;IACD,KAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAG+2D,OAAO,CAACK,cAAR,CAAuB/3D,MAAvC,EAA+CW,CAAC,EAAhD,EAAoD;MAChD,KAAKq3D,MAAL,CAAYnH,EAAZ,EAAgBrrD,CAAC,CAACrE,GAAlB,EAAuBu2D,OAAO,CAACK,cAAR,CAAuBp3D,CAAvB,CAAvB;IACH;;IACD,KAAKA,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGg3D,iBAAhB,EAAmCh3D,CAAC,EAApC,EAAwC;MACpC,KAAKgwB,MAAL,CAAYkgC,EAAZ,EAAgBrrD,CAAC,CAACrE,GAAlB,EAAuBu2D,OAAO,CAACE,cAAR,CAAuBj3D,CAAvB,CAAvB;IACH;;IACD,OAAO+2D,OAAP;EACH,CAbD;EAcA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACIf,WAAW,CAAC93D,SAAZ,CAAsBu4D,OAAtB,GAAgC,UAAUnH,EAAV,EAAczqD,CAAd,EAAiB;IAC7C,IAAI,CAACyqD,EAAD,IAAO,CAACA,EAAE,CAACjwD,MAAf,EAAuB;MACnB,OAAOiwD,EAAP;IACH;;IACD,OAAOA,EAAE,CAACh4B,MAAH,CAAU,UAAU33B,GAAV,EAAe;MAC5B,IAAIkF,CAAJ,EAAO;QACH,OAAOA,CAAC,CAAC+gC,QAAF,CAAWjmC,GAAX,CAAP;MACH;IACJ,CAJM,CAAP;EAKH,CATD;EAUA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIq2D,WAAW,CAAC93D,SAAZ,CAAsBo5D,YAAtB,GAAqC,UAAUhI,EAAV,EAAczqD,CAAd,EAAiB;IAClD,IAAI68C,EAAE,GAAGuG,QAAQ,CAACuF,UAAT,CAAoB3oD,CAAC,CAAC8K,IAAtB,CAAT;;IACA,IAAI,CAAC2/C,EAAD,IAAO,CAAC5N,EAAR,IAAc4N,EAAE,CAACjwD,MAAH,KAAc,CAAhC,EAAmC;MAC/B,OAAO,IAAP;IACH;;IACD,OAAOqiD,EAAE,CAAC4N,EAAD,EAAKzqD,CAAC,CAAC8iD,KAAP,CAAT;EACH,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;;;EACIqO,WAAW,CAAC93D,SAAZ,CAAsBq5D,QAAtB,GAAiC,UAAUjI,EAAV,EAAczqD,CAAd,EAAiB;IAC9C,IAAI,CAACyqD,EAAD,IAAO,CAACA,EAAE,CAACjwD,MAAf,EAAuB;MACnB,OAAOiwD,EAAP;IACH;;IACD,IAAIzqD,CAAC,CAACykD,UAAF,CAAajqD,MAAb,KAAwB,CAA5B,EAA+B;MAC3B4oD,QAAQ,CAAC+G,YAAT,CAAsBM,EAAE,CAAC,CAAD,CAAxB,EAA6BzqD,CAAC,CAACykD,UAA/B;IACH;;IACD,OAAOgG,EAAE,CAACh4B,MAAH,CAAU,UAAU33B,GAAV,EAAe;MAC5B,KAAK,IAAI8M,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG5H,CAAC,CAACykD,UAAF,CAAajqD,MAAjC,EAAyCoN,CAAC,EAA1C,EAA8C;QAC1C,IAAI5H,CAAC,CAAC0kD,QAAF,CAAWplD,IAAX,CAAgBxE,GAAhB,EAAqBsoD,QAAQ,CAAClwB,SAAT,CAAmBlzB,CAAC,CAACykD,UAAF,CAAa78C,CAAb,CAAnB,EAAoC9M,GAApC,CAArB,EAA+DkF,CAAC,CAACwkD,SAAjE,EAA4ExkD,CAAC,CAACkkD,UAA9E,EAA0FlkD,CAAC,CAACmkD,YAA5F,CAAJ,EAA+G;UAC3G,OAAO,IAAP;QACH;MACJ;;MACD,OAAO,KAAP;IACH,CAPM,CAAP;EAQH,CAfD;EAgBA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIgN,WAAW,CAAC93D,SAAZ,CAAsBs5D,QAAtB,GAAiC,UAAUlI,EAAV,EAAczqD,CAAd,EAAiB8lD,KAAjB,EAAwB;IACrD,IAAI,CAAC2E,EAAD,IAAO,CAACA,EAAE,CAACjwD,MAAf,EAAuB;MACnB,OAAOiwD,EAAP;IACH;;IACD,IAAImI,SAAJ;IACA,IAAI9P,KAAK,GAAGM,QAAQ,CAACxoD,QAAT,CAAkBoF,CAAC,CAACgkD,SAApB,EAA+B8B,KAA/B,CAAZ;;IACA,IAAI,CAAChD,KAAL,EAAY;MACR,OAAO2H,EAAE,CAACD,IAAH,CAAQxqD,CAAC,CAAC0kD,QAAV,CAAP;IACH;;IACD,IAAI5B,KAAK,YAAYhmD,KAArB,EAA4B;MACxBgmD,KAAK,GAAGA,KAAK,CAACtiD,KAAN,CAAY,CAAZ,CAAR;;MACA,KAAK,IAAIrF,CAAC,GAAG2nD,KAAK,CAACtoD,MAAN,GAAe,CAA5B,EAA+BW,CAAC,IAAI,CAApC,EAAuCA,CAAC,EAAxC,EAA4C;QACxC,IAAI,CAAC2nD,KAAK,CAAC3nD,CAAD,CAAV,EAAe;UACX;QACH;;QACDy3D,SAAS,GAAG5yD,CAAC,CAAC0kD,QAAd;;QACA,IAAItB,QAAQ,CAAC8B,QAAT,CAAkBpC,KAAK,CAAC3nD,CAAD,CAAvB,EAA4B,OAA5B,CAAJ,EAA0C;UACtCy3D,SAAS,GAAGxP,QAAQ,CAAC+B,MAAT,CAAgB,YAAhB,CAAZ;UACArC,KAAK,CAAC3nD,CAAD,CAAL,GAAW2nD,KAAK,CAAC3nD,CAAD,CAAL,CAASF,OAAT,CAAiB,OAAjB,EAA0B,EAA1B,CAAX;QACH;;QACDwvD,EAAE,GAAGrH,QAAQ,CAACoH,IAAT,CAAcC,EAAd,EAAkB3H,KAAK,CAAC3nD,CAAD,CAAvB,EAA4By3D,SAA5B,CAAL;MACH;;MACD,OAAOnI,EAAP;IACH;;IACD,OAAOrH,QAAQ,CAACoH,IAAT,CAAcC,EAAd,EAAkB3H,KAAlB,EAAyB9iD,CAAC,CAAC0kD,QAA3B,CAAP;EACH,CAzBD;EA0BA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACIyM,WAAW,CAAC93D,SAAZ,CAAsBw5D,OAAtB,GAAgC,UAAUpI,EAAV,EAAczqD,CAAd,EAAiB8lD,KAAjB,EAAwB;IACpD,IAAI,CAAC2E,EAAD,IAAO,CAACA,EAAE,CAACjwD,MAAf,EAAuB;MACnB,OAAOiwD,EAAP;IACH;;IACD,IAAI8G,GAAG,GAAG,KAAKG,YAAL,CAAkB5L,KAAlB,CAAV;IACA,OAAO1C,QAAQ,CAACkC,KAAT,CAAemF,EAAf,EAAmBrH,QAAQ,CAACxoD,QAAT,CAAkBoF,CAAC,CAACgkD,SAApB,EAA+B8B,KAA/B,CAAnB,EAA0DyL,GAA1D,EAA+D,IAA/D,EAAqE,IAArE,EAA2EvxD,CAAC,CAAC0kD,QAA7E,CAAP;EACH,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIyM,WAAW,CAAC93D,SAAZ,CAAsBy4D,MAAtB,GAA+B,UAAUrH,EAAV,EAAczqD,CAAd,EAAiB8lD,KAAjB,EAAwB;IACnD,IAAIgN,IAAI,GAAG1P,QAAQ,CAACxoD,QAAT,CAAkBoF,CAAC,CAACylD,QAApB,EAA8BK,KAA9B,CAAX;IACA,IAAIrqD,KAAK,GAAG,CAAC2nD,QAAQ,CAACxoD,QAAT,CAAkBoF,CAAC,CAACwlD,SAApB,EAA+BM,KAA/B,IAAwC,CAAzC,IAA8CgN,IAA1D;IACA,IAAIx5C,GAAG,GAAG7d,KAAK,GAAGq3D,IAAlB;;IACA,IAAI,CAACrI,EAAD,IAAO,CAACA,EAAE,CAACjwD,MAAf,EAAuB;MACnB,OAAOiwD,EAAP;IACH;;IACD,OAAOA,EAAE,CAACjqD,KAAH,CAAS/E,KAAT,EAAgB6d,GAAhB,CAAP;EACH,CARD;EASA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI63C,WAAW,CAAC93D,SAAZ,CAAsB05D,OAAtB,GAAgC,UAAUtI,EAAV,EAAczqD,CAAd,EAAiB;IAC7C,IAAI,CAACyqD,EAAD,IAAO,CAACA,EAAE,CAACjwD,MAAf,EAAuB;MACnB,OAAOiwD,EAAP;IACH;;IACD,OAAOA,EAAE,CAACjqD,KAAH,CAAS4iD,QAAQ,CAACxoD,QAAT,CAAkBoF,CAAC,CAACvE,KAApB,CAAT,EAAqC2nD,QAAQ,CAACxoD,QAAT,CAAkBoF,CAAC,CAACsZ,GAApB,CAArC,CAAP;EACH,CALD;EAMA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACI63C,WAAW,CAAC93D,SAAZ,CAAsB25D,MAAtB,GAA+B,UAAUvI,EAAV,EAAczqD,CAAd,EAAiB;IAC5C,IAAI,CAACyqD,EAAD,IAAO,CAACA,EAAE,CAACjwD,MAAf,EAAuB;MACnB,OAAOiwD,EAAP;IACH;;IACD,OAAOA,EAAE,CAACjqD,KAAH,CAAS,CAAT,EAAY4iD,QAAQ,CAACxoD,QAAT,CAAkBoF,CAAC,CAAC2lD,GAApB,CAAZ,CAAP;EACH,CALD;EAMA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACIwL,WAAW,CAAC93D,SAAZ,CAAsB45D,MAAtB,GAA+B,UAAUxI,EAAV,EAAczqD,CAAd,EAAiB;IAC5C,IAAI,CAACyqD,EAAD,IAAO,CAACA,EAAE,CAACjwD,MAAf,EAAuB;MACnB,OAAOiwD,EAAP;IACH;;IACD,OAAOA,EAAE,CAACjqD,KAAH,CAAS4iD,QAAQ,CAACxoD,QAAT,CAAkBoF,CAAC,CAAC2lD,GAApB,CAAT,CAAP;EACH,CALD;EAMA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACIwL,WAAW,CAAC93D,SAAZ,CAAsB65D,QAAtB,GAAiC,UAAUzI,EAAV,EAAczqD,CAAd,EAAiB;IAC9C,IAAI,CAACyqD,EAAD,IAAO,CAACA,EAAE,CAACjwD,MAAf,EAAuB;MACnB,OAAOiwD,EAAP;IACH;;IACD,OAAOrH,QAAQ,CAAC30B,MAAT,CAAgBg8B,EAAhB,EAAoBrH,QAAQ,CAACxoD,QAAT,CAAkBoF,CAAC,CAACykD,UAApB,CAApB,CAAP;EACH,CALD;EAMA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI0M,WAAW,CAAC93D,SAAZ,CAAsBi5D,MAAtB,GAA+B,UAAUjH,EAAV,EAAc9wD,IAAd,EAAoBkpD,SAApB,EAA+BqC,KAA/B,EAAsCxZ,QAAtC,EAAgD;IAC3E,IAAI1wC,uEAAiB,CAAC0wC,QAAD,CAArB,EAAiC;MAC7B,OAAO+e,EAAE,CAAC2F,UAAH,CAAc9J,IAAd,CAAmBjoD,IAAnB,CAAwB1E,IAAxB,CAAP;IACH,CAFD,MAGK;MACD,OAAO8wD,EAAE,CAAC2F,UAAH,CAAc9J,IAAd,CAAmB3sC,MAAnB,CAA0B+xB,QAA1B,EAAoC,CAApC,EAAuC/xC,IAAvC,CAAP;IACH;EACJ,CAPD;EAQA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI42D,WAAW,CAAC93D,SAAZ,CAAsB8xB,MAAtB,GAA+B,UAAUkgC,EAAV,EAAc8H,QAAd,EAAwBp4D,KAAxB,EAA+B0oD,SAA/B,EAA0C;IACrE,IAAIgH,EAAE,GAAGY,EAAE,CAAC2F,UAAH,CAAc9J,IAAvB;IACA,IAAI/rD,CAAJ;;IACA,IAAI,OAAOJ,KAAP,KAAiB,QAAjB,IAA6B,EAAEA,KAAK,YAAY+N,IAAnB,CAAjC,EAA2D;MACvD/N,KAAK,GAAGqoD,QAAQ,CAAClwB,SAAT,CAAmBigC,QAAnB,EAA6Bp4D,KAA7B,CAAR;IACH;;IACD,KAAKI,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGsvD,EAAE,CAACjwD,MAAnB,EAA2BW,CAAC,EAA5B,EAAgC;MAC5B,IAAIioD,QAAQ,CAAClwB,SAAT,CAAmBigC,QAAnB,EAA6B1I,EAAE,CAACtvD,CAAD,CAA/B,MAAwCJ,KAA5C,EAAmD;QAC/C;MACH;IACJ;;IACD,OAAOI,CAAC,KAAKsvD,EAAE,CAACjwD,MAAT,GAAkBiwD,EAAE,CAAClwC,MAAH,CAAUpf,CAAV,EAAa,CAAb,CAAlB,GAAoC,IAA3C;EACH,CAZD;EAaA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIg2D,WAAW,CAAC93D,SAAZ,CAAsBm5D,MAAtB,GAA+B,UAAUnH,EAAV,EAAc8H,QAAd,EAAwBp4D,KAAxB,EAA+B0oD,SAA/B,EAA0C;IACrE,IAAIgH,EAAE,GAAGY,EAAE,CAAC2F,UAAH,CAAc9J,IAAvB;IACA,IAAI/rD,CAAJ;IACA,IAAIQ,GAAJ;;IACA,IAAI,CAACC,uEAAiB,CAACu3D,QAAD,CAAtB,EAAkC;MAC9Bx3D,GAAG,GAAGf,8DAAQ,CAACu4D,QAAD,EAAWp4D,KAAX,CAAd;IACH;;IACD,KAAKI,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGsvD,EAAE,CAACjwD,MAAnB,EAA2BW,CAAC,EAA5B,EAAgC;MAC5B,IAAI,CAACS,uEAAiB,CAACu3D,QAAD,CAAlB,IAAiCv4D,8DAAQ,CAACu4D,QAAD,EAAW1I,EAAE,CAACtvD,CAAD,CAAb,CAAT,KAAgCQ,GAApE,EAAyE;QACrE;MACH;IACJ;;IACD,OAAOR,CAAC,GAAGsvD,EAAE,CAACjwD,MAAP,GAAgB6B,2DAAK,CAACouD,EAAE,CAACtvD,CAAD,CAAH,EAAQJ,KAAR,CAArB,GAAsC,IAA7C;EACH,CAbD;;EAcA,OAAOo2D,WAAP;AACH,CAjZ0C,CAiZzCL,OAjZyC,CAA3C;AAkZA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAIsC,UAAU;AAAG;AAAyB,UAAU56B,MAAV,EAAkB;EACxDb,SAAS,CAACy7B,UAAD,EAAa56B,MAAb,CAAT;;EACA,SAAS46B,UAAT,GAAsB;IAClB,OAAO56B,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACj/B,KAAP,CAAa,IAAb,EAAmB+D,SAAnB,CAAnB,IAAoD,IAA3D;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI;;;EACA81D,UAAU,CAAC/5D,SAAX,CAAqB+3D,YAArB,GAAoC,UAAU/F,EAAV,EAAcvF,KAAd,EAAqBuN,gBAArB,EAAuC;IACvE,IAAI/Q,OAAO,GAAG,KAAKgR,eAAL,CAAqBxN,KAArB,CAAd;IACA,IAAIO,OAAO,GAAGpE,KAAK,CAACmE,gBAAN,CAAuBN,KAAK,CAACxD,OAA7B,EAAsC,CAAC,UAAD,EAAa,QAAb,EAAuB,QAAvB,EAAiC,QAAjC,EAA2C,SAA3C,CAAtC,CAAd;IACA,IAAItpD,MAAM,GAAG8sD,KAAK,CAAC9sD,MAAnB;IACA,IAAIyqB,GAAG,GAAG4nC,EAAE,CAAC2F,UAAH,CAAcvtC,GAAxB;IACA,IAAI/R,IAAJ;IACA,IAAIk0C,IAAJ;IACA,IAAIF,IAAI,GAAG,IAAX;IACA,IAAIz5C,OAAO,GAAG,KAAKA,OAAnB;IACA,IAAI0/C,OAAO,GAAG;MAAE1G,KAAK,EAAE,EAAT;MAAasO,MAAM,EAAE,EAArB;MAAyBC,OAAO,EAAE,EAAlC;MAAsCC,QAAQ,EAAE,EAAhD;MAAoD9K,UAAU,EAAE;IAAhE,CAAd,CATuE,CAUvE;;IACA,IAAI,YAAYtC,OAAhB,EAAyB;MACrB30C,IAAI,GAAG20C,OAAO,CAACyL,MAAf;MACAlM,IAAI,GAAGxC,QAAQ,CAACxoD,QAAT,CAAkB8W,IAAI,CAAC8zC,SAAvB,EAAkCM,KAAlC,CAAP;MACAJ,IAAI,GAAGtC,QAAQ,CAACxoD,QAAT,CAAkB8W,IAAI,CAAC+zC,QAAvB,EAAiCK,KAAjC,CAAP;MACAF,IAAI,GAAG,CAACA,IAAI,GAAG,CAAR,IAAaF,IAApB;IACH,CALD,MAMK,IAAI,aAAaW,OAAjB,EAA0B;MAC3B30C,IAAI,GAAG20C,OAAO,CAAC0M,OAAf;MACAnN,IAAI,GAAGl0C,IAAI,CAACjW,KAAZ;MACAiqD,IAAI,GAAGh0C,IAAI,CAAC4H,GAAL,GAAW5H,IAAI,CAACjW,KAAvB;IACH,CArBsE,CAsBvE;;;IACA,KAAK,IAAIN,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmnD,OAAO,CAAC2C,KAAR,CAAczqD,MAAlC,EAA0CW,CAAC,EAA3C,EAA+C;MAC3CuW,IAAI,GAAG0xC,QAAQ,CAACxoD,QAAT,CAAkB0nD,OAAO,CAAC2C,KAAR,CAAc9pD,CAAd,EAAiB6E,CAAjB,CAAmBgkD,SAArC,EAAgD8B,KAAhD,CAAP;MACA6F,OAAO,CAAC1G,KAAR,CAAchmD,IAAd,CAAmBmkD,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,YAAnC,EAAiD;QAAEjwC,IAAI,EAAEnJ,IAAR;QAAcqzC,SAAS,EAAEzC,OAAO,CAAC2C,KAAR,CAAc9pD,CAAd,EAAiB6E,CAAjB,CAAmB+kD;MAA5C,CAAjD,EAA0Ge,KAA1G,CAAnB;IACH,CA1BsE,CA2BvE;;;IACA,IAAIuN,gBAAJ,EAAsB;MAClB3hD,IAAI,GAAG,KAAKgiD,cAAL,CAAoBL,gBAApB,EAAsCvN,KAAtC,CAAP;;MACA,IAAIp0C,IAAJ,EAAU;QACNi6C,OAAO,CAAC6H,OAAR,CAAgBv0D,IAAhB,CAAqBmkD,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,aAAnC,EAAkDp5C,IAAI,CAAC61C,MAAL,EAAlD,EAAiEzB,KAAjE,CAArB;MACH;IACJ,CAjCsE,CAkCvE;;;IACA,KAAK,IAAI3qD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmnD,OAAO,CAACkR,OAAR,CAAgBh5D,MAApC,EAA4CW,CAAC,EAA7C,EAAiD;MAC7C,IAAIuI,GAAG,GAAG0/C,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,aAAnC,EAAkDxI,OAAO,CAACkR,OAAR,CAAgBr4D,CAAhB,EAAmB6E,CAAnB,CAAqBunD,MAArB,EAAlD,EAAiFzB,KAAjF,CAAV;;MACA,IAAK,KAAKvzB,aAAL,IACD,KAAKA,aAAL,OAAyB,gBADzB,IAEA,CAAC32B,uEAAiB,CAAC0mD,OAAO,CAACkR,OAAR,CAAgBr4D,CAAhB,EAAmB6E,CAAnB,CAAqBrE,GAAtB,CAFlB,IAEgD2mD,OAAO,CAACkR,OAAR,CAAgBh5D,MAAhB,GAAyB,CAF7E,EAEgF;QAC5EkJ,GAAG,GAAG,MAAMA,GAAN,GAAY,GAAlB;MACH;;MACDioD,OAAO,CAAC6H,OAAR,CAAgBv0D,IAAhB,CAAqByE,GAArB;MACA,IAAIusD,MAAM,GAAG,OAAOtE,OAAO,CAAC6H,OAAR,CAAgBr4D,CAAhB,CAAP,KAA8B,QAA9B,GAAyCsB,MAAM,CAACjB,IAAP,CAAYmwD,OAAO,CAAC6H,OAAR,CAAgBr4D,CAAhB,CAAZ,CAAzC,GAA2E,EAAxF;;MACA,KAAK,IAAIwB,EAAE,GAAG,CAAT,EAAYC,MAAM,GAAGqzD,MAA1B,EAAkCtzD,EAAE,GAAGC,MAAM,CAACpC,MAA9C,EAAsDmC,EAAE,EAAxD,EAA4D;QACxD,IAAI6G,IAAI,GAAG5G,MAAM,CAACD,EAAD,CAAjB;;QACA,IAAIymD,QAAQ,CAAC4I,MAAT,CAAiBL,OAAD,CAAUnoD,IAAV,CAAhB,CAAJ,EAAsC;UAClC,OAAOmoD,OAAO,CAACnoD,IAAD,CAAd;QACH;MACJ;IACJ,CAlDsE,CAmDvE;;;IACA,KAAK,IAAIrI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmnD,OAAO,CAACmR,QAAR,CAAiBj5D,MAArC,EAA6CW,CAAC,EAA9C,EAAkD;MAC9CuW,IAAI,GAAG4wC,OAAO,CAACmR,QAAR,CAAiBt4D,CAAjB,EAAoB6E,CAA3B;MACA2rD,OAAO,CAAC8H,QAAR,CAAiBx0D,IAAjB,CAAsBmkD,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,cAAnC,EAAmD;QACrElH,MAAM,EAAElyC,IAAI,CAAC+yC,UADwD;QAErER,QAAQ,EAAEvyC,IAAI,CAACuyC,QAFsD;QAGrEtoD,GAAG,EAAE+V,IAAI,CAAC8yC,SAH2D;QAIrEN,UAAU,EAAExyC,IAAI,CAACwyC;MAJoD,CAAnD,EAKnB4B,KALmB,CAAtB;IAMH,CA5DsE,CA6DvE;;;IACA,KAAK,IAAI3qD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmnD,OAAO,CAACiR,MAAR,CAAe/4D,MAAnC,EAA2CW,CAAC,EAA5C,EAAgD;MAC5CwwD,OAAO,CAAC4H,MAAR,CAAet0D,IAAf,CAAoBmkD,QAAQ,CAACxoD,QAAT,CAAkB0nD,OAAO,CAACiR,MAAR,CAAep4D,CAAf,EAAkB6E,CAAlB,CAAoBgkD,SAAtC,EAAiD8B,KAAjD,CAApB;IACH,CAhEsE,CAiEvE;;;IACA,KAAK,IAAI3qD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmnD,OAAO,CAACqG,UAAR,CAAmBnuD,MAAvC,EAA+CW,CAAC,EAAhD,EAAoD;MAChDuW,IAAI,GAAG4wC,OAAO,CAACqG,UAAR,CAAmBxtD,CAAnB,EAAsB6E,CAA7B;MACA2rD,OAAO,CAAChD,UAAR,CAAmB1pD,IAAnB,CAAwB;QAAE6L,IAAI,EAAE4G,IAAI,CAAC5G,IAAb;QAAmBg4C,KAAK,EAAEM,QAAQ,CAACxoD,QAAT,CAAkB8W,IAAI,CAACoxC,KAAvB,EAA8BgD,KAA9B;MAA1B,CAAxB;IACH;;IACD,IAAIwF,GAAG,GAAG,EAAV;IACA,KAAKqI,eAAL,CAAqB1nD,OAArB,EAA8B65C,KAA9B,EAAqCO,OAArC,EAA8CsF,OAA9C,EAAuDL,GAAvD,EAvEuE,CAwEvE;;IACAlI,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,WAAnC,EAAgD;MAAEO,EAAE,EAAEA,EAAN;MAAUvF,KAAK,EAAEA,KAAjB;MAAwB9sD,MAAM,EAAEA,MAAhC;MAAwCuyD,SAAS,EAAED;IAAnD,CAAhD;;IACA,IAAIxF,KAAK,CAACjD,QAAN,CAAeroD,MAAnB,EAA2B;MACvB,KAAK,IAAIW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2qD,KAAK,CAACjD,QAAN,CAAeroD,MAAnC,EAA2CW,CAAC,EAA5C,EAAgD;QAC5CmwD,GAAG,CAACxF,KAAK,CAACjD,QAAN,CAAe1nD,CAAf,EAAkBQ,GAAnB,CAAH,GAA6BmqD,KAAK,CAACjD,QAAN,CAAe1nD,CAAf,EAAkBJ,KAA/C;MACH;IACJ,CA9EsE,CA+EvE;;;IACA,IAAIS,IAAI,GAAGiB,MAAM,CAACjB,IAAP,CAAY8vD,GAAZ,CAAX;;IACA,KAAK,IAAI7oD,EAAE,GAAG,CAAT,EAAYzD,MAAM,GAAGxD,IAA1B,EAAgCiH,EAAE,GAAGzD,MAAM,CAACxE,MAA5C,EAAoDiI,EAAE,EAAtD,EAA0D;MACtD,IAAIe,IAAI,GAAGxE,MAAM,CAACyD,EAAD,CAAjB;;MACA,IAAI2gD,QAAQ,CAAC4I,MAAT,CAAgBV,GAAG,CAAC9nD,IAAD,CAAnB,KAA8B8nD,GAAG,CAAC9nD,IAAD,CAAH,KAAc,EAA5C,IAAkD8nD,GAAG,CAAC9nD,IAAD,CAAH,CAAUhJ,MAAV,KAAqB,CAA3E,EAA8E;QAC1E,OAAO8wD,GAAG,CAAC9nD,IAAD,CAAV;MACH;IACJ;;IACD,IAAI,EAAEyI,OAAO,CAAC25C,IAAR,IAAgB0F,GAAhB,IAAuBr/C,OAAO,CAACy5C,IAAR,IAAgB4F,GAAzC,KAAiD5F,IAAI,KAAK,IAA9D,EAAoE;MAChE4F,GAAG,CAACr/C,OAAO,CAAC25C,IAAT,CAAH,GAAoBxC,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,QAAnC,EAA6ClF,IAA7C,EAAmDE,KAAnD,CAApB;MACAwF,GAAG,CAACr/C,OAAO,CAACy5C,IAAT,CAAH,GAAoBtC,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,QAAnC,EAA6CpF,IAA7C,EAAmDI,KAAnD,CAApB;IACH;;IACD,IAAIt0C,CAAC,GAAG,KAAKy/C,GAAb;IACA,KAAKA,GAAL,GAAW,EAAX;;IACA,IAAI,KAAKhlD,OAAL,CAAa8kD,WAAb,KAA6B,MAAjC,EAAyC;MACrC,OAAO;QACHx2D,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAemkB,GAAf,EAAoBlI,QAAQ,CAAC3nC,KAAT,CAAe00C,gBAAnC,CADH;QAEH1sC,GAAG,EAAEA,GAFF;QAGHmwC,OAAO,EAAEpiD,CAHN;QAIH1G,IAAI,EAAE,MAJH;QAKHyY,WAAW,EAAE;MALV,CAAP;IAOH;;IACD7R,IAAI,GAAG,KAAKmiD,oBAAL,CAA0BvI,GAA1B,EAA+BxF,KAA/B,EAAsCuF,EAAtC,CAAP;IACA35C,IAAI,GAAG,CAAC25C,EAAE,CAAC2F,UAAH,CAAcvtC,GAAd,CAAkB5mB,OAAlB,CAA0B,GAA1B,MAAmC,CAAC,CAApC,GAAwC,GAAxC,GAA8C,GAA/C,IAAsD6U,IAA7D;IACA,OAAO;MACH5G,IAAI,EAAE,KADH;MACU2Y,GAAG,EAAE/R,IAAI,CAAClX,MAAL,GAAcipB,GAAG,CAACxoB,OAAJ,CAAY,MAAZ,EAAoByW,IAApB,CAAd,GAA0C+R,GADzD;MAC8DmwC,OAAO,EAAEpiD;IADvE,CAAP;EAGH,CA3GD;;EA4GA4hD,UAAU,CAAC/5D,SAAX,CAAqBs6D,eAArB,GAAuC,UAAU1nD,OAAV,EAAmB65C,KAAnB,EAA0BO,OAA1B,EAAmCsF,OAAnC,EAA4CmI,QAA5C,EAAsD;IACzF,IAAIC,KAAK,GAAG,OAAZ;IACA,IAAIzI,GAAG,GAAGwI,QAAV;IACAxI,GAAG,CAACr/C,OAAO,CAACi2C,IAAT,CAAH,GAAoB4D,KAAK,CAACtD,SAA1B;;IACA,IAAIv2C,OAAO,CAAC1S,KAAR,IAAiBusD,KAAK,CAACzD,SAAN,CAAgB7nD,MAArC,EAA6C;MACzC8wD,GAAG,CAACr/C,OAAO,CAAC1S,KAAT,CAAH,GAAqB,gBAAgB,IAAhB,GAAuB6pD,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,YAAnC,EAAiDhF,KAAK,CAACzD,SAAvD,CAAvB,GAA2F,EAAhH;IACH;;IACD,IAAI,CAACyD,KAAK,CAACzD,SAAN,CAAgB7nD,MAAjB,IAA2ByR,OAAO,CAAC43C,MAAvC,EAA+C;MAC3CyH,GAAG,CAACr/C,OAAO,CAAC43C,MAAT,CAAH,GAAsB,cAAc,IAAd,IAAsB,cAAcwC,OAApC,GAClBjD,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,UAAnC,EAA+C;QAAEkJ,OAAO,EAAE5Q,QAAQ,CAACxoD,QAAT,CAAkByrD,OAAO,CAAC6M,QAAR,CAAiBzO,UAAnC,EAA+CqB,KAA/C,CAAX;QAAkEpD,OAAO,EAAEoD,KAAK,CAACpD;MAAjF,CAA/C,EAA2IoD,KAA3I,CADkB,GACkIA,KAAK,CAACpD,OAD9J;IAEH;;IACD4I,GAAG,CAACr/C,OAAO,CAACwiB,MAAT,CAAH,GAAsB,cAAc43B,OAAd,IAAyB,CAACP,KAAK,CAACzD,SAAN,CAAgB7nD,MAA1C,GAClB4oD,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,UAAnC,EAA+C1H,QAAQ,CAACxoD,QAAT,CAAkByrD,OAAO,CAAC6M,QAAR,CAAiBzO,UAAnC,EAA+CqB,KAA/C,CAA/C,EAAsGA,KAAtG,CADkB,GAC6F,EADnH;IAEAwF,GAAG,CAACr/C,OAAO,CAACk9C,KAAT,CAAH,GAAqBrD,KAAK,CAACtC,eAAN,GAAwBJ,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,SAAnC,EAA8ChF,KAAK,CAACtC,eAApD,EAAqEsC,KAArE,CAAxB,GAAsG,EAA3H;IACAwF,GAAG,CAACr/C,OAAO,CAACs4C,MAAT,CAAH,GAAsBoH,OAAO,CAAC8H,QAAR,CAAiBj5D,MAAjB,GAA0B4oD,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,UAAnC,EAA+Ca,OAAO,CAAC8H,QAAvD,EAAiE3N,KAAjE,CAA1B,GAAoG,EAA1H;IACAwF,GAAG,CAACr/C,OAAO,CAAC25C,IAAT,CAAH,GAAoB,YAAYS,OAAZ,GAChBjD,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,QAAnC,EAA6C1H,QAAQ,CAACxoD,QAAT,CAAkByrD,OAAO,CAAC4M,MAAR,CAAetN,GAAjC,EAAsCG,KAAtC,CAA7C,EAA2FA,KAA3F,CADgB,GACoF,EADxG;IAEAwF,GAAG,CAACr/C,OAAO,CAACy5C,IAAT,CAAH,GAAoB,YAAYW,OAAZ,GAChBjD,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,QAAnC,EAA6C1H,QAAQ,CAACxoD,QAAT,CAAkByrD,OAAO,CAAC2M,MAAR,CAAerN,GAAjC,EAAsCG,KAAtC,CAA7C,EAA2FA,KAA3F,CADgB,GACoF,EADxG;IAEAwF,GAAG,CAACr/C,OAAO,CAAC83C,KAAT,CAAH,GAAqB4H,OAAO,CAAC6H,OAAR,CAAgBh5D,MAAhB,IAA0BmxD,OAAO,CAAC8H,QAAR,CAAiBj5D,MAA3C,GACjB4oD,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,SAAnC,EAA8Ca,OAAO,CAAC6H,OAAtD,EAA+D1N,KAA/D,CADiB,GACuD,EAD5E;IAEAwF,GAAG,CAACr/C,OAAO,CAAC24C,MAAT,CAAH,GAAsB+G,OAAO,CAAC1G,KAAR,CAAczqD,MAAd,GAAuB4oD,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,UAAnC,EAA+Ca,OAAO,CAAC1G,KAAvD,EAA8Da,KAA9D,CAAvB,GAA8F,EAApH;IACAwF,GAAG,CAACr/C,OAAO,CAACq5C,KAAT,CAAH,GAAqBqG,OAAO,CAAC4H,MAAR,CAAe/4D,MAAf,GAAwB4oD,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,SAAnC,EAA8Ca,OAAO,CAAC4H,MAAtD,EAA8DzN,KAA9D,CAAxB,GAA+F,EAApH;IACAwF,GAAG,CAACr/C,OAAO,CAAC08C,UAAT,CAAH,GAA0BgD,OAAO,CAAChD,UAAR,CAAmBnuD,MAAnB,GACtB4oD,QAAQ,CAAC0H,mBAAT,CAA6B,IAA7B,EAAmC,cAAnC,EAAmDa,OAAO,CAAChD,UAA3D,EAAuE7C,KAAvE,CADsB,GAC0D,EADpF;IAEAwF,GAAG,CAACyI,KAAD,CAAH,GAAa,EAAb;EACH,CA1BD;EA2BA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIX,UAAU,CAAC/5D,SAAX,CAAqBw6D,oBAArB,GAA4C,UAAUlI,OAAV,EAAmB7F,KAAnB,EAA0BuF,EAA1B,EAA8B;IACtE,OAAO,EAAP,CADsE,CAEtE;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI+H,UAAU,CAAC/5D,SAAX,CAAqB63D,eAArB,GAAuC,UAAU32D,IAAV,EAAgBkwD,EAAhB,EAAoB3E,KAApB,EAA2B4F,GAA3B,EAAgCC,OAAhC,EAAyCuG,OAAzC,EAAkD;IACrF,IAAIxG,GAAG,IAAIA,GAAG,CAACjmC,iBAAJ,CAAsB,cAAtB,CAAP,IACAimC,GAAG,CAACjmC,iBAAJ,CAAsB,cAAtB,EAAsC5oB,OAAtC,CAA8C,kBAA9C,MAAsE,CAAC,CAD3E,EAC8E;MAC1E,IAAIo3D,cAAc,GAAG7Q,QAAQ,CAAC+J,gBAA9B;;MACA,IAAI1C,EAAE,IAAI,CAACA,EAAE,CAAC0C,gBAAd,EAAgC;QAC5B/J,QAAQ,CAAC+J,gBAAT,GAA4B,KAA5B;MACH;;MACD5yD,IAAI,GAAG6oD,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyBnyD,IAAzB,CAAP;MACA6oD,QAAQ,CAAC+J,gBAAT,GAA4B8G,cAA5B;IACH;;IACD,IAAIC,QAAQ,GAAGvI,OAAf;IACA,IAAIsF,GAAG,GAAGiD,QAAQ,CAACN,OAAT,IAAoB,EAA9B;IACA,IAAI/K,OAAO,GAAGtuD,IAAI,GAAGA,IAAI,CAACsuD,OAAR,GAAkB,EAApC;;IACA,IAAI6C,GAAG,IAAIA,GAAG,CAACjmC,iBAAJ,CAAsB,cAAtB,CAAP,IACAimC,GAAG,CAACjmC,iBAAJ,CAAsB,cAAtB,EAAsC5oB,OAAtC,CAA8C,KAA9C,MAAyD,CAAC,CAD9D,EACiE;MAC7D,OAAQipD,KAAK,CAACtC,eAAN,GAAwB;QAAEnmD,MAAM,EAAE,EAAV;QAAc8rD,KAAK,EAAE;MAArB,CAAxB,GAAmD,EAA3D;IACH;;IACD,IAAI7hD,CAAC,GAAGkU,IAAI,CAACC,KAAL,CAAWy4C,QAAQ,CAAC35D,IAApB,CAAR;;IACA,IAAI+M,CAAC,IAAIA,CAAC,CAACiuB,MAAF,KAAa,OAAlB,IAA6Bh7B,IAA7B,IAAqCA,IAAI,CAAC83D,YAA9C,EAA4D;MACxDH,OAAO,CAACG,YAAR,GAAuB93D,IAAI,CAAC83D,YAA5B;MACA,OAAOH,OAAP;IACH;;IACD,IAAI33D,IAAI,IAAIA,IAAI,CAAC+M,CAAjB,EAAoB;MAChB/M,IAAI,GAAGA,IAAI,CAAC+M,CAAZ;IACH;;IACD,IAAI5I,IAAI,GAAG,EAAX;;IACA,IAAInE,IAAI,IAAI,WAAWA,IAAvB,EAA6B;MACzBmE,IAAI,CAACyqD,KAAL,GAAa5uD,IAAI,CAAC4uD,KAAlB;IACH;;IACDzqD,IAAI,CAACrB,MAAL,GAAc9C,IAAI,IAAIA,IAAI,CAAC8C,MAAb,GAAsB9C,IAAI,CAAC8C,MAA3B,GAAoC9C,IAAlD;IACA,IAAI45D,QAAQ,GAAG,KAAf;;IACA,IAAIr3D,KAAK,CAACC,OAAN,CAAcxC,IAAI,CAAC8C,MAAnB,KAA8B9C,IAAI,CAAC8C,MAAL,CAAY7C,MAA9C,EAAsD;MAClD,IAAImB,GAAG,GAAG,KAAV;MACA,IAAI4I,GAAG,GAAG,OAAV;MACA,IAAIqkD,KAAK,GAAG,OAAZ;;MACA,IAAI,CAAChtD,uEAAiB,CAACrB,IAAI,CAAC8C,MAAL,CAAY,CAAZ,EAAe1B,GAAf,CAAD,CAAtB,EAA6C;QACzC+C,IAAI,CAACrB,MAAL,GAAc,KAAK+2D,qBAAL,CAA2B11D,IAAI,CAACrB,MAAhC,EAAwC,CAAxC,EAA2C4zD,GAAG,CAACsC,MAAJ,CAAW/4D,MAAX,GAAoB,CAA/D,CAAd;MACH;;MACD,IAAIsrD,KAAK,IAAIA,KAAK,CAACjD,QAAN,CAAeroD,MAAxB,IAAkCy2D,GAAG,CAACsC,MAAJ,CAAW/4D,MAAjD,EAAyD;QACrD,KAAK,IAAIW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2qD,KAAK,CAACjD,QAAN,CAAeroD,MAAnC,EAA2CW,CAAC,EAA5C,EAAgD;UAC5C,IAAI2qD,KAAK,CAACjD,QAAN,CAAe1nD,CAAf,EAAkBQ,GAAlB,MAA2B,mBAA/B,EAAoD;YAChD,IAAIZ,KAAK,GAAG+qD,KAAK,CAACjD,QAAN,CAAe1nD,CAAf,EAAkBoJ,GAAlB,EAAuBqkD,KAAvB,CAAZ;;YACA,IAAIqI,GAAG,CAACsC,MAAJ,CAAW/4D,MAAX,KAAsBO,KAA1B,EAAiC;cAC7Bo5D,QAAQ,GAAG,IAAX;YACH;UACJ;QACJ;MACJ;IACJ;;IACD,IAAI,CAACA,QAAL,EAAe;MACX,KAAKE,kBAAL,CAAwBpD,GAAxB,EAA6B12D,IAA7B,EAAmCmE,IAAnC,EAAyCmqD,OAAzC,EAAkD/C,KAAlD;IACH;;IACD,OAAO1C,QAAQ,CAAC4I,MAAT,CAAgBttD,IAAI,CAACyqD,KAArB,IAA8BzqD,IAAI,CAACrB,MAAnC,GAA4C;MAAEA,MAAM,EAAEqB,IAAI,CAACrB,MAAf;MAAuB8rD,KAAK,EAAEzqD,IAAI,CAACyqD,KAAnC;MAA0CR,UAAU,EAAEjqD,IAAI,CAACiqD;IAA3D,CAAnD;EACH,CArDD;;EAsDAyK,UAAU,CAAC/5D,SAAX,CAAqB+6D,qBAArB,GAA6C,UAAU75D,IAAV,EAAgBquD,KAAhB,EAAuBmJ,UAAvB,EAAmC;IAC5E,KAAK,IAAI52D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,IAAI,CAACC,MAAzB,EAAiCW,CAAC,EAAlC,EAAsC;MAClC,IAAIZ,IAAI,CAACY,CAAD,CAAJ,CAAQ+tD,KAAR,CAAc1uD,MAAd,IAAwBiC,MAAM,CAACjB,IAAP,CAAYjB,IAAI,CAACY,CAAD,CAAJ,CAAQ+tD,KAAR,CAAc,CAAd,CAAZ,EAA8BrsD,OAA9B,CAAsC,KAAtC,IAA+C,CAAC,CAA5E,EAA+E;QAC3E,KAAKu3D,qBAAL,CAA2B75D,IAAI,CAACY,CAAD,CAAJ,CAAQ+tD,KAAnC,EAA0CN,KAAK,GAAG,CAAlD,EAAqDmJ,UAAU,GAAG,CAAlE;MACH;IACJ;;IACD,IAAIp5D,GAAG,GAAG,WAAV;IACA,IAAI27D,QAAQ,GAAG,aAAf;IACA,IAAIC,GAAG,GAAG,OAAV;IACA,IAAIhL,OAAO,GAAG,SAAd;IACAhvD,IAAI,CAAC5B,GAAD,CAAJ,GAAYk4D,QAAQ,CAACl4D,GAAD,CAApB;IACA4B,IAAI,CAACg6D,GAAD,CAAJ,GAAY3L,KAAZ;IACAruD,IAAI,CAAC+5D,QAAD,CAAJ,GAAiBvC,UAAjB;IACAx3D,IAAI,CAACgvD,OAAD,CAAJ,GAAgBhvD,IAAI,CAAC,CAAD,CAAJ,CAAQ2uD,KAAR,CAAc1uD,MAAd,GAAuB,KAAKg6D,iBAAL,CAAuBj6D,IAAvB,EAA6B,CAACqB,uEAAiB,CAACrB,IAAI,CAAC,CAAD,CAAJ,CAAQ2uD,KAAR,CAAcK,OAAd,CAAD,CAA/C,CAAvB,GAAkG,EAAlH;IACA,OAAOhvD,IAAP;EACH,CAfD;;EAgBA64D,UAAU,CAAC/5D,SAAX,CAAqBm7D,iBAArB,GAAyC,UAAUj6D,IAAV,EAAgBk6D,UAAhB,EAA4B;IACjE,IAAIC,mBAAmB,GAAG,EAA1B;IACA,IAAInL,OAAO,GAAG,SAAd;;IACA,KAAK,IAAIpuD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,IAAI,CAACC,MAAzB,EAAiCW,CAAC,EAAlC,EAAsC;MAClC,IAAI,CAACs5D,UAAL,EAAiB;QACb,KAAK,IAAI7sD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGrN,IAAI,CAACY,CAAD,CAAJ,CAAQ+tD,KAAR,CAAc1uD,MAAlC,EAA0CoN,CAAC,EAA3C,EAA+C;UAC3C8sD,mBAAmB,CAACz1D,IAApB,CAAyB1E,IAAI,CAACY,CAAD,CAAJ,CAAQ+tD,KAAR,CAActhD,CAAd,CAAzB;QACH;MACJ,CAJD,MAKK;QACD8sD,mBAAmB,GAAGA,mBAAmB,CAAC9H,MAApB,CAA2BryD,IAAI,CAACY,CAAD,CAAJ,CAAQ+tD,KAAR,CAAcK,OAAd,CAA3B,CAAtB;MACH;IACJ;;IACD,OAAOmL,mBAAP;EACH,CAdD;EAeA;AACJ;AACA;AACA;AACA;AACA;;;EACItB,UAAU,CAAC/5D,SAAX,CAAqBw5D,OAArB,GAA+B,UAAU7yD,CAAV,EAAa;IACxC,KAAKixD,GAAL,CAASsC,MAAT,GAAkBvzD,CAAlB;IACA,OAAOA,CAAP;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;AACA;;;EACIozD,UAAU,CAAC/5D,SAAX,CAAqBo5D,YAArB,GAAoC,UAAUzyD,CAAV,EAAa;IAC7C,KAAKixD,GAAL,CAAStI,UAAT,GAAsB3oD,CAAtB;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIozD,UAAU,CAAC/5D,SAAX,CAAqB44D,YAArB,GAAoC,UAAU5G,EAAV,EAAc6G,OAAd,EAAuBlyD,CAAvB,EAA0B8lD,KAA1B,EAAiC6O,QAAjC,EAA2C;IAC3E,IAAIlxC,GAAJ;IACA,IAAI9nB,GAAJ;IACA,OAAO;MACHmP,IAAI,EAAE,MADH;MAEH2Y,GAAG,EAAE4nC,EAAE,CAAC2F,UAAH,CAAc4D,QAAd,IAA0BvJ,EAAE,CAAC2F,UAAH,CAAc6D,OAAxC,IAAmDxJ,EAAE,CAAC2F,UAAH,CAAc8D,SAAjE,IAA8EzJ,EAAE,CAAC2F,UAAH,CAAcvtC,GAF9F;MAGHF,WAAW,EAAE,iCAHV;MAIH8B,QAAQ,EAAE,MAJP;MAKH9qB,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAenqC,4DAAM,CAAC,EAAD,EAAK;QAC5B+3D,OAAO,EAAE7C,OAAO,CAACK,cADW;QAE5ByC,KAAK,EAAE9C,OAAO,CAACG,YAFa;QAG5B4C,OAAO,EAAE/C,OAAO,CAACE,cAHW;QAI5B78B,MAAM,EAAE,OAJoB;QAK5B2/B,KAAK,EAAEl1D,CAAC,CAACyjB,GAAD,CALoB;QAM5B9nB,GAAG,EAAEqE,CAAC,CAACrE,GAAD;MANsB,CAAL,EAOxBynD,QAAQ,CAAC+H,YAAT,CAAsB,IAAtB,EAA4BE,EAA5B,EAAgCvF,KAAhC,CAPwB,CAArB;IALH,CAAP;EAcH,CAjBD;EAkBA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIsN,UAAU,CAAC/5D,SAAX,CAAqB0rB,UAArB,GAAkC,UAAUsmC,EAAV,EAAcM,OAAd,EAAuB,CACrD;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIyH,UAAU,CAAC/5D,SAAX,CAAqBi5D,MAArB,GAA8B,UAAUjH,EAAV,EAAc9wD,IAAd,EAAoBkpD,SAApB,EAA+BqC,KAA/B,EAAsC;IAChE,OAAO;MACHriC,GAAG,EAAE4nC,EAAE,CAAC2F,UAAH,CAAcmE,SAAd,IAA2B9J,EAAE,CAAC2F,UAAH,CAAc6D,OAAzC,IAAoDxJ,EAAE,CAAC2F,UAAH,CAAcvtC,GADpE;MAEHlpB,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAenqC,4DAAM,CAAC,EAAD,EAAK;QAC5BjC,KAAK,EAAER,IADqB;QAE5B26D,KAAK,EAAEzR,SAFqB;QAG5BluB,MAAM,EAAE;MAHoB,CAAL,EAIxB6tB,QAAQ,CAAC+H,YAAT,CAAsB,IAAtB,EAA4BE,EAA5B,EAAgCvF,KAAhC,CAJwB,CAArB;IAFH,CAAP;EAQH,CATD;EAUA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIsN,UAAU,CAAC/5D,SAAX,CAAqB8xB,MAArB,GAA8B,UAAUkgC,EAAV,EAAc8H,QAAd,EAAwBp4D,KAAxB,EAA+B0oD,SAA/B,EAA0CqC,KAA1C,EAAiD;IAC3E,OAAO;MACHh7C,IAAI,EAAE,MADH;MAEH2Y,GAAG,EAAE4nC,EAAE,CAAC2F,UAAH,CAAc8D,SAAd,IAA2BzJ,EAAE,CAAC2F,UAAH,CAAc6D,OAAzC,IAAoDxJ,EAAE,CAAC2F,UAAH,CAAcvtC,GAFpE;MAGHlpB,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAenqC,4DAAM,CAAC,EAAD,EAAK;QAC5BrB,GAAG,EAAEZ,KADuB;QAE5Bq6D,SAAS,EAAEjC,QAFiB;QAG5B+B,KAAK,EAAEzR,SAHqB;QAI5BluB,MAAM,EAAE;MAJoB,CAAL,EAKxB6tB,QAAQ,CAAC+H,YAAT,CAAsB,IAAtB,EAA4BE,EAA5B,EAAgCvF,KAAhC,CALwB,CAArB;IAHH,CAAP;EAUH,CAXD;EAYA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIsN,UAAU,CAAC/5D,SAAX,CAAqBm5D,MAArB,GAA8B,UAAUnH,EAAV,EAAc8H,QAAd,EAAwBp4D,KAAxB,EAA+B0oD,SAA/B,EAA0CqC,KAA1C,EAAiD;IAC3E,OAAO;MACHh7C,IAAI,EAAE,MADH;MAEH2Y,GAAG,EAAE4nC,EAAE,CAAC2F,UAAH,CAAcqE,SAAd,IAA2BhK,EAAE,CAAC2F,UAAH,CAAc6D,OAAzC,IAAoDxJ,EAAE,CAAC2F,UAAH,CAAcvtC,GAFpE;MAGHlpB,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAenqC,4DAAM,CAAC,EAAD,EAAK;QAC5BjC,KAAK,EAAEA,KADqB;QAE5Bw6B,MAAM,EAAE,QAFoB;QAG5B6/B,SAAS,EAAEjC,QAHiB;QAI5Bx3D,GAAG,EAAEynD,QAAQ,CAAClwB,SAAT,CAAmBigC,QAAnB,EAA6Bp4D,KAA7B,CAJuB;QAK5Bm6D,KAAK,EAAEzR;MALqB,CAAL,EAMxBL,QAAQ,CAAC+H,YAAT,CAAsB,IAAtB,EAA4BE,EAA5B,EAAgCvF,KAAhC,CANwB,CAArB;IAHH,CAAP;EAWH,CAZD;EAaA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACIsN,UAAU,CAAC/5D,SAAX,CAAqBq6D,cAArB,GAAsC,UAAUn5D,IAAV,EAAgBurD,KAAhB,EAAuB;IACzD,IAAInqD,GAAG,GAAGmqD,KAAK,CAACvD,IAAhB;IACA,IAAIxnD,KAAJ;IACA,IAAIyI,IAAI,GAAG7H,GAAX;IACA,IAAIquD,IAAI,GAAGlE,KAAK,CAACnqD,GAAjB;IACA,IAAI25D,SAAS,GAAG,EAAhB;;IACA,IAAI,OAAO/6D,IAAI,CAAC,CAAD,CAAX,KAAmB,QAAvB,EAAiC;MAC7BiJ,IAAI,GAAG,IAAP;IACH;;IACD,KAAK,IAAIrI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,IAAI,CAACC,MAAzB,EAAiCW,CAAC,EAAlC,EAAsC;MAClC,IAAI,OAAOZ,IAAI,CAAC,CAAD,CAAX,KAAmB,QAAvB,EAAiC;QAC7BQ,KAAK,GAAGqoD,QAAQ,CAAClwB,SAAT,CAAmB82B,IAAI,IAAIxmD,IAA3B,EAAiCjJ,IAAI,CAACY,CAAD,CAArC,CAAR;MACH,CAFD,MAGK;QACDJ,KAAK,GAAGR,IAAI,CAACY,CAAD,CAAZ;MACH;;MACDm6D,SAAS,CAACr2D,IAAV,CAAe,IAAIqlD,SAAJ,CAAc3oD,GAAd,EAAmB,OAAnB,EAA4BZ,KAA5B,CAAf;IACH;;IACD,OAAOupD,SAAS,CAACwC,EAAV,CAAawO,SAAb,CAAP;EACH,CAnBD;;EAoBAlC,UAAU,CAAC/5D,SAAX,CAAqBg7D,kBAArB,GAA0C,UAAUpD,GAAV,EAAe12D,IAAf,EAAqBmE,IAArB,EAA2BmqD,OAA3B,EAAoC/C,KAApC,EAA2C;IACjF,IAAIp1C,KAAK,GAAGnW,IAAZ;;IACA,IAAIA,IAAI,IAAIA,IAAI,CAAC8C,MAAjB,EAAyB;MACrBqT,KAAK,GAAGnW,IAAI,CAAC8C,MAAb;IACH;;IACD,IAAI4zD,GAAG,IAAIA,GAAG,CAACtI,UAAX,IAAyBsI,GAAG,CAACtI,UAAJ,CAAenuD,MAA5C,EAAoD;MAChD,IAAI+2D,GAAG,GAAGN,GAAG,CAACtI,UAAd;MACA,IAAI9L,EAAE,GAAG,KAAK,CAAd;MACA,IAAI0Y,aAAa,GAAG7kD,KAApB;MACA,IAAIhN,GAAG,GAAG,EAAV;;MACA,IAAInJ,IAAI,CAAC2rD,SAAT,EAAoB;QAChBqP,aAAa,GAAGh7D,IAAI,CAAC2rD,SAArB;MACH;;MACD,KAAK,IAAI/qD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGo2D,GAAG,CAAC/2D,MAAxB,EAAgCW,CAAC,EAAjC,EAAqC;QACjC0hD,EAAE,GAAGuG,QAAQ,CAACuF,UAAT,CAAoB4I,GAAG,CAACp2D,CAAD,CAAH,CAAO2P,IAA3B,CAAL;;QACA,IAAI+xC,EAAJ,EAAQ;UACJn5C,GAAG,CAAC6tD,GAAG,CAACp2D,CAAD,CAAH,CAAO2nD,KAAP,GAAe,KAAf,GAAuByO,GAAG,CAACp2D,CAAD,CAAH,CAAO2P,IAA/B,CAAH,GAA0C+xC,EAAE,CAAC0Y,aAAD,EAAgBhE,GAAG,CAACp2D,CAAD,CAAH,CAAO2nD,KAAvB,CAA5C;QACH;MACJ;;MACDpkD,IAAI,CAACiqD,UAAL,GAAkBjlD,GAAlB;IACH;;IACD,IAAI/H,GAAG,GAAG,KAAV;IACA,IAAI65D,gBAAgB,GAAG14D,KAAK,CAACC,OAAN,CAAcxC,IAAI,CAAC8C,MAAnB,KAA8B9C,IAAI,CAAC8C,MAAL,CAAY7C,MAA1C,IAAoD,CAACoB,uEAAiB,CAACrB,IAAI,CAAC8C,MAAL,CAAY,CAAZ,EAAe1B,GAAf,CAAD,CAA7F;;IACA,IAAIs1D,GAAG,IAAIA,GAAG,CAACsC,MAAX,IAAqBtC,GAAG,CAACsC,MAAJ,CAAW/4D,MAAhC,IAA0C,CAACg7D,gBAA/C,EAAiE;MAC7D,IAAIjC,MAAM,GAAGtC,GAAG,CAACsC,MAAjB;;MACA,KAAK,IAAIp4D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGo4D,MAAM,CAAC/4D,MAA3B,EAAmCW,CAAC,EAApC,EAAwC;QACpC,IAAIytD,KAAK,GAAG,IAAZ;;QACA,IAAI,CAAChtD,uEAAiB,CAACitD,OAAD,CAAtB,EAAiC;UAC7BA,OAAO,GAAGzF,QAAQ,CAACkC,KAAT,CAAeuD,OAAf,EAAwB0K,MAAM,CAACp4D,CAAD,CAA9B,CAAV;QACH;;QACD,IAAIs6D,UAAU,GAAGxT,KAAK,CAACmD,aAAN,CAAoBU,KAAK,CAACxD,OAA1B,EAAmC,SAAnC,EAA8CnnD,CAA9C,EAAiD6E,CAAlE;QACA0Q,KAAK,GAAG0yC,QAAQ,CAACkC,KAAT,CAAe50C,KAAf,EAAsB6iD,MAAM,CAACp4D,CAAD,CAA5B,EAAiC81D,GAAG,CAACtI,UAArC,EAAiDC,KAAjD,EAAwDC,OAAxD,EAAiE4M,UAAU,CAAC/Q,QAA5E,CAAR;MACH;;MACDhmD,IAAI,CAACrB,MAAL,GAAcqT,KAAd;IACH;;IACD,OAAOhS,IAAP;EACH,CApCD;;EAqCA00D,UAAU,CAAC/5D,SAAX,CAAqBi6D,eAArB,GAAuC,UAAUxN,KAAV,EAAiB;IACpD,IAAIwF,GAAG,GAAG;MAAErG,KAAK,EAAE,EAAT;MAAasO,MAAM,EAAE,EAArB;MAAyBC,OAAO,EAAE,EAAlC;MAAsCC,QAAQ,EAAE,EAAhD;MAAoD9K,UAAU,EAAE;IAAhE,CAAV;IACA2C,GAAG,CAACrG,KAAJ,GAAYhD,KAAK,CAACmD,aAAN,CAAoBU,KAAK,CAACxD,OAA1B,EAAmC,UAAnC,CAAZ;IACAgJ,GAAG,CAACiI,MAAJ,GAAatR,KAAK,CAACmD,aAAN,CAAoBU,KAAK,CAACxD,OAA1B,EAAmC,SAAnC,CAAb;IACAgJ,GAAG,CAACkI,OAAJ,GAAcvR,KAAK,CAACmD,aAAN,CAAoBU,KAAK,CAACxD,OAA1B,EAAmC,SAAnC,CAAd;IACAgJ,GAAG,CAACmI,QAAJ,GAAexR,KAAK,CAACmD,aAAN,CAAoBU,KAAK,CAACxD,OAA1B,EAAmC,UAAnC,CAAf;IACAgJ,GAAG,CAAC3C,UAAJ,GAAiB1G,KAAK,CAACmD,aAAN,CAAoBU,KAAK,CAACxD,OAA1B,EAAmC,cAAnC,CAAjB;IACA,OAAOgJ,GAAP;EACH,CARD;;EASA8H,UAAU,CAAC/5D,SAAX,CAAqBqqD,SAArB,GAAiC,UAAUz3C,OAAV,EAAmB;IAChD,IAAIq/C,GAAG,GAAGr/C,OAAO,CAACs/C,SAAlB;;IACA,IAAIt/C,OAAO,CAACjT,MAAR,CAAewB,MAAnB,EAA2B;MACvB8wD,GAAG,CAACtyD,MAAJ,GAAa,EAAb;IACH;;IACD,KAAK,IAAI2D,EAAE,GAAG,CAAT,EAAY8F,EAAE,GAAGwJ,OAAO,CAACjT,MAA9B,EAAsC2D,EAAE,GAAG8F,EAAE,CAACjI,MAA9C,EAAsDmC,EAAE,EAAxD,EAA4D;MACxD,IAAIyvD,GAAG,GAAG3pD,EAAE,CAAC9F,EAAD,CAAZ;;MACA,IAAI2uD,GAAG,CAACc,GAAG,CAACzwD,GAAL,CAAP,EAAkB;QACd,MAAM,IAAIoE,KAAJ,CAAU,0EAAV,CAAN;MACH;;MACDurD,GAAG,CAACc,GAAG,CAACzwD,GAAL,CAAH,GAAeywD,GAAG,CAACrxD,KAAnB;;MACA,IAAIqxD,GAAG,CAACvP,EAAR,EAAY;QACRyO,GAAG,CAACc,GAAG,CAACzwD,GAAL,CAAH,GAAeywD,GAAG,CAACvP,EAAJ,CAAOv9C,IAAP,CAAY2M,OAAO,CAAC65C,KAApB,EAA2BsG,GAAG,CAACzwD,GAA/B,EAAoCsQ,OAAO,CAAC65C,KAA5C,EAAmD75C,OAAO,CAACo/C,EAA3D,CAAf;MACH;;MACDC,GAAG,CAACtyD,MAAJ,CAAWozD,GAAG,CAACzwD,GAAf,IAAsB2vD,GAAG,CAACc,GAAG,CAACzwD,GAAL,CAAzB;IACH;EACJ,CAhBD;;EAiBA,OAAOy3D,UAAP;AACH,CAxdyC,CAwdxCtC,OAxdwC,CAA1C;AAydA;AACA;AACA;AACA;AACA;;;AACA,IAAI4E,YAAY;AAAG;AAAyB,UAAUl9B,MAAV,EAAkB;EAC1Db,SAAS,CAAC+9B,YAAD,EAAel9B,MAAf,CAAT;;EACA,SAASk9B,YAAT,CAAsB7xD,KAAtB,EAA6B;IACzB,IAAIpF,KAAK,GAAG+5B,MAAM,CAACl5B,IAAP,CAAY,IAAZ,KAAqB,IAAjC,CADyB,CAEzB;;;IACAb,KAAK,CAACwN,OAAN,GAAgBjP,4DAAM,CAAC,EAAD,EAAKyB,KAAK,CAACwN,OAAX,EAAoB;MACtC8kD,WAAW,EAAE,KADyB;MAEtChd,MAAM,EAAE,uEAF8B;MAGtC4hB,eAAe,EAAE,iBAHqB;MAItC/Q,MAAM,EAAE,UAJ8B;MAKtCn2B,MAAM,EAAE,SAL8B;MAMtCm3B,IAAI,EAAE,OANgC;MAOtCF,IAAI,EAAE,MAPgC;MAQtCyD,KAAK,EAAE,cAR+B;MAStCpF,KAAK,EAAE,SAT+B;MAUtCF,MAAM,EAAE,SAV8B;MAWtC+R,KAAK,EAAE,QAX+B;MAYtCC,SAAS,EAAE,cAZ2B;MAatCC,QAAQ,EAAE,QAb4B;MActCC,SAAS,EAAE,cAd2B;MAetCC,YAAY,EAAE,0CAfwB;MAgBtCC,gBAAgB,EAAE,oEAhBoB;MAiBtCC,yBAAyB,EAAE,gDAjBW;MAkBtCC,UAAU,EAAE;IAlB0B,CAApB,CAAtB;IAoBAn5D,4DAAM,CAACyB,KAAK,CAACwN,OAAP,EAAgBpI,KAAK,IAAI,EAAzB,CAAN;IACA,OAAOpF,KAAP;EACH;;EACDi3D,YAAY,CAACr8D,SAAb,CAAuBk5B,aAAvB,GAAuC,YAAY;IAC/C,OAAO,cAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACImjC,YAAY,CAACr8D,SAAb,CAAuB+8D,WAAvB,GAAqC,UAAU/R,SAAV,EAAqByB,KAArB,EAA4BuQ,YAA5B,EAA0C;IAC3E,IAAI5kB,WAAW,GAAG,EAAlB;IACA,IAAIwS,QAAJ;IACA,IAAI+E,IAAJ;IACA,IAAIzkD,GAAG,GAAG8/C,SAAS,CAACtpD,KAApB;IACA,IAAI+P,IAAI,GAAG,OAAOvG,GAAlB;IACA,IAAIu+C,KAAK,GAAGuB,SAAS,CAACvB,KAAV,GAAkB4S,YAAY,CAACY,QAAb,CAAsBjS,SAAS,CAACvB,KAAhC,CAAlB,GAA2D,IAAvE;;IACA,IAAIv+C,GAAG,YAAYuE,IAAnB,EAAyB;MACrBvE,GAAG,GAAG,eAAe6+C,QAAQ,CAAC3nC,KAAT,CAAeq0C,QAAf,CAAwBvrD,GAAxB,CAAf,GAA8C,IAApD;IACH;;IACD,IAAIuG,IAAI,KAAK,QAAb,EAAuB;MACnBvG,GAAG,GAAGA,GAAG,CAACtJ,OAAJ,CAAY,IAAZ,EAAkB,MAAlB,CAAN;;MACA,IAAIopD,SAAS,CAACH,UAAd,EAA0B;QACtB3/C,GAAG,GAAGA,GAAG,CAAC8T,WAAJ,EAAN;MACH;;MACD,IAAIgsC,SAAS,CAACJ,QAAV,KAAuB,MAA3B,EAAmC;QAC/B1/C,GAAG,GAAGrF,kBAAkB,CAACqF,GAAD,CAAxB;MACH;;MACD,IAAI8/C,SAAS,CAACJ,QAAV,KAAuB,UAAvB,IAAqCI,SAAS,CAACJ,QAAV,KAAuB,MAAhE,EAAwE;QACpE1/C,GAAG,GAAG,OAAOA,GAAP,GAAa,IAAnB;MACH;;MACD,IAAI8xD,YAAJ,EAAkB;QACdvT,KAAK,GAAG,UAAUA,KAAV,GAAkB,mBAA1B;MACH;;MACD,IAAIM,QAAQ,CAAC3nC,KAAT,CAAeo0C,MAAf,CAAsBtrD,GAAtB,CAAJ,EAAgC;QAC5BykD,IAAI,GAAG,MAAP;MACH;;MACD,IAAI3E,SAAS,CAACH,UAAd,EAA0B;QACtB,IAAI,CAAC8E,IAAL,EAAW;UACPlG,KAAK,GAAG,aAAaA,KAAb,GAAqB,GAA7B;QACH;;QACDv+C,GAAG,GAAGA,GAAG,CAAC8T,WAAJ,EAAN;MACH;IACJ;;IACD,IAAIgsC,SAAS,CAACJ,QAAV,KAAuB,SAAvB,IAAoCI,SAAS,CAACJ,QAAV,KAAuB,QAA3D,IAAuEI,SAAS,CAACJ,QAAV,KAAuB,YAA9F,IACAI,SAAS,CAACJ,QAAV,KAAuB,WAD3B,EACwC;MACpCA,QAAQ,GAAGI,SAAS,CAACJ,QAAV,CAAmBpnD,OAAnB,CAA2B,OAA3B,MAAwC,CAAC,CAAzC,GAA6CumD,QAAQ,CAACqK,YAAT,CAAsB,UAAtB,CAA7C,GAAiFrK,QAAQ,CAACqK,YAAT,CAAsB,OAAtB,CAA5F;MACAlpD,GAAG,GAAG8/C,SAAS,CAACJ,QAAV,KAAuB,QAAvB,IAAmCI,SAAS,CAACJ,QAAV,KAAuB,WAA1D,GAAwE,IAAxE,GAA+E,MAArF;IACH,CAJD,MAKK;MACDA,QAAQ,GAAGb,QAAQ,CAACqK,YAAT,CAAsBpJ,SAAS,CAACJ,QAAhC,CAAX;IACH;;IACD,IAAIA,QAAJ,EAAc;MACVxS,WAAW,IAAIqR,KAAf;MACArR,WAAW,IAAIwS,QAAf;;MACA,IAAI+E,IAAJ,EAAU;QACNvX,WAAW,IAAIuX,IAAf;MACH;;MACD,OAAOvX,WAAW,GAAGltC,GAArB;IACH;;IACD,IAAI,CAAC3I,uEAAiB,CAAC,KAAK22B,aAAN,CAAlB,IAA0C,KAAKA,aAAL,OAAyB,gBAAvE,EAAyF;MACrF0xB,QAAQ,GAAGb,QAAQ,CAACuK,eAAT,CAAyBtJ,SAAS,CAACJ,QAAnC,CAAX;IACH,CAFD,MAGK;MACDA,QAAQ,GAAGb,QAAQ,CAACsK,aAAT,CAAuBrJ,SAAS,CAACJ,QAAjC,CAAX;IACH;;IACD,IAAIA,QAAQ,KAAK,MAAjB,EAAyB;MACrB1/C,GAAG,GAAGA,GAAN;;MACA,IAAIA,GAAG,CAAC1H,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;QACzB,IAAI0H,GAAG,CAAC2jD,MAAJ,CAAW,CAAX,MAAkB,GAAlB,IAAyB3jD,GAAG,CAACkN,WAAJ,CAAgB,GAAhB,IAAuB,CAApD,EAAuD;UACnDlN,GAAG,GAAGA,GAAG,CAACsI,SAAJ,CAAc,CAAd,EAAiBtI,GAAG,CAAC/J,MAArB,CAAN;UACAypD,QAAQ,GAAG,CAACroD,uEAAiB,CAAC,KAAK22B,aAAN,CAAlB,IAA0C,KAAKA,aAAL,OAAyB,gBAAnE,GACP6wB,QAAQ,CAACuK,eAAT,CAAyB,YAAzB,CADO,GACkCvK,QAAQ,CAACsK,aAAT,CAAuB,YAAvB,CAD7C;QAEH,CAJD,MAKK,IAAInpD,GAAG,CAAC2jD,MAAJ,CAAW3jD,GAAG,CAAC/J,MAAJ,GAAa,CAAxB,MAA+B,GAA/B,IAAsC+J,GAAG,CAAC1H,OAAJ,CAAY,GAAZ,IAAmB0H,GAAG,CAAC/J,MAAJ,GAAa,CAA1E,EAA6E;UAC9E+J,GAAG,GAAGA,GAAG,CAACsI,SAAJ,CAAc,CAAd,EAAiBtI,GAAG,CAAC/J,MAAJ,GAAa,CAA9B,CAAN;UACAypD,QAAQ,GAAG,CAACroD,uEAAiB,CAAC,KAAK22B,aAAN,CAAlB,IAA0C,KAAKA,aAAL,OAAyB,gBAAnE,GACP6wB,QAAQ,CAACuK,eAAT,CAAyB,UAAzB,CADO,GACgCvK,QAAQ,CAACsK,aAAT,CAAuB,UAAvB,CAD3C;QAEH,CAJI,MAKA,IAAInpD,GAAG,CAACkN,WAAJ,CAAgB,GAAhB,MAAyBlN,GAAG,CAAC1H,OAAJ,CAAY,GAAZ,CAAzB,IAA6C0H,GAAG,CAACkN,WAAJ,CAAgB,GAAhB,IAAuBlN,GAAG,CAAC1H,OAAJ,CAAY,GAAZ,IAAmB,CAA3F,EAA8F;UAC/F0H,GAAG,GAAGA,GAAG,CAACsI,SAAJ,CAActI,GAAG,CAAC1H,OAAJ,CAAY,GAAZ,IAAmB,CAAjC,EAAoC0H,GAAG,CAACkN,WAAJ,CAAgB,GAAhB,CAApC,CAAN;UACAwyC,QAAQ,GAAG,CAACroD,uEAAiB,CAAC,KAAK22B,aAAN,CAAlB,IAA0C,KAAKA,aAAL,OAAyB,gBAAnE,GACP6wB,QAAQ,CAACuK,eAAT,CAAyB,UAAzB,CADO,GACgCvK,QAAQ,CAACsK,aAAT,CAAuB,UAAvB,CAD3C;QAEH,CAJI,MAKA;UACDzJ,QAAQ,GAAG,CAACroD,uEAAiB,CAAC,KAAK22B,aAAN,CAAlB,IAA0C,KAAKA,aAAL,OAAyB,gBAAnE,GACP6wB,QAAQ,CAACuK,eAAT,CAAyB,UAAzB,CADO,GACgCvK,QAAQ,CAACsK,aAAT,CAAuB,UAAvB,CAD3C;QAEH;MACJ;;MACDnpD,GAAG,GAAGrF,kBAAkB,CAACqF,GAAD,CAAxB;MACAA,GAAG,GAAG,OAAOA,GAAP,GAAa,IAAnB;IACH,CAzBD,MA0BK,IAAI0/C,QAAQ,KAAK,UAAjB,EAA6B;MAC9B1/C,GAAG,GAAGA,GAAN;;MACA,IAAIA,GAAG,CAAC1H,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAA1B,EAA6B;QACzB,IAAI05D,mBAAmB,GAAGhyD,GAAG,CAACrJ,KAAJ,CAAU,GAAV,CAA1B;QACA,IAAIs7D,aAAa,GAAG,KAAK,CAAzB;QACA,IAAIrN,KAAK,GAAG,CAAZ;;QACA,IAAI5kD,GAAG,CAAC1H,OAAJ,CAAY,GAAZ,MAAqB,CAArB,IAA0B05D,mBAAmB,CAAC,CAAD,CAAnB,CAAuB15D,OAAvB,CAA+B,KAA/B,MAA0C,CAAC,CAArE,IACA05D,mBAAmB,CAAC,CAAD,CAAnB,CAAuB15D,OAAvB,CAA+B,GAA/B,MAAwC,CAAC,CAD7C,EACgD;UAC5C25D,aAAa,GAAGD,mBAAmB,CAAC,CAAD,CAAnC;UACAC,aAAa,GAAG,OAAOA,aAAP,GAAuB,IAAvC;UACAvS,QAAQ,GAAG,CAACroD,uEAAiB,CAAC,KAAK22B,aAAN,CAAlB,IAA0C,KAAKA,aAAL,OAAyB,gBAAnE,GACP6wB,QAAQ,CAACuK,eAAT,CAAyB,YAAzB,CADO,GACkCvK,QAAQ,CAACsK,aAAT,CAAuB,YAAvB,CAD7C;UAEAjc,WAAW,IAAIwS,QAAQ,GAAG,GAA1B;UACAxS,WAAW,IAAIqR,KAAK,GAAG,GAAvB;;UACA,IAAIkG,IAAJ,EAAU;YACNvX,WAAW,IAAIuX,IAAf;UACH;;UACDvX,WAAW,IAAI+kB,aAAa,GAAG,GAA/B;UACArN,KAAK;QACR;;QACD,IAAI5kD,GAAG,CAACkN,WAAJ,CAAgB,GAAhB,MAAyBlN,GAAG,CAAC/J,MAAJ,GAAa,CAAtC,IAA2C+7D,mBAAmB,CAACA,mBAAmB,CAAC/7D,MAApB,GAA6B,CAA9B,CAAnB,CAAoDqC,OAApD,CAA4D,KAA5D,MAAuE,CAAC,CAAnH,IACA05D,mBAAmB,CAACA,mBAAmB,CAAC/7D,MAApB,GAA6B,CAA9B,CAAnB,CAAoDqC,OAApD,CAA4D,GAA5D,MAAqE,CAAC,CAD1E,EAC6E;UACzE25D,aAAa,GAAGD,mBAAmB,CAACA,mBAAmB,CAAC/7D,MAApB,GAA6B,CAA9B,CAAnC;UACAg8D,aAAa,GAAG,OAAOA,aAAP,GAAuB,IAAvC;UACAvS,QAAQ,GAAG,CAACroD,uEAAiB,CAAC,KAAK22B,aAAN,CAAlB,IAA0C,KAAKA,aAAL,OAAyB,gBAAnE,GACP6wB,QAAQ,CAACuK,eAAT,CAAyB,UAAzB,CADO,GACgCvK,QAAQ,CAACsK,aAAT,CAAuB,UAAvB,CAD3C;;UAEA,IAAIvE,KAAK,GAAG,CAAZ,EAAe;YACX1X,WAAW,IAAI,OAAf;UACH;;UACDA,WAAW,IAAIwS,QAAQ,GAAG,GAA1B;UACAxS,WAAW,IAAIqR,KAAK,GAAG,GAAvB;;UACA,IAAIkG,IAAJ,EAAU;YACNvX,WAAW,IAAIuX,IAAf;UACH;;UACDvX,WAAW,IAAI+kB,aAAa,GAAG,GAA/B;UACArN,KAAK;QACR;;QACD,IAAIoN,mBAAmB,CAAC/7D,MAApB,GAA6B,CAAjC,EAAoC;UAChC,KAAK,IAAIW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGo7D,mBAAmB,CAAC/7D,MAApB,GAA6B,CAAjD,EAAoDW,CAAC,EAArD,EAAyD;YACrD,IAAIo7D,mBAAmB,CAACp7D,CAAD,CAAnB,CAAuB0B,OAAvB,CAA+B,KAA/B,MAA0C,CAAC,CAA3C,IAAgD05D,mBAAmB,CAACp7D,CAAD,CAAnB,CAAuB0B,OAAvB,CAA+B,GAA/B,MAAwC,CAAC,CAA7F,EAAgG;cAC5F25D,aAAa,GAAGD,mBAAmB,CAACp7D,CAAD,CAAnC;cACAq7D,aAAa,GAAG,OAAOA,aAAP,GAAuB,IAAvC;cACAvS,QAAQ,GAAG,CAACroD,uEAAiB,CAAC,KAAK22B,aAAN,CAAlB,IAA0C,KAAKA,aAAL,OAAyB,gBAAnE,GACP6wB,QAAQ,CAACuK,eAAT,CAAyB,UAAzB,CADO,GACgCvK,QAAQ,CAACsK,aAAT,CAAuB,UAAvB,CAD3C;;cAEA,IAAIvE,KAAK,GAAG,CAAZ,EAAe;gBACX1X,WAAW,IAAI,OAAf;cACH;;cACD,IAAIwS,QAAQ,KAAK,aAAb,IAA8BA,QAAQ,KAAK,iBAA/C,EAAkE;gBAC9D,IAAIvyC,IAAI,GAAG8kD,aAAX;gBACAA,aAAa,GAAG1T,KAAhB;gBACAA,KAAK,GAAGpxC,IAAR;cACH;;cACD+/B,WAAW,IAAIwS,QAAQ,GAAG,GAA1B;cACAxS,WAAW,IAAIqR,KAAK,GAAG,GAAvB;;cACA,IAAIkG,IAAJ,EAAU;gBACNvX,WAAW,IAAIuX,IAAf;cACH;;cACDvX,WAAW,IAAI+kB,aAAa,GAAG,GAA/B;cACArN,KAAK;YACR;UACJ;QACJ;;QACD,IAAIA,KAAK,KAAK,CAAd,EAAiB;UACblF,QAAQ,GAAG,CAACroD,uEAAiB,CAAC,KAAK22B,aAAN,CAAlB,IAA0C,KAAKA,aAAL,OAAyB,gBAAnE,GACP6wB,QAAQ,CAACuK,eAAT,CAAyB,UAAzB,CADO,GACgCvK,QAAQ,CAACsK,aAAT,CAAuB,UAAvB,CAD3C;;UAEA,IAAInpD,GAAG,CAAC1H,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAAtB,IAA2B0H,GAAG,CAAC1H,OAAJ,CAAY,KAAZ,MAAuB,CAAC,CAAvD,EAA0D;YACtD0H,GAAG,GAAGA,GAAG,CAAC1H,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAAtB,GAA0B0H,GAAG,CAACrJ,KAAJ,CAAU,GAAV,EAAeiE,IAAf,CAAoB,EAApB,CAA1B,GAAoDoF,GAAG,CAACrJ,KAAJ,CAAU,KAAV,EAAiBiE,IAAjB,CAAsB,EAAtB,CAA1D;UACH;;UACDoF,GAAG,GAAG,OAAOA,GAAP,GAAa,IAAnB;QACH,CAPD,MAQK;UACD0/C,QAAQ,GAAG,UAAX;QACH;MACJ,CAvED,MAwEK;QACDA,QAAQ,GAAG,CAACroD,uEAAiB,CAAC,KAAK22B,aAAN,CAAlB,IAA0C,KAAKA,aAAL,OAAyB,gBAAnE,GACP6wB,QAAQ,CAACuK,eAAT,CAAyB,UAAzB,CADO,GACgCvK,QAAQ,CAACsK,aAAT,CAAuB,UAAvB,CAD3C;;QAEA,IAAInpD,GAAG,CAAC1H,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAAtB,IAA2B0H,GAAG,CAAC1H,OAAJ,CAAY,KAAZ,MAAuB,CAAC,CAAvD,EAA0D;UACtD0H,GAAG,GAAGA,GAAG,CAAC1H,OAAJ,CAAY,GAAZ,MAAqB,CAAC,CAAtB,GAA0B0H,GAAG,CAACrJ,KAAJ,CAAU,GAAV,EAAeiE,IAAf,CAAoB,EAApB,CAA1B,GAAoDoF,GAAG,CAACrJ,KAAJ,CAAU,KAAV,EAAiBiE,IAAjB,CAAsB,EAAtB,CAA1D;QACH;;QACDoF,GAAG,GAAG,OAAOA,GAAP,GAAa,IAAnB;MACH;IACJ;;IACD,IAAI0/C,QAAQ,KAAK,aAAb,IAA8BA,QAAQ,KAAK,iBAA/C,EAAkE;MAC9D,IAAIvyC,IAAI,GAAGnN,GAAX;MACAA,GAAG,GAAGu+C,KAAN;MACAA,KAAK,GAAGpxC,IAAR;IACH;;IACD,IAAIuyC,QAAQ,KAAK,UAAjB,EAA6B;MACzBxS,WAAW,IAAIwS,QAAQ,GAAG,GAA1B;MACAxS,WAAW,IAAIqR,KAAK,GAAG,GAAvB;;MACA,IAAIkG,IAAJ,EAAU;QACNvX,WAAW,IAAIuX,IAAf;MACH;;MACDvX,WAAW,IAAIltC,GAAG,GAAG,GAArB;IACH;;IACD,OAAOktC,WAAP;EACH,CAnLD;;EAoLAikB,YAAY,CAACr8D,SAAb,CAAuBqqD,SAAvB,GAAmC,UAAUz3C,OAAV,EAAmB;IAClDusB,MAAM,CAACn/B,SAAP,CAAiBqqD,SAAjB,CAA2BpkD,IAA3B,CAAgC,IAAhC,EAAsC2M,OAAtC;;IACA,OAAOA,OAAO,CAACs/C,SAAR,CAAkBvyD,MAAzB;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI08D,YAAY,CAACr8D,SAAb,CAAuBo9D,kBAAvB,GAA4C,UAAUpS,SAAV,EAAqByB,KAArB,EAA4BuQ,YAA5B,EAA0C;IAClF,IAAI3yD,GAAG,GAAG,EAAV;;IACA,KAAK,IAAIvI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGkpD,SAAS,CAACqC,UAAV,CAAqBlsD,MAAzC,EAAiDW,CAAC,EAAlD,EAAsD;MAClDuI,GAAG,CAACzE,IAAJ,CAAS,MAAM,KAAKy3D,WAAL,CAAiBrS,SAAS,CAACqC,UAAV,CAAqBvrD,CAArB,CAAjB,EAA0C2qD,KAA1C,EAAiDuQ,YAAjD,CAAN,GAAuE,GAAhF;IACH;;IACD,OAAO3yD,GAAG,CAACvE,IAAJ,CAAS,MAAMklD,SAAS,CAACoC,SAAhB,GAA4B,GAArC,CAAP;EACH,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIiP,YAAY,CAACr8D,SAAb,CAAuBq9D,WAAvB,GAAqC,UAAUjkC,MAAV,EAAkBqzB,KAAlB,EAAyBuQ,YAAzB,EAAuC;IACxE,OAAO5jC,MAAM,CAAC8zB,SAAP,GAAmB,KAAKkQ,kBAAL,CAAwBhkC,MAAxB,EAAgCqzB,KAAhC,EAAuCuQ,YAAvC,CAAnB,GAA0E,KAAKD,WAAL,CAAiB3jC,MAAjB,EAAyBqzB,KAAzB,EAAgCuQ,YAAhC,CAAjF;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;;;EACIX,YAAY,CAACr8D,SAAb,CAAuBu4D,OAAvB,GAAiC,UAAU4B,OAAV,EAAmB;IAChD,IAAI,KAAKvC,GAAL,CAAS1M,MAAb,EAAqB;MACjBiP,OAAO,CAACv0D,IAAR,CAAa,KAAKy3D,WAAL,CAAiB,KAAKzF,GAAL,CAAS1M,MAA1B,EAAkC,IAAlC,EAAwC,IAAxC,CAAb;IACH;;IACD,OAAOiP,OAAO,CAACr0D,IAAR,CAAa,OAAb,CAAP;EACH,CALD;EAMA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIu2D,YAAY,CAACr8D,SAAb,CAAuBs9D,YAAvB,GAAsC,UAAU32D,CAAV,EAAa;IAC/C,IAAIA,CAAC,CAAC4jD,MAAF,IAAY5jD,CAAC,CAAC4jD,MAAF,CAASppD,MAAT,KAAoB,CAApC,EAAuC;MACnC4oD,QAAQ,CAACvjD,UAAT,CAAoB,wEAApB;IACH;;IACD,IAAI4yB,MAAM,GAAG,KAAKw+B,GAAL,CAAS1M,MAAT,IAAmB,EAAhC;;IACA,KAAK,IAAIppD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6E,CAAC,CAAC4jD,MAAF,CAASppD,MAA7B,EAAqCW,CAAC,EAAtC,EAA0C;MACtCs3B,MAAM,CAACxzB,IAAP,CAAY,IAAIqlD,SAAJ,CAActkD,CAAC,CAAC4jD,MAAF,CAASzoD,CAAT,CAAd,EAA2B6E,CAAC,CAACikD,QAA7B,EAAuCjkD,CAAC,CAACrE,GAAzC,EAA8CqE,CAAC,CAACkkD,UAAhD,CAAZ;IACH;;IACD,KAAK+M,GAAL,CAAS1M,MAAT,GAAkB9xB,MAAlB;EACH,CATD;EAUA;AACJ;AACA;AACA;AACA;;;EACIijC,YAAY,CAACr8D,SAAb,CAAuBq5D,QAAvB,GAAkC,UAAU1yD,CAAV,EAAa;IAC3C,KAAKixD,GAAL,CAAS1M,MAAT,GAAkBD,SAAS,CAACwC,EAAV,CAAa,KAAKmK,GAAL,CAAS1M,MAAtB,CAAlB;IACA,OAAO,EAAP;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;;;EACImR,YAAY,CAACr8D,SAAb,CAAuBu9D,UAAvB,GAAoC,UAAU52D,CAAV,EAAa;IAC7C,IAAI0D,GAAG,GAAG,EAAV;;IACA,IAAI1D,CAAC,CAAC6a,IAAF,YAAkB/d,KAAtB,EAA6B;MACzB,KAAK,IAAI3B,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6E,CAAC,CAAC6a,IAAF,CAAOrgB,MAA3B,EAAmCW,CAAC,EAApC,EAAwC;QACpCuI,GAAG,CAACzE,IAAJ,CAASy2D,YAAY,CAACY,QAAb,CAAsBt2D,CAAC,CAAC6a,IAAF,CAAO1f,CAAP,CAAtB,KAAoC6E,CAAC,CAAC+kD,SAAF,KAAgB,YAAhB,GAA+B,OAA/B,GAAyC,EAA7E,CAAT;MACH;IACJ,CAJD,MAKK;MACDrhD,GAAG,CAACzE,IAAJ,CAASy2D,YAAY,CAACY,QAAb,CAAsBt2D,CAAC,CAAC6a,IAAxB,KAAiC7a,CAAC,CAAC+kD,SAAF,KAAgB,YAAhB,GAA+B,OAA/B,GAAyC,EAA1E,CAAT;IACH;;IACD,OAAOrhD,GAAG,CAACvE,IAAJ,CAAS,GAAT,CAAP;EACH,CAXD;EAYA;AACJ;AACA;AACA;AACA;;;EACIu2D,YAAY,CAACr8D,SAAb,CAAuBs5D,QAAvB,GAAkC,UAAU3yD,CAAV,EAAa;IAC3C,OAAOA,CAAC,CAAC4wC,OAAF,GAAYzxC,IAAZ,CAAiB,GAAjB,CAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;;;EACIu2D,YAAY,CAACr8D,SAAb,CAAuBw5D,OAAvB,GAAiC,UAAU7yD,CAAV,EAAa;IAC1C,KAAKixD,GAAL,CAASsC,MAAT,GAAkBvzD,CAAlB;IACA,OAAO,EAAP;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;;;EACI01D,YAAY,CAACr8D,SAAb,CAAuB65D,QAAvB,GAAkC,UAAUlzD,CAAV,EAAa;IAC3C,KAAK,IAAI7E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6E,CAAC,CAACxF,MAAtB,EAA8BW,CAAC,EAA/B,EAAmC;MAC/B6E,CAAC,CAAC7E,CAAD,CAAD,GAAOu6D,YAAY,CAACY,QAAb,CAAsBt2D,CAAC,CAAC7E,CAAD,CAAvB,CAAP;IACH;;IACD,OAAO6E,CAAC,CAACb,IAAF,CAAO,GAAP,CAAP;EACH,CALD;EAMA;AACJ;AACA;AACA;AACA;AACA;;;EACIu2D,YAAY,CAACr8D,SAAb,CAAuBo5D,YAAvB,GAAsC,UAAUzyD,CAAV,EAAa;IAC/C,KAAKixD,GAAL,CAAStI,UAAT,GAAsB3oD,CAAtB;IACA,OAAO,EAAP;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;AACA;;;EACI01D,YAAY,CAACr8D,SAAb,CAAuBw9D,OAAvB,GAAiC,UAAU72D,CAAV,EAAa;IAC1C,OAAOA,CAAC,KAAK,IAAN,GAAa,UAAb,GAA0B,EAAjC;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI01D,YAAY,CAACr8D,SAAb,CAAuB0rB,UAAvB,GAAoC,UAAUsmC,EAAV,EAAcM,OAAd,EAAuBmL,QAAvB,EAAiC;IACjE,IAAI1T,QAAQ,CAAC8B,QAAT,CAAkB4R,QAAQ,CAACrzC,GAA3B,EAAgC,KAAKxX,OAAL,CAAa2pD,KAA7C,KAAuDkB,QAAQ,CAAChsD,IAAT,CAAcuN,WAAd,OAAgC,MAA3F,EAAmG;MAC/FszC,OAAO,CAAC7mC,gBAAR,CAAyB,QAAzB,EAAmC,KAAK7Y,OAAL,CAAa0pD,eAAhD;MACAhK,OAAO,CAAC7mC,gBAAR,CAAyB,oBAAzB,EAA+C,KAA/C;MACA6mC,OAAO,CAACoL,gBAAR,CAAyB,oCAAzB;IACH,CAJD,MAKK;MACDpL,OAAO,CAAC7mC,gBAAR,CAAyB,QAAzB,EAAmC,KAAK7Y,OAAL,CAAa8nC,MAAhD;IACH;;IACD4X,OAAO,CAAC7mC,gBAAR,CAAyB,oBAAzB,EAA+C,KAA/C;IACA6mC,OAAO,CAAC7mC,gBAAR,CAAyB,uBAAzB,EAAkD,KAAlD;EACH,CAXD;EAYA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI4wC,YAAY,CAACr8D,SAAb,CAAuB63D,eAAvB,GAAyC,UAAU32D,IAAV,EAAgBkwD,EAAhB,EAAoB3E,KAApB,EAA2B4F,GAA3B,EAAgCC,OAAhC,EAAyCuG,OAAzC,EAAkD;IACvF,IAAI8E,SAAS,GAAG,gBAAhB;;IACA,IAAKrL,OAAO,IAAIA,OAAO,CAAC7gD,IAAR,KAAiB,KAA7B,IAAuC,CAAC,KAAKmsD,OAA7C,IAAwD18D,IAAI,CAACy8D,SAAD,CAAhE,EAA6E;MACzE,IAAIE,QAAQ,GAAG38D,IAAI,CAACy8D,SAAD,CAAJ,CAAgB97D,KAAhB,CAAsB,aAAtB,CAAf;MACA,KAAK+7D,OAAL,GAAeC,QAAQ,CAAC,CAAD,CAAvB;MACA,KAAKC,iBAAL,GAAyBD,QAAQ,CAAC,CAAD,CAAjC;IACH;;IACD,IAAItD,OAAO,GAAG,SAAd;;IACA,IAAI,CAACh4D,uEAAiB,CAACrB,IAAI,CAAC+M,CAAN,CAAtB,EAAgC;MAC5B,IAAI8vD,QAAQ,GAAKtR,KAAK,IAAIA,KAAK,CAACtC,eAAhB,GAAmCjpD,IAAI,CAAC+M,CAAL,CAAO+vD,OAA1C,GAAoD98D,IAAI,CAAC+M,CAAzE;MACA,IAAIgwD,QAAQ,GAAG,YAAf;;MACA,IAAI,CAAC17D,uEAAiB,CAACw7D,QAAD,CAAtB,EAAkC;QAC9B,KAAK,IAAIj8D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGi8D,QAAQ,CAAC58D,MAA7B,EAAqCW,CAAC,EAAtC,EAA0C;UACtC,IAAI,CAACS,uEAAiB,CAACw7D,QAAQ,CAACj8D,CAAD,CAAR,CAAYm8D,QAAZ,CAAD,CAAtB,EAA+C;YAC3C,OAAOF,QAAQ,CAACj8D,CAAD,CAAR,CAAYm8D,QAAZ,CAAP;UACH;QACJ;MACJ;IACJ;;IACD,IAAIrG,GAAG,GAAGtF,OAAO,IAAIA,OAAO,CAACiI,OAAD,CAA5B;IACA,IAAI2D,aAAa,GAAG,KAAKC,oBAAL,CAA0Bj9D,IAA1B,EAAgCurD,KAAhC,EAAuC4F,GAAvC,EAA4CC,OAA5C,EAAqDuG,OAArD,CAApB;;IACA,IAAIqF,aAAJ,EAAmB;MACf,OAAOA,aAAP;IACH;;IACD,IAAIE,YAAY,GAAG/L,GAAG,IAAIC,OAAO,CAAClmC,iBAAR,CAA0B,oBAA1B,CAA1B;IACA,IAAI0jC,KAAK,GAAG,IAAZ;IACA,IAAI9gC,OAAO,GAAIovC,YAAY,IAAIp8D,QAAQ,CAACo8D,YAAD,EAAe,EAAf,CAAzB,IAAgD,CAA9D;;IACA,IAAI3R,KAAK,IAAIA,KAAK,CAACtC,eAAnB,EAAoC;MAChC,IAAIkU,UAAU,GAAG,SAAjB;;MACA,IAAIn9D,IAAI,CAACm9D,UAAD,CAAJ,IAAoBn9D,IAAI,CAAC,aAAD,CAA5B,EAA6C;QACzC4uD,KAAK,GAAG5uD,IAAI,CAACm9D,UAAD,CAAJ,IAAoBn9D,IAAI,CAAC,aAAD,CAAhC;MACH;;MACD,IAAIA,IAAI,CAAC+M,CAAT,EAAY;QACR/M,IAAI,GAAGA,IAAI,CAAC+M,CAAZ;MACH;;MACD,IAAI/M,IAAI,CAACm9D,UAAD,CAAJ,IAAoBn9D,IAAI,CAAC,aAAD,CAA5B,EAA6C;QACzC4uD,KAAK,GAAG5uD,IAAI,CAACm9D,UAAD,CAAJ,IAAoBn9D,IAAI,CAAC,aAAD,CAAhC;MACH;IACJ;;IACD,IAAI8tB,OAAO,KAAK,CAAZ,IAAiB9tB,IAAI,CAACQ,KAA1B,EAAiC;MAC7BR,IAAI,GAAGA,IAAI,CAACQ,KAAZ;IACH;;IACD,IAAIR,IAAI,CAAC+M,CAAT,EAAY;MACR/M,IAAI,GAAGA,IAAI,CAAC+M,CAAZ;IACH;;IACD,IAAI+gB,OAAO,GAAG,CAAV,IAAe9tB,IAAI,CAAC88D,OAAxB,EAAiC;MAC7B98D,IAAI,GAAGA,IAAI,CAAC88D,OAAZ;IACH;;IACD,IAAI34D,IAAI,GAAG,EAAX;IACAA,IAAI,CAACyqD,KAAL,GAAaA,KAAb;IACAzqD,IAAI,CAACrB,MAAL,GAAc9C,IAAd;IACA,KAAK85D,kBAAL,CAAwBpD,GAAxB,EAA6B12D,IAA7B,EAAmCmE,IAAnC,EAAyC,IAAzC,EAA+ConD,KAA/C;IACA,OAAO1C,QAAQ,CAAC4I,MAAT,CAAgB7C,KAAhB,IAAyBzqD,IAAI,CAACrB,MAA9B,GAAuC;MAAEA,MAAM,EAAEqB,IAAI,CAACrB,MAAf;MAAuB8rD,KAAK,EAAEzqD,IAAI,CAACyqD,KAAnC;MAA0CR,UAAU,EAAEjqD,IAAI,CAACiqD;IAA3D,CAA9C;EACH,CArDD;EAsDA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI+M,YAAY,CAACr8D,SAAb,CAAuBw6D,oBAAvB,GAA8C,UAAUlI,OAAV,EAAmB7F,KAAnB,EAA0BuF,EAA1B,EAA8B;IACxE,IAAI3nD,GAAG,GAAG,EAAV;IACA,IAAIwxD,KAAK,GAAG,OAAZ;IACA,IAAIzR,SAAS,GAAGkI,OAAO,CAACuJ,KAAD,CAAP,IAAkB,EAAlC;IACA,IAAIvqD,MAAM,GAAG,SAAb;IACA,OAAOghD,OAAO,CAACuJ,KAAD,CAAd;;IACA,IAAI7J,EAAE,CAAC2F,UAAH,CAAc2G,cAAlB,EAAkC;MAC9BhM,OAAO,CAAChhD,MAAD,CAAP,GAAkB,MAAlB;IACH;;IACD,IAAInP,IAAI,GAAGiB,MAAM,CAACjB,IAAP,CAAYmwD,OAAZ,CAAX;;IACA,KAAK,IAAIhvD,EAAE,GAAG,CAAT,EAAYi7D,MAAM,GAAGp8D,IAA1B,EAAgCmB,EAAE,GAAGi7D,MAAM,CAACp9D,MAA5C,EAAoDmC,EAAE,EAAtD,EAA0D;MACtD,IAAI6G,IAAI,GAAGo0D,MAAM,CAACj7D,EAAD,CAAjB;MACA+G,GAAG,CAACzE,IAAJ,CAASuE,IAAI,GAAG,GAAP,GAAamoD,OAAO,CAACnoD,IAAD,CAA7B;IACH;;IACDE,GAAG,GAAGA,GAAG,CAACvE,IAAJ,CAAS,GAAT,CAAN;;IACA,IAAIksD,EAAE,CAAC2F,UAAH,CAAcvtC,GAAd,IAAqB4nC,EAAE,CAAC2F,UAAH,CAAcvtC,GAAd,CAAkB5mB,OAAlB,CAA0B,GAA1B,MAAmC,CAAC,CAAzD,IAA8D,CAAC4mD,SAAnE,EAA8E;MAC1E,OAAO//C,GAAP;IACH;;IACD,OAAOA,GAAG,CAAClJ,MAAJ,GAAaipD,SAAS,GAAG,GAAZ,GAAkB//C,GAA/B,GAAqC+/C,SAAS,IAAI,EAAzD;EACH,CAnBD;;EAoBAiS,YAAY,CAACr8D,SAAb,CAAuBw+D,iBAAvB,GAA2C,UAAUl8D,GAAV,EAAem8D,UAAf,EAA2B;IAClE,KAAK,IAAIn7D,EAAE,GAAG,CAAT,EAAY8F,EAAE,GAAG,CAAC7G,uEAAiB,CAACk8D,UAAD,CAAlB,GAAiCr7D,MAAM,CAACjB,IAAP,CAAYs8D,UAAZ,CAAjC,GAA2D,EAAjF,EAAqFn7D,EAAE,GAAG8F,EAAE,CAACjI,MAA7F,EAAqGmC,EAAE,EAAvG,EAA2G;MACvG,IAAI6G,IAAI,GAAGf,EAAE,CAAC9F,EAAD,CAAb;;MACA,IAAKm7D,UAAU,CAACt0D,IAAD,CAAV,YAA4BsF,IAAjC,EAAwC;QACpCgvD,UAAU,CAACt0D,IAAD,CAAV,GAAmB4/C,QAAQ,CAACgM,SAAT,CAAmBmB,WAAnB,CAA+BuH,UAAU,CAACt0D,IAAD,CAAzC,CAAnB;MACH;IACJ;;IACD,OAAOs0D,UAAP;EACH,CARD;EASA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIpC,YAAY,CAACr8D,SAAb,CAAuBi5D,MAAvB,GAAgC,UAAUjH,EAAV,EAAc9wD,IAAd,EAAoBkpD,SAApB,EAA+B;IAC3D,OAAO;MACHhgC,GAAG,EAAE,CAAC4nC,EAAE,CAAC2F,UAAH,CAAcmE,SAAd,IAA2B9J,EAAE,CAAC2F,UAAH,CAAcvtC,GAA1C,EAA+CxoB,OAA/C,CAAuD,MAAvD,EAA+DwoD,SAAS,GAAG,MAAMA,SAAT,GAAqB,EAA7F,CADF;MAEHlpD,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAe5sC,IAAf,EAAqB,KAAK0R,OAAL,CAAa8rD,SAAb,GAAyB,KAAKF,iBAA9B,GAAkD,IAAvE;IAFH,CAAP;EAIH,CALD;EAMA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACInC,YAAY,CAACr8D,SAAb,CAAuB8xB,MAAvB,GAAgC,UAAUkgC,EAAV,EAAc8H,QAAd,EAAwBp4D,KAAxB,EAA+B0oD,SAA/B,EAA0C;IACtE,IAAIhgC,GAAJ;;IACA,IAAI,OAAO1oB,KAAP,KAAiB,QAAjB,IAA6B,CAACqoD,QAAQ,CAAC3nC,KAAT,CAAeo0C,MAAf,CAAsB90D,KAAtB,CAAlC,EAAgE;MAC5D0oB,GAAG,GAAG,OAAO1oB,KAAP,GAAe,IAArB;IACH,CAFD,MAGK;MACD0oB,GAAG,GAAG,MAAM1oB,KAAN,GAAc,GAApB;IACH;;IACD,OAAO;MACH+P,IAAI,EAAE,QADH;MAEH2Y,GAAG,EAAE,CAAC4nC,EAAE,CAAC2F,UAAH,CAAc8D,SAAd,IAA2BzJ,EAAE,CAAC2F,UAAH,CAAcvtC,GAA1C,EAA+CxoB,OAA/C,CAAuD,MAAvD,EAA+DwoD,SAAS,GAAG,MAAMA,SAAT,GAAqB,EAA7F,IAAmGhgC;IAFrG,CAAP;EAIH,CAZD;EAaA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIiyC,YAAY,CAACr8D,SAAb,CAAuBm5D,MAAvB,GAAgC,UAAUnH,EAAV,EAAc8H,QAAd,EAAwBp4D,KAAxB,EAA+B0oD,SAA/B,EAA0CqC,KAA1C,EAAiD6O,QAAjD,EAA2D;IACvF,IAAI,KAAK1oD,OAAL,CAAakqD,UAAb,KAA4B,OAA5B,IAAuC,CAACv6D,uEAAiB,CAAC+4D,QAAD,CAA7D,EAAyE;MACrE55D,KAAK,GAAG,KAAKi9D,gBAAL,CAAsBj9D,KAAtB,EAA6B45D,QAA7B,EAAuCxB,QAAvC,CAAR;IACH;;IACD,IAAI1vC,GAAJ;;IACA,IAAI,OAAO1oB,KAAK,CAACo4D,QAAD,CAAZ,KAA2B,QAA3B,IAAuC,CAAC/P,QAAQ,CAAC3nC,KAAT,CAAeo0C,MAAf,CAAsB90D,KAAK,CAACo4D,QAAD,CAA3B,CAA5C,EAAoF;MAChF1vC,GAAG,GAAG,OAAO1oB,KAAK,CAACo4D,QAAD,CAAZ,GAAyB,IAA/B;IACH,CAFD,MAGK;MACD1vC,GAAG,GAAG,MAAM1oB,KAAK,CAACo4D,QAAD,CAAX,GAAwB,GAA9B;IACH;;IACD,OAAO;MACHroD,IAAI,EAAE,KAAKmB,OAAL,CAAakqD,UADhB;MAEH1yC,GAAG,EAAE,CAAC4nC,EAAE,CAAC2F,UAAH,CAAcqE,SAAd,IAA2BhK,EAAE,CAAC2F,UAAH,CAAcvtC,GAA1C,EAA+CxoB,OAA/C,CAAuD,MAAvD,EAA+DwoD,SAAS,GAAG,MAAMA,SAAT,GAAqB,EAA7F,IAAmGhgC,GAFrG;MAGHlpB,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAepsC,KAAf,EAAsB,KAAKkR,OAAL,CAAa8rD,SAAb,GAAyB,KAAKF,iBAA9B,GAAkD,IAAxE,CAHH;MAIH9jB,MAAM,EAAE,KAAK9nC,OAAL,CAAa8nC;IAJlB,CAAP;EAMH,CAjBD;EAkBA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI2hB,YAAY,CAACr8D,SAAb,CAAuB44D,YAAvB,GAAsC,UAAU5G,EAAV,EAAc6G,OAAd,EAAuBlyD,CAAvB,EAA0B8lD,KAA1B,EAAiC6O,QAAjC,EAA2C;IAC7E,IAAIsD,WAAW,GAAGj4D,CAAC,CAACgpD,IAAF,GAAS5F,QAAQ,CAACwI,OAAT,CAAiB,KAAK3/C,OAAL,CAAa6pD,QAA9B,CAA3B;IACA,IAAIryC,GAAG,GAAG,KAAKwzC,OAAL,GAAe,KAAKA,OAAL,GAAe,GAAf,GAAqB,KAAKhrD,OAAL,CAAa2pD,KAAjD,GACNvK,EAAE,CAAC2F,UAAH,CAAcvtC,GAAd,CAAkBxoB,OAAlB,CAA0B,MAA1B,EAAkC,MAAM,KAAKgR,OAAL,CAAa2pD,KAArD,CADJ;IAEA51D,CAAC,CAACyjB,GAAF,GAAQ,KAAK0zC,iBAAL,GAAyB,KAAKA,iBAA9B,GAAkDn3D,CAAC,CAACyjB,GAA5D;IACA,IAAI/kB,IAAI,GAAG;MACP+kB,GAAG,EAAEzjB,CAAC,CAACyjB,GADA;MAEP9nB,GAAG,EAAEqE,CAAC,CAACrE,GAFA;MAGPu8D,GAAG,EAAE,CAHE;MAIPC,IAAI,EAAE/U,QAAQ,CAACwI,OAAT,CAAiB,KAAK3/C,OAAL,CAAa4pD,SAA9B;IAJC,CAAX;IAMA,IAAIvK,GAAG,GAAG,OAAO2M,WAAP,GAAqB,IAA/B;IACA3M,GAAG,IAAI,6CAA6C5sD,IAAI,CAACy5D,IAAL,CAAUl9D,OAAV,CAAkB,IAAlB,EAAwB,EAAxB,CAA7C,GAA2E,IAAlF;IACA,KAAKg2D,GAAL,CAAS4E,SAAT,GAAqB,CAArB;IACAvK,GAAG,IAAI,KAAK8M,qBAAL,CAA2BlG,OAAO,CAACG,YAAnC,EAAiD3zD,IAAjD,EAAuD2sD,EAAvD,CAAP;IACAC,GAAG,IAAI,KAAK+M,qBAAL,CAA2BnG,OAAO,CAACK,cAAnC,EAAmD7zD,IAAnD,EAAyD2sD,EAAzD,EAA6DsJ,QAAQ,GAAGA,QAAQ,CAACpC,cAAZ,GAA6B,EAAlG,CAAP;IACAjH,GAAG,IAAI,KAAKgN,qBAAL,CAA2BpG,OAAO,CAACE,cAAnC,EAAmD1zD,IAAnD,EAAyD2sD,EAAzD,CAAP;IACAC,GAAG,IAAI5sD,IAAI,CAACy5D,IAAL,GAAY,MAAnB;IACA7M,GAAG,IAAI,OAAO2M,WAAP,GAAqB,IAA5B;IACA,OAAO;MACHntD,IAAI,EAAE,MADH;MAEH2Y,GAAG,EAAEA,GAFF;MAGH4B,QAAQ,EAAE,MAHP;MAIH9B,WAAW,EAAE,6CAA6C00C,WAJvD;MAKH19D,IAAI,EAAE+wD;IALH,CAAP;EAOH,CA1BD;EA2BA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIoK,YAAY,CAACr8D,SAAb,CAAuBi/D,qBAAvB,GAA+C,UAAUt1B,GAAV,EAAehjC,CAAf,EAAkBqrD,EAAlB,EAAsB;IACjE,IAAI,CAACroB,GAAL,EAAU;MACN,OAAO,EAAP;IACH;;IACD,IAAIsoB,GAAG,GAAG,EAAV;IACA,IAAIiN,IAAI,GAAG;MACP,UAAU,SADH;MAEP,OAAO,UAAUh+D,IAAV,EAAgBY,CAAhB,EAAmBQ,GAAnB,EAAwB;QAC3B,IAAI8nB,GAAG,GAAG2/B,QAAQ,CAAClwB,SAAT,CAAmBv3B,GAAnB,EAAwBpB,IAAI,CAACY,CAAD,CAA5B,CAAV;;QACA,IAAI,OAAOsoB,GAAP,KAAe,QAAf,IAA2B2/B,QAAQ,CAAC3nC,KAAT,CAAeo0C,MAAf,CAAsBpsC,GAAtB,CAA/B,EAA2D;UACvD,OAAO,MAAMA,GAAN,GAAY,GAAnB;QACH,CAFD,MAGK,IAAIA,GAAG,YAAY3a,IAAnB,EAAyB;UAC1B,IAAI0vD,QAAQ,GAAGj+D,IAAI,CAACY,CAAD,CAAJ,CAAQQ,GAAR,CAAf;UACA,OAAO,MAAM68D,QAAQ,CAACtI,MAAT,EAAN,GAA0B,GAAjC;QACH,CAHI,MAIA;UACD,OAAO,OAAOzsC,GAAP,GAAa,IAApB;QACH;MACJ,CAdM;MAeP,QAAQ,UAAUlpB,IAAV,EAAgBY,CAAhB,EAAmB;QAAE,OAAO,EAAP;MAAY;IAflC,CAAX;IAiBAmwD,GAAG,GAAG,KAAKmN,mBAAL,CAAyBz1B,GAAzB,EAA8BhjC,CAA9B,EAAiCu4D,IAAjC,EAAuClN,EAAvC,CAAN;IACA,OAAOC,GAAG,GAAG,IAAb;EACH,CAxBD;EAyBA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIoK,YAAY,CAACr8D,SAAb,CAAuB++D,qBAAvB,GAA+C,UAAUp1B,GAAV,EAAehjC,CAAf,EAAkBqrD,EAAlB,EAAsB;IACjE,IAAI,CAACroB,GAAL,EAAU;MACN,OAAO,EAAP;IACH;;IACD,IAAIsoB,GAAG,GAAG,EAAV;IACA,IAAIiN,IAAI,GAAG;MACP,UAAU,OADH;MAEP,OAAO,UAAUh+D,IAAV,EAAgBY,CAAhB,EAAmBQ,GAAnB,EAAwB;QAAE,OAAO,EAAP;MAAY,CAFtC;MAGP,QAAQ,UAAUpB,IAAV,EAAgBY,CAAhB,EAAmB;QAAE,OAAOqgB,IAAI,CAAC2rB,SAAL,CAAe5sC,IAAI,CAACY,CAAD,CAAnB,IAA0B,MAAjC;MAA0C;IAHhE,CAAX;IAKAmwD,GAAG,GAAG,KAAKmN,mBAAL,CAAyBz1B,GAAzB,EAA8BhjC,CAA9B,EAAiCu4D,IAAjC,EAAuClN,EAAvC,CAAN;IACA,OAAOC,GAAP;EACH,CAZD;EAaA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIoK,YAAY,CAACr8D,SAAb,CAAuBg/D,qBAAvB,GAA+C,UAAUr1B,GAAV,EAAehjC,CAAf,EAAkBqrD,EAAlB,EAAsBqN,GAAtB,EAA2B;IACtE,IAAIj6D,KAAK,GAAG,IAAZ;;IACA,IAAI,CAACukC,GAAL,EAAU;MACN,OAAO,EAAP;IACH;;IACD,IAAIsoB,GAAG,GAAG,EAAV;IACAtoB,GAAG,CAACtlC,OAAJ,CAAY,UAAUm0C,MAAV,EAAkB;MAAE,OAAOA,MAAM,GAAGpzC,KAAK,CAACu5D,gBAAN,CAAuBnmB,MAAvB,EAA+B6mB,GAAG,CAACjmC,MAAJ,CAAW,UAAUkmC,CAAV,EAAa;QAAE,OAAOvV,QAAQ,CAAClwB,SAAT,CAAmBlzB,CAAC,CAACrE,GAArB,EAA0Bg9D,CAA1B,MAAiCvV,QAAQ,CAAClwB,SAAT,CAAmBlzB,CAAC,CAACrE,GAArB,EAA0Bk2C,MAA1B,CAAxC;MAA4E,CAAtG,EAAwG,CAAxG,CAA/B,EAA2I7xC,CAAC,CAACrE,GAA7I,CAAhB;IAAoK,CAApM;IACA,IAAI48D,IAAI,GAAG;MACP,UAAU,KAAKtsD,OAAL,CAAakqD,UAAb,GAA0B,GAD7B;MAEP,OAAO,UAAU57D,IAAV,EAAgBY,CAAhB,EAAmBQ,GAAnB,EAAwB;QAC3B,IAAI,OAAOpB,IAAI,CAACY,CAAD,CAAJ,CAAQQ,GAAR,CAAP,KAAwB,QAAxB,IAAoCynD,QAAQ,CAAC3nC,KAAT,CAAeo0C,MAAf,CAAsBt1D,IAAI,CAACY,CAAD,CAAJ,CAAQQ,GAAR,CAAtB,CAAxC,EAA6E;UACzE,OAAO,MAAMpB,IAAI,CAACY,CAAD,CAAJ,CAAQQ,GAAR,CAAN,GAAqB,GAA5B;QACH,CAFD,MAGK,IAAIpB,IAAI,CAACY,CAAD,CAAJ,CAAQQ,GAAR,aAAwBmN,IAA5B,EAAkC;UACnC,IAAIT,IAAI,GAAG9N,IAAI,CAACY,CAAD,CAAJ,CAAQQ,GAAR,CAAX;UACA,OAAO,MAAM0M,IAAI,CAAC6nD,MAAL,EAAN,GAAsB,GAA7B;QACH,CAHI,MAIA;UACD,OAAO,OAAO31D,IAAI,CAACY,CAAD,CAAJ,CAAQQ,GAAR,CAAP,GAAsB,IAA7B;QACH;MACJ,CAbM;MAcP,QAAQ,UAAUpB,IAAV,EAAgBY,CAAhB,EAAmB;QAAE,OAAOqgB,IAAI,CAAC2rB,SAAL,CAAe5sC,IAAI,CAACY,CAAD,CAAnB,IAA0B,MAAjC;MAA0C;IAdhE,CAAX;IAgBAmwD,GAAG,GAAG,KAAKmN,mBAAL,CAAyBz1B,GAAzB,EAA8BhjC,CAA9B,EAAiCu4D,IAAjC,EAAuClN,EAAvC,CAAN;IACA,OAAOC,GAAP;EACH,CAzBD;;EA0BAoK,YAAY,CAACY,QAAb,GAAwB,UAAU9yD,IAAV,EAAgB;IACpC,OAAOA,IAAI,CAACvI,OAAL,CAAa,KAAb,EAAoB,GAApB,CAAP;EACH,CAFD;;EAGAy6D,YAAY,CAACr8D,SAAb,CAAuBo/D,mBAAvB,GAA6C,UAAUz1B,GAAV,EAAehjC,CAAf,EAAkBu4D,IAAlB,EAAwBlN,EAAxB,EAA4B;IACrE,IAAIC,GAAG,GAAG,EAAV;;IACA,KAAK,IAAInwD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6nC,GAAG,CAACxoC,MAAxB,EAAgCW,CAAC,EAAjC,EAAqC;MACjCmwD,GAAG,IAAI,OAAOtrD,CAAC,CAACm4D,IAAT,GAAgB,IAAvB;MACA7M,GAAG,IAAI,KAAKr/C,OAAL,CAAagqD,gBAAb,GAAgC,MAAvC;MACA3K,GAAG,IAAIiN,IAAI,CAACpyC,MAAZ;;MACA,IAAIoyC,IAAI,CAACpyC,MAAL,KAAgB,OAApB,EAA6B;QACzBmlC,GAAG,IAAI,CAACD,EAAE,CAAC2F,UAAH,CAAcmE,SAAd,IAA2B9J,EAAE,CAAC2F,UAAH,CAAc6D,OAAzC,IAAoD70D,CAAC,CAACyjB,GAAvD,IAA8D80C,IAAI,CAAC90C,GAAL,CAASuf,GAAT,EAAc7nC,CAAd,EAAiB6E,CAAC,CAACrE,GAAnB,CAA9D,GAAwF,aAA/F;MACH,CAFD,MAGK,IAAI48D,IAAI,CAACpyC,MAAL,KAAgB,MAAhB,IAA0BoyC,IAAI,CAACpyC,MAAL,KAAgB,QAA9C,EAAwD;QACzDmlC,GAAG,IAAI,CAACD,EAAE,CAAC2F,UAAH,CAAcqE,SAAd,IAA2BhK,EAAE,CAAC2F,UAAH,CAAc6D,OAAzC,IAAoD70D,CAAC,CAACyjB,GAAvD,IAA8D80C,IAAI,CAAC90C,GAAL,CAASuf,GAAT,EAAc7nC,CAAd,EAAiB6E,CAAC,CAACrE,GAAnB,CAA9D,GAAwF,aAA/F;MACH,CAFI,MAGA,IAAI48D,IAAI,CAACpyC,MAAL,KAAgB,SAApB,EAA+B;QAChCmlC,GAAG,IAAI,CAACD,EAAE,CAAC2F,UAAH,CAAc8D,SAAd,IAA2BzJ,EAAE,CAAC2F,UAAH,CAAc6D,OAAzC,IAAoD70D,CAAC,CAACyjB,GAAvD,IAA8D80C,IAAI,CAAC90C,GAAL,CAASuf,GAAT,EAAc7nC,CAAd,EAAiB6E,CAAC,CAACrE,GAAnB,CAA9D,GAAwF,aAA/F;MACH;;MACD2vD,GAAG,IAAI,aAAa,KAAKr/C,OAAL,CAAa8nC,MAA1B,GAAmC,IAA1C;MACAuX,GAAG,IAAI,iBAAiB,KAAK2F,GAAL,CAAS4E,SAAT,EAAjB,GAAwC,IAA/C;MACAvK,GAAG,IAAI,KAAKr/C,OAAL,CAAaiqD,yBAAb,GAAyC,IAAhD;;MACA,IAAI,CAACt6D,uEAAiB,CAAConC,GAAG,CAAC7nC,CAAD,CAAH,CAAO,aAAP,CAAD,CAAtB,EAA+C;QAC3CmwD,GAAG,IAAI,eAAetoB,GAAG,CAAC7nC,CAAD,CAAH,CAAO,aAAP,CAAf,GAAuC,MAA9C;QACA,OAAO6nC,GAAG,CAAC7nC,CAAD,CAAH,CAAO,aAAP,CAAP;MACH,CAHD,MAIK;QACDmwD,GAAG,IAAI,IAAP;MACH;;MACDA,GAAG,IAAIiN,IAAI,CAACh+D,IAAL,CAAUyoC,GAAV,EAAe7nC,CAAf,CAAP;IACH;;IACD,OAAOmwD,GAAP;EACH,CA5BD;;EA6BAoK,YAAY,CAACr8D,SAAb,CAAuBm+D,oBAAvB,GAA8C,UAAUj9D,IAAV,EAAgBurD,KAAhB,EAAuB4F,GAAvB,EAA4BC,OAA5B,EAAqCuG,OAArC,EAA8C;IACxF,IAAIxG,GAAG,IAAIA,GAAG,CAACjmC,iBAAJ,CAAsB,cAAtB,CAAP,IAAgDimC,GAAG,CAACjmC,iBAAJ,CAAsB,cAAtB,EAAsC5oB,OAAtC,CAA8C,KAA9C,MAAyD,CAAC,CAA9G,EAAiH;MAC7G,OAAQipD,KAAK,CAACtC,eAAN,GAAwB;QAAEnmD,MAAM,EAAE,EAAV;QAAc8rD,KAAK,EAAE;MAArB,CAAxB,GAAmD,EAA3D;IACH;;IACD,IAAIwC,OAAO,IAAI,KAAK1/C,OAAL,CAAa2pD,KAAxB,IAAiCxS,QAAQ,CAAC8B,QAAT,CAAkByG,OAAO,CAACloC,GAA1B,EAA+B,KAAKxX,OAAL,CAAa2pD,KAA5C,CAAjC,IAAuFjK,OAAO,CAAC7gD,IAAR,CAAauN,WAAb,OAA+B,MAA1H,EAAkI;MAC9H,IAAI2wC,IAAI,GAAG0C,GAAG,CAACjmC,iBAAJ,CAAsB,cAAtB,CAAX;MACA,IAAImzC,IAAI,GAAG,KAAK,CAAhB;MACA,IAAIC,OAAO,GAAG,KAAK,CAAnB;MACA,IAAIvxD,CAAC,GAAG/M,IAAI,GAAG,EAAf;MACAyuD,IAAI,GAAGA,IAAI,CAACn8C,SAAL,CAAem8C,IAAI,CAACnsD,OAAL,CAAa,gBAAb,IAAiC,CAAhD,CAAP;MACAyK,CAAC,GAAGA,CAAC,CAACpM,KAAF,CAAQ8tD,IAAR,CAAJ;;MACA,IAAI1hD,CAAC,CAAC9M,MAAF,GAAW,CAAf,EAAkB;QACd,OAAO,EAAP;MACH;;MACD8M,CAAC,GAAGA,CAAC,CAAC,CAAD,CAAL;MACA,IAAIwxD,KAAK,GAAG,sDAAsDjzC,IAAtD,CAA2Dve,CAA3D,CAAZ;;MACA,IAAIwxD,KAAJ,EAAW;QACPxxD,CAAC,CAACrM,OAAF,CAAU69D,KAAK,CAAC,CAAD,CAAf,EAAoB,EAApB;MACH;;MACD,IAAIC,UAAU,GAAGD,KAAK,GAAGA,KAAK,CAAC,CAAD,CAAR,GAAc,EAApC;MACAxxD,CAAC,GAAGA,CAAC,CAACpM,KAAF,CAAQ69D,UAAR,CAAJ;;MACA,KAAK,IAAI59D,CAAC,GAAGmM,CAAC,CAAC9M,MAAf,EAAuBW,CAAC,GAAG,CAAC,CAA5B,EAA+BA,CAAC,EAAhC,EAAoC;QAChC,IAAI,CAAC,iBAAiBoP,IAAjB,CAAsBjD,CAAC,CAACnM,CAAD,CAAvB,CAAD,IAAgC,CAAC,cAAcoP,IAAd,CAAmBjD,CAAC,CAACnM,CAAD,CAApB,CAArC,EAA+D;UAC3D;QACH;;QACDy9D,IAAI,GAAGv9D,QAAQ,CAAC,uBAAuBwqB,IAAvB,CAA4Bve,CAAC,CAACnM,CAAD,CAA7B,EAAkC,CAAlC,CAAD,EAAuC,EAAvC,CAAf;;QACA,IAAI+2D,OAAO,CAACG,YAAR,CAAqBuG,IAArB,CAAJ,EAAgC;UAC5BC,OAAO,GAAGzV,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyB,WAAW7mC,IAAX,CAAgBve,CAAC,CAACnM,CAAD,CAAjB,EAAsB,CAAtB,CAAzB,CAAV;UACA6B,4DAAM,CAAC,EAAD,EAAKk1D,OAAO,CAACG,YAAR,CAAqBuG,IAArB,CAAL,EAAiC,KAAK1H,eAAL,CAAqB2H,OAArB,CAAjC,CAAN;QACH;MACJ;;MACD,OAAO3G,OAAP;IACH;;IACD,OAAO,IAAP;EACH,CAlCD;;EAmCAwD,YAAY,CAACr8D,SAAb,CAAuB2+D,gBAAvB,GAA0C,UAAUz9D,IAAV,EAAgBo6D,QAAhB,EAA0Bh5D,GAA1B,EAA+B;IACrE,IAAI8C,KAAK,GAAG,IAAZ;;IACA,IAAI7C,uEAAiB,CAAC+4D,QAAD,CAArB,EAAiC;MAC7B,OAAOp6D,IAAP;IACH;;IACDkC,MAAM,CAACjB,IAAP,CAAYjB,IAAZ,EAAkBmD,OAAlB,CAA0B,UAAU8F,IAAV,EAAgB;MACtC,IAAIA,IAAI,KAAK7H,GAAT,IAAgB6H,IAAI,KAAK,aAA7B,EAA4C;QACxC,IAAI4/C,QAAQ,CAACoI,aAAT,CAAuBjxD,IAAI,CAACiJ,IAAD,CAA3B,CAAJ,EAAwC;UACpC/E,KAAK,CAACu5D,gBAAN,CAAuBz9D,IAAI,CAACiJ,IAAD,CAA3B,EAAmCmxD,QAAQ,CAACnxD,IAAD,CAA3C;;UACA,IAAIw1D,KAAK,GAAGv8D,MAAM,CAACjB,IAAP,CAAYjB,IAAI,CAACiJ,IAAD,CAAhB,EAAwBivB,MAAxB,CAA+B,UAAUl4B,IAAV,EAAgB;YAAE,OAAOA,IAAI,KAAK,aAAhB;UAAgC,CAAjF,CAAZ;;UACA,IAAIy+D,KAAK,CAACx+D,MAAN,KAAiB,CAArB,EAAwB;YACpB,OAAOD,IAAI,CAACiJ,IAAD,CAAX;UACH;QACJ,CAND,MAOK,IAAIjJ,IAAI,CAACiJ,IAAD,CAAJ,KAAemxD,QAAQ,CAACnxD,IAAD,CAA3B,EAAmC;UACpC,OAAOjJ,IAAI,CAACiJ,IAAD,CAAX;QACH,CAFI,MAGA,IAAIjJ,IAAI,CAACiJ,IAAD,CAAJ,IAAcmxD,QAAQ,CAACnxD,IAAD,CAAtB,IAAgCjJ,IAAI,CAACiJ,IAAD,CAAJ,CAAWy1D,OAAX,OAAyBtE,QAAQ,CAACnxD,IAAD,CAAR,CAAey1D,OAAf,EAA7D,EAAuF;UACxF,OAAO1+D,IAAI,CAACiJ,IAAD,CAAX;QACH;MACJ;IACJ,CAhBD;IAiBA,OAAOjJ,IAAP;EACH,CAvBD;;EAwBA,OAAOm7D,YAAP;AACH,CArwB2C,CAqwB1CtC,UArwB0C,CAA5C;AAswBA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAI8F,cAAc;AAAG;AAAyB,UAAU1gC,MAAV,EAAkB;EAC5Db,SAAS,CAACuhC,cAAD,EAAiB1gC,MAAjB,CAAT;;EACA,SAAS0gC,cAAT,CAAwBr1D,KAAxB,EAA+B;IAC3B,IAAIpF,KAAK,GAAG+5B,MAAM,CAACl5B,IAAP,CAAY,IAAZ,EAAkBuE,KAAlB,KAA4B,IAAxC,CAD2B,CAE3B;;;IACApF,KAAK,CAACwN,OAAN,GAAgBjP,4DAAM,CAAC,EAAD,EAAKyB,KAAK,CAACwN,OAAX,EAAoB;MACtC8kD,WAAW,EAAE,KADyB;MAEtChd,MAAM,EAAE,gDAF8B;MAGtC4hB,eAAe,EAAE,iBAHqB;MAItC/Q,MAAM,EAAE,UAJ8B;MAKtCn2B,MAAM,EAAE,SAL8B;MAMtCm3B,IAAI,EAAE,OANgC;MAOtCF,IAAI,EAAE,MAPgC;MAQtCyD,KAAK,EAAE,QAR+B;MAStC5E,MAAM,EAAE,SAT8B;MAUtCR,KAAK,EAAE,SAV+B;MAWtCF,MAAM,EAAE,SAX8B;MAYtC+R,KAAK,EAAE,QAZ+B;MAatCC,SAAS,EAAE,cAb2B;MActCC,QAAQ,EAAE,QAd4B;MAetCC,SAAS,EAAE,cAf2B;MAgBtCC,YAAY,EAAE,0CAhBwB;MAiBtCC,gBAAgB,EAAE,oEAjBoB;MAkBtCC,yBAAyB,EAAE,gDAlBW;MAmBtCC,UAAU,EAAE,OAnB0B;MAoBtC4B,SAAS,EAAE,KApB2B;MAqBtCx+D,KAAK,EAAE;IArB+B,CAApB,CAAtB;IAuBAyD,4DAAM,CAACyB,KAAK,CAACwN,OAAP,EAAgBpI,KAAK,IAAI,EAAzB,CAAN;IACA,OAAOpF,KAAP;EACH;EACD;AACJ;AACA;;;EACIy6D,cAAc,CAAC7/D,SAAf,CAAyBk5B,aAAzB,GAAyC,YAAY;IACjD,OAAO,gBAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;;;EACI2mC,cAAc,CAAC7/D,SAAf,CAAyBw9D,OAAzB,GAAmC,UAAU72D,CAAV,EAAa;IAC5C,OAAOA,CAAC,KAAK,IAAN,GAAa,MAAb,GAAsB,EAA7B;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIk5D,cAAc,CAAC7/D,SAAf,CAAyB+8D,WAAzB,GAAuC,UAAU/R,SAAV,EAAqByB,KAArB,EAA4BuQ,YAA5B,EAA0C;IAC7E,IAAI5kB,WAAW,GAAG,EAAlB;IACA,IAAIltC,GAAG,GAAG8/C,SAAS,CAACtpD,KAApB;IACA,IAAIo+D,MAAM,GAAG50D,GAAG,YAAYuE,IAA5B;;IACA,IAAIg9C,KAAK,YAAY7D,KAArB,EAA4B;MACxB,IAAIK,OAAO,GAAG,KAAKgR,eAAL,CAAqBxN,KAArB,CAAd;;MACA,KAAK,IAAI3qD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmnD,OAAO,CAACkR,OAAR,CAAgBh5D,MAApC,EAA4CW,CAAC,EAA7C,EAAiD;QAC7C,IAAImnD,OAAO,CAACkR,OAAR,CAAgBr4D,CAAhB,EAAmB6E,CAAnB,CAAqBrE,GAArB,KAA6B0oD,SAAS,CAACtpD,KAA3C,EAAkD;UAC9Cs7D,YAAY,GAAG,IAAf;QACH;MACJ;IACJ;;IACD5kB,WAAW,GAAGjZ,MAAM,CAACn/B,SAAP,CAAiB+8D,WAAjB,CAA6B92D,IAA7B,CAAkC,IAAlC,EAAwC+kD,SAAxC,EAAmDyB,KAAnD,EAA0DuQ,YAA1D,CAAd;;IACA,IAAI8C,MAAJ,EAAY;MACR1nB,WAAW,GAAGA,WAAW,CAACx2C,OAAZ,CAAoB,iBAApB,EAAuC,IAAvC,CAAd;IACH;;IACD,IAAImoD,QAAQ,CAAC3nC,KAAT,CAAeo0C,MAAf,CAAsBtrD,GAAtB,CAAJ,EAAgC;MAC5BktC,WAAW,GAAGA,WAAW,CAACx2C,OAAZ,CAAoB,MAApB,EAA4B,EAA5B,EAAgCA,OAAhC,CAAwC,IAAxC,EAA8C,EAA9C,CAAd;IACH;;IACD,OAAOw2C,WAAP;EACH,CApBD;EAqBA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIynB,cAAc,CAAC7/D,SAAf,CAAyBs9D,YAAzB,GAAwC,UAAU32D,CAAV,EAAa;IACjD,IAAIukD,MAAM,GAAG,KAAK0M,GAAL,CAASwC,QAAT,IAAqB,EAAlC;IACAlP,MAAM,CAACtlD,IAAP,CAAYe,CAAC,CAACrE,GAAd;IACA,KAAKs1D,GAAL,CAASwC,QAAT,GAAoBlP,MAApB;EACH,CAJD;EAKA;AACJ;AACA;AACA;AACA;;;EACI2U,cAAc,CAAC7/D,SAAf,CAAyBq5D,QAAzB,GAAoC,UAAU1yD,CAAV,EAAa;IAC7C,OAAO,KAAKixD,GAAL,CAASwC,QAAT,CAAkBt0D,IAAlB,CAAuB,MAAvB,CAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACI+5D,cAAc,CAAC7/D,SAAf,CAAyB+/D,QAAzB,GAAoC,UAAUp5D,CAAV,EAAa;IAC7C,IAAIvB,KAAK,GAAG,IAAZ;;IACA,IAAI46D,QAAQ,GAAG,EAAf;IACA,IAAIC,QAAQ,GAAG,EAAf;IACA,IAAI5W,OAAO,GAAG1iD,CAAC,CAAC0iD,OAAF,CAAUliD,KAAV,EAAd;IACA,IAAI+4D,KAAK,GAAG,EAAZ;IACA,IAAIvF,OAAO,GAAGh0D,CAAC,CAACg0D,OAAF,CAAUvhC,MAAV,CAAiB,UAAU0uB,IAAV,EAAgB;MAAE,OAAOA,IAAI,CAACtkD,OAAL,CAAa,GAAb,IAAoB,CAAC,CAA5B;IAAgC,CAAnE,CAAd;IACAm3D,OAAO,CAACt2D,OAAR,CAAgB,UAAU+wB,MAAV,EAAkB;MAC9B,IAAIzzB,MAAM,GAAGyzB,MAAM,CAACvzB,KAAP,CAAa,GAAb,CAAb;;MACA,IAAI,EAAEF,MAAM,CAAC,CAAD,CAAN,IAAaq+D,QAAf,CAAJ,EAA8B;QAC1BA,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAAR,GAAsB,EAAtB;MACH;;MACD,IAAIA,MAAM,CAACR,MAAP,KAAkB,CAAtB,EAAyB;QACrB,IAAI6+D,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAAR,CAAoBR,MAApB,IAA8BiC,MAAM,CAACjB,IAAP,CAAY69D,QAAZ,EAAsBx8D,OAAtB,CAA8B7B,MAAM,CAAC,CAAD,CAApC,MAA6C,CAAC,CAAhF,EAAmF;UAC/E,IAAIq+D,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAAR,CAAoB,CAApB,EAAuB6B,OAAvB,CAA+B,SAA/B,MAA8C,CAAC,CAA/C,IAAoDw8D,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAAR,CAAoB,CAApB,EAAuB6B,OAAvB,CAA+B,WAA/B,MAAgD,CAAC,CAAzG,EAA4G;YACxGw8D,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAAR,CAAoB,CAApB,IAAyBq+D,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAAR,CAAoB,CAApB,IAAyB,GAAzB,GAA+B,UAA/B,GAA4CA,MAAM,CAAC,CAAD,CAA3E;UACH,CAFD,MAGK;YACDq+D,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAAR,CAAoB,CAApB,IAAyBq+D,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAAR,CAAoB,CAApB,IAAyB,GAAzB,GAA+BA,MAAM,CAAC,CAAD,CAA9D;UACH;QACJ,CAPD,MAQK;UACDq+D,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAAR,CAAoBiE,IAApB,CAAyB,aAAajE,MAAM,CAAC,CAAD,CAA5C;QACH;MACJ,CAZD,MAaK;QACD,IAAIw+D,GAAG,GAAG,aAAax+D,MAAM,CAACA,MAAM,CAACR,MAAP,GAAgB,CAAjB,CAA7B;QACA,IAAIuhD,GAAG,GAAG,EAAV;QACA,IAAI0d,OAAO,GAAG,EAAd;;QACA,KAAK,IAAIt+D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGH,MAAM,CAACR,MAAP,GAAgB,CAApC,EAAuCW,CAAC,EAAxC,EAA4C;UACxC4gD,GAAG,GAAGA,GAAG,GAAG,UAAN,GAAmB/gD,MAAM,CAACG,CAAD,CAAzB,GAA+B,GAArC;UACAs+D,OAAO,GAAGA,OAAO,GAAG,GAApB;QACH;;QACD,IAAIC,UAAU,GAAG3d,GAAG,GAAGyd,GAAN,GAAYC,OAA7B;;QACA,IAAIJ,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAAR,CAAoBR,MAApB,IAA8BiC,MAAM,CAACjB,IAAP,CAAY69D,QAAZ,EAAsBx8D,OAAtB,CAA8B7B,MAAM,CAAC,CAAD,CAApC,MAA6C,CAAC,CAA5E,IACAyD,KAAK,CAACk7D,gBAAN,CAAuBN,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAA/B,EAA4C,IAA5C,CADJ,EACuD;UACnD,IAAI4+D,GAAG,GAAGn7D,KAAK,CAACk7D,gBAAN,CAAuBN,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAA/B,CAAV;;UACAq+D,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAAR,CAAoB4+D,GAApB,IAA2BP,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAAR,CAAoB4+D,GAApB,IAA2BF,UAAU,CAACz+D,OAAX,CAAmB,UAAnB,EAA+B,GAA/B,CAAtD;QACH,CAJD,MAKK;UACDo+D,QAAQ,CAACr+D,MAAM,CAAC,CAAD,CAAP,CAAR,CAAoBiE,IAApB,CAAyBy6D,UAAzB;QACH;MACJ;IACJ,CApCD,EAP6C,CA4C7C;;IACAj9D,MAAM,CAACjB,IAAP,CAAY69D,QAAZ,EAAsB37D,OAAtB,CAA8B,UAAUmmD,MAAV,EAAkB;MAC5C,IAAKnB,OAAO,CAAC7lD,OAAR,CAAgBgnD,MAAhB,MAA4B,CAAC,CAAlC,EAAsC;QAClCnB,OAAO,CAACzjD,IAAR,CAAa4kD,MAAb;MACH;IACJ,CAJD;IAKAnB,OAAO,CAAChlD,OAAR,CAAgB,UAAUmmD,MAAV,EAAkB;MAC9ByV,QAAQ,CAACzV,MAAD,CAAR,GAAmBA,MAAM,IAAIwV,QAAV,GAAqBxV,MAAM,GAAG,GAAT,GAAewV,QAAQ,CAACxV,MAAD,CAAR,CAAiB1kD,IAAjB,CAAsB,GAAtB,CAAf,GAA4C,GAAjE,GAAuE0kD,MAA1F;IACH,CAFD;IAGApnD,MAAM,CAACjB,IAAP,CAAY89D,QAAZ,EAAsB57D,OAAtB,CAA8B,UAAUm8D,EAAV,EAAc;MAAE,OAAON,KAAK,CAACt6D,IAAN,CAAWq6D,QAAQ,CAACO,EAAD,CAAnB,CAAP;IAAkC,CAAhF;IACA,OAAON,KAAK,CAACp6D,IAAN,CAAW,GAAX,CAAP;EACH,CAvDD;;EAwDA+5D,cAAc,CAAC7/D,SAAf,CAAyBsgE,gBAAzB,GAA4C,UAAU7T,KAAV,EAAiBqO,QAAjB,EAA2B;IACnE,KAAK,IAAIh5D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2qD,KAAK,CAACtrD,MAA1B,EAAkCW,CAAC,EAAnC,EAAuC;MACnC,IAAI2qD,KAAK,CAAC3qD,CAAD,CAAL,CAAS0B,OAAT,CAAiB,SAAjB,MAAgC,CAAC,CAArC,EAAwC;QACpC,OAAOs3D,QAAQ,GAAG,IAAH,GAAUh5D,CAAzB;MACH;IACJ;;IACD,OAAOg5D,QAAQ,GAAG,KAAH,GAAW,CAA1B;EACH,CAPD;EAQA;AACJ;AACA;AACA;AACA;AACA;;;EACI+E,cAAc,CAAC7/D,SAAf,CAAyBygE,UAAzB,GAAsC,UAAUC,cAAV,EAA0B;IAC5D,IAAInW,MAAM,GAAGmW,cAAc,CAACh2D,GAAf,CAAmB,UAAU++C,KAAV,EAAiB;MAAE,OAAO4S,YAAY,CAACY,QAAb,CAAsBxT,KAAtB,CAAP;IAAsC,CAA5E,EAA8E3jD,IAA9E,CAAmF,GAAnF,CAAb;IACA,OAAO,cAAcykD,MAAd,GAAuB,IAA9B;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;;;EACIsV,cAAc,CAAC7/D,SAAf,CAAyB65D,QAAzB,GAAoC,UAAUlzD,CAAV,EAAa;IAC7C,OAAOw4B,MAAM,CAACn/B,SAAP,CAAiB65D,QAAjB,CAA0B5zD,IAA1B,CAA+B,IAA/B,EAAqCU,CAAC,CAACyyB,MAAF,CAAS,UAAU0uB,IAAV,EAAgB;MAAE,OAAOA,IAAI,CAACtkD,OAAL,CAAa,GAAb,MAAsB,CAAC,CAA9B;IAAkC,CAA7D,CAArC,CAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIq8D,cAAc,CAAC7/D,SAAf,CAAyB0rB,UAAzB,GAAsC,UAAUsmC,EAAV,EAAcM,OAAd,EAAuBmL,QAAvB,EAAiC;IACnE,IAAIA,QAAQ,CAAChsD,IAAT,KAAkB,MAAlB,IAA4BgsD,QAAQ,CAAChsD,IAAT,KAAkB,KAA9C,IAAuDgsD,QAAQ,CAAChsD,IAAT,KAAkB,OAA7E,EAAsF;MAClF6gD,OAAO,CAAC7mC,gBAAR,CAAyB,QAAzB,EAAmC,uBAAnC;IACH;;IACD6mC,OAAO,CAAC7mC,gBAAR,CAAyB,QAAzB,EAAmC,KAAK7Y,OAAL,CAAa8nC,MAAhD;EACH,CALD;EAMA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACImlB,cAAc,CAAC7/D,SAAf,CAAyB63D,eAAzB,GAA2C,UAAU32D,IAAV,EAAgBkwD,EAAhB,EAAoB3E,KAApB,EAA2B4F,GAA3B,EAAgCC,OAAhC,EAAyCuG,OAAzC,EAAkD;IACzF,IAAI8H,QAAQ,GAAG,gBAAf;IACA,IAAIC,UAAU,GAAG,UAAjB;;IACA,IAAKtO,OAAO,IAAIA,OAAO,CAAC7gD,IAAR,KAAiB,KAA7B,IAAuC,CAAC,KAAKmsD,OAA7C,KAAyD18D,IAAI,CAACy/D,QAAD,CAAJ,IAAkBz/D,IAAI,CAAC0/D,UAAD,CAA/E,CAAJ,EAAkG;MAC9F,IAAIC,OAAO,GAAG3/D,IAAI,CAACy/D,QAAD,CAAJ,GAAiBz/D,IAAI,CAACy/D,QAAD,CAAJ,CAAe9+D,KAAf,CAAqB,aAArB,CAAjB,GAAuDX,IAAI,CAAC0/D,UAAD,CAAJ,CAAiB/+D,KAAjB,CAAuB,aAAvB,CAArE;MACA,KAAK+7D,OAAL,GAAeiD,OAAO,CAAC,CAAD,CAAtB;MACA,KAAK/C,iBAAL,GAAyB+C,OAAO,CAAC,CAAD,CAAhC;IACH;;IACD,IAAItG,OAAO,GAAG,SAAd;IACA,IAAI3C,GAAG,GAAGtF,OAAO,IAAIA,OAAO,CAACiI,OAAD,CAA5B;;IACA,IAAI2D,aAAa,GAAG/+B,MAAM,CAACn/B,SAAP,CAAiBm+D,oBAAjB,CAAsCl4D,IAAtC,CAA2C,IAA3C,EAAiD/E,IAAjD,EAAuDurD,KAAvD,EAA8D4F,GAA9D,EAAmEC,OAAnE,EAA4EuG,OAA5E,CAApB;;IACA,IAAIqF,aAAJ,EAAmB;MACf,OAAOA,aAAP;IACH;;IACD,IAAIpO,KAAK,GAAG,IAAZ;IACA,IAAIgR,SAAS,GAAG,cAAhB;IACA,IAAIC,WAAW,GAAG,QAAlB;;IACA,IAAItU,KAAK,IAAIA,KAAK,CAACtC,eAAnB,EAAoC;MAChC,IAAI2W,SAAS,IAAI5/D,IAAjB,EAAuB;QACnB4uD,KAAK,GAAG5uD,IAAI,CAAC4/D,SAAD,CAAZ;MACH,CAFD,MAGK,IAAIC,WAAW,IAAI7/D,IAAnB,EAAyB;QAC1B4uD,KAAK,GAAG5uD,IAAI,CAAC6/D,WAAD,CAAZ;MACH;IACJ;;IACD7/D,IAAI,GAAG,CAACqB,uEAAiB,CAACrB,IAAI,CAACQ,KAAN,CAAlB,GAAiCR,IAAI,CAACQ,KAAtC,GAA8CR,IAArD;IACA,IAAImE,IAAI,GAAG,EAAX;IACAA,IAAI,CAACyqD,KAAL,GAAaA,KAAb;IACAzqD,IAAI,CAACrB,MAAL,GAAc9C,IAAd;IACA,KAAK85D,kBAAL,CAAwBpD,GAAxB,EAA6B12D,IAA7B,EAAmCmE,IAAnC,EAAyC,IAAzC,EAA+ConD,KAA/C;IACA,OAAO1C,QAAQ,CAAC4I,MAAT,CAAgB7C,KAAhB,IAAyBzqD,IAAI,CAACrB,MAA9B,GAAuC;MAAEA,MAAM,EAAEqB,IAAI,CAACrB,MAAf;MAAuB8rD,KAAK,EAAEA,KAA9B;MAAqCR,UAAU,EAAEjqD,IAAI,CAACiqD;IAAtD,CAA9C;EACH,CA/BD;;EAgCA,OAAOuQ,cAAP;AACH,CA9P6C,CA8P5CxD,YA9P4C,CAA9C;AA+PA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAI2E,aAAa;AAAG;AAAyB,UAAU7hC,MAAV,EAAkB;EAC3Db,SAAS,CAAC0iC,aAAD,EAAgB7hC,MAAhB,CAAT;;EACA,SAAS6hC,aAAT,GAAyB;IACrB,OAAO7hC,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACj/B,KAAP,CAAa,IAAb,EAAmB+D,SAAnB,CAAnB,IAAoD,IAA3D;EACH;;EACD+8D,aAAa,CAAChhE,SAAd,CAAwBk5B,aAAxB,GAAwC,YAAY;IAChD,OAAO,eAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI8nC,aAAa,CAAChhE,SAAd,CAAwBi5D,MAAxB,GAAiC,UAAUjH,EAAV,EAAc9wD,IAAd,EAAoBkpD,SAApB,EAA+B;IAC5D,OAAO;MACH34C,IAAI,EAAE,MADH;MAEH2Y,GAAG,EAAE4nC,EAAE,CAAC2F,UAAH,CAAcvtC,GAFhB;MAGHlpB,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAe5sC,IAAf;IAHH,CAAP;EAKH,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI8/D,aAAa,CAAChhE,SAAd,CAAwB8xB,MAAxB,GAAiC,UAAUkgC,EAAV,EAAc8H,QAAd,EAAwBp4D,KAAxB,EAA+B0oD,SAA/B,EAA0C;IACvE,OAAO;MACH34C,IAAI,EAAE,QADH;MAEH2Y,GAAG,EAAE4nC,EAAE,CAAC2F,UAAH,CAAcvtC,GAAd,GAAoB,GAApB,GAA0B1oB,KAF5B;MAGHR,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAepsC,KAAf;IAHH,CAAP;EAKH,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIs/D,aAAa,CAAChhE,SAAd,CAAwBm5D,MAAxB,GAAiC,UAAUnH,EAAV,EAAc8H,QAAd,EAAwBp4D,KAAxB,EAA+B0oD,SAA/B,EAA0C;IACvE,OAAO;MACH34C,IAAI,EAAE,KADH;MAEH2Y,GAAG,EAAE4nC,EAAE,CAAC2F,UAAH,CAAcvtC,GAFhB;MAGHlpB,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAepsC,KAAf;IAHH,CAAP;EAKH,CAND;;EAOAs/D,aAAa,CAAChhE,SAAd,CAAwB44D,YAAxB,GAAuC,UAAU5G,EAAV,EAAc6G,OAAd,EAAuBlyD,CAAvB,EAA0B;IAC7D,IAAIvB,KAAK,GAAG,IAAZ;;IACA,IAAIw5D,WAAW,GAAGj4D,CAAC,CAACgpD,IAAF,GAAS5F,QAAQ,CAACwI,OAAT,CAAiB,KAAK3/C,OAAL,CAAa6pD,QAA9B,CAA3B;IACA,IAAIryC,GAAG,GAAG4nC,EAAE,CAAC2F,UAAH,CAAcvtC,GAAd,CAAkBxoB,OAAlB,CAA0B,MAA1B,EAAkC,MAAM,KAAKgR,OAAL,CAAa2pD,KAArD,CAAV;IACA51D,CAAC,CAACyjB,GAAF,GAAQ,KAAK0zC,iBAAL,GAAyB,KAAKA,iBAA9B,GAAkDn3D,CAAC,CAACyjB,GAA5D;IACA,IAAI6nC,GAAG,GAAG,EAAV;;IACA,IAAI/tD,OAAO,GAAG,UAAUpC,CAAV,EAAaknB,CAAb,EAAgB;MAC1B6vC,OAAO,CAACG,YAAR,CAAqB30D,OAArB,CAA6B,UAAUkK,CAAV,EAAaN,CAAb,EAAgB;QACzC,IAAIixD,IAAI,GAAG;UACP,UAAU,OADH;UAEP,OAAO,UAAUh+D,IAAV,EAAgBY,CAAhB,EAAmBQ,GAAnB,EAAwB;YAAE,OAAO,EAAP;UAAY,CAFtC;UAGP,QAAQ,UAAUpB,IAAV,EAAgBY,CAAhB,EAAmB;YAAE,OAAOqgB,IAAI,CAAC2rB,SAAL,CAAe5sC,IAAI,CAACY,CAAD,CAAnB,IAA0B,MAAjC;UAA0C;QAHhE,CAAX;QAKAmwD,GAAG,CAACrsD,IAAJ,CAAS,OAAOg5D,WAAhB;QACA3M,GAAG,CAACrsD,IAAJ,CAAS,iDAAT,EAA4D,EAA5D;QACAqsD,GAAG,CAACrsD,IAAJ,CAAS,UAAU,OAAV,IAAqBosD,EAAE,CAAC2F,UAAH,CAAcmE,SAAd,IAA2B9J,EAAE,CAAC2F,UAAH,CAAc6D,OAAzC,IAAoD70D,CAAC,CAACyjB,GAA3E,IACH80C,IAAI,CAAC90C,GAAL,CAASyuC,OAAO,CAACG,YAAjB,EAA+Bl3D,CAA/B,EAAkC6E,CAAC,CAACrE,GAApC,CADG,GACwC,WADjD;QAEA2vD,GAAG,CAACrsD,IAAJ,CAAS,mBAAmB,iCAA5B;QACAqsD,GAAG,CAACrsD,IAAJ,CAAS,WAAW2nC,QAAQ,CAAC0zB,IAA7B;QACAhP,GAAG,CAACrsD,IAAJ,CAAS,EAAT,EAAa2I,CAAC,GAAG4T,IAAI,CAAC2rB,SAAL,CAAev/B,CAAf,CAAH,GAAuB,EAArC;MACH,CAbD;IAcH,CAfD,CAN6D,CAsB7D;;;IACA,KAAK,IAAIzM,CAAC,GAAG,CAAR,EAAWknB,CAAC,GAAG6vC,OAAO,CAACG,YAAR,CAAqB73D,MAAzC,EAAiDW,CAAC,GAAGknB,CAArD,EAAwDlnB,CAAC,EAAzD,EAA6D;MACzDoC,OAAO,CAACpC,CAAD,EAAIknB,CAAJ,CAAP;IACH;;IACD,IAAImnC,OAAO,GAAG,UAAUruD,CAAV,EAAaknB,CAAb,EAAgB;MAC1B6vC,OAAO,CAACK,cAAR,CAAuB70D,OAAvB,CAA+B,UAAUkK,CAAV,EAAaN,CAAb,EAAgB;QAC3C,IAAIixD,IAAI,GAAG;UACP,UAAU95D,KAAK,CAACwN,OAAN,CAAckqD,UAAd,GAA2B,GAD9B;UAEP,OAAO,UAAU57D,IAAV,EAAgBY,CAAhB,EAAmBQ,GAAnB,EAAwB;YAAE,OAAO,EAAP;UAAY,CAFtC;UAGP,QAAQ,UAAUpB,IAAV,EAAgBY,CAAhB,EAAmB;YAAE,OAAOqgB,IAAI,CAAC2rB,SAAL,CAAe5sC,IAAI,CAACY,CAAD,CAAnB,IAA0B,MAAjC;UAA0C;QAHhE,CAAX;QAKAmwD,GAAG,CAACrsD,IAAJ,CAAS,OAAOg5D,WAAhB;QACA3M,GAAG,CAACrsD,IAAJ,CAAS,iDAAT,EAA4D,EAA5D;QACAqsD,GAAG,CAACrsD,IAAJ,CAAS,SAAS,OAAT,IAAoBosD,EAAE,CAAC2F,UAAH,CAAcqE,SAAd,IAA2BhK,EAAE,CAAC2F,UAAH,CAAc6D,OAAzC,IAAoD70D,CAAC,CAACyjB,GAA1E,IACH80C,IAAI,CAAC90C,GAAL,CAASyuC,OAAO,CAACK,cAAjB,EAAiCp3D,CAAjC,EAAoC6E,CAAC,CAACrE,GAAtC,CADG,GAC0C,WADnD;QAEA2vD,GAAG,CAACrsD,IAAJ,CAAS,mBAAmB,iCAA5B;QACAqsD,GAAG,CAACrsD,IAAJ,CAAS,WAAW2nC,QAAQ,CAAC0zB,IAA7B;QACAhP,GAAG,CAACrsD,IAAJ,CAAS,EAAT,EAAa2I,CAAC,GAAG4T,IAAI,CAAC2rB,SAAL,CAAev/B,CAAf,CAAH,GAAuB,EAArC;MACH,CAbD;IAcH,CAfD,CA1B6D,CA0C7D;;;IACA,KAAK,IAAIzM,CAAC,GAAG,CAAR,EAAWknB,CAAC,GAAG6vC,OAAO,CAACK,cAAR,CAAuB/3D,MAA3C,EAAmDW,CAAC,GAAGknB,CAAvD,EAA0DlnB,CAAC,EAA3D,EAA+D;MAC3DquD,OAAO,CAACruD,CAAD,EAAIknB,CAAJ,CAAP;IACH;;IACD,IAAIunC,OAAO,GAAG,UAAUzuD,CAAV,EAAaknB,CAAb,EAAgB;MAC1B6vC,OAAO,CAACE,cAAR,CAAuB10D,OAAvB,CAA+B,UAAUkK,CAAV,EAAaN,CAAb,EAAgB;QAC3C,IAAIizD,KAAK,GAAG;UACR,OAAO,SADC;UAER,OAAO,UAAUhgE,IAAV,EAAgBY,CAAhB,EAAmBQ,GAAnB,EAAwB;YAC3B,IAAI8nB,GAAG,GAAG2/B,QAAQ,CAAClwB,SAAT,CAAmBv3B,GAAnB,EAAwBpB,IAAI,CAACY,CAAD,CAA5B,CAAV;;YACA,IAAI,OAAOsoB,GAAP,KAAe,QAAf,IAA2B2/B,QAAQ,CAAC3nC,KAAT,CAAeo0C,MAAf,CAAsBpsC,GAAtB,CAA/B,EAA2D;cACvD,OAAO,MAAMA,GAAb;YACH,CAFD,MAGK,IAAIA,GAAG,YAAY3a,IAAnB,EAAyB;cAC1B,IAAI0xD,OAAO,GAAGjgE,IAAI,CAACY,CAAD,CAAJ,CAAQQ,GAAR,CAAd;cACA,OAAO,MAAM6+D,OAAO,CAACtK,MAAR,EAAb;YACH,CAHI,MAIA;cACD,OAAO,OAAOzsC,GAAP,GAAa,GAApB;YACH;UACJ,CAdO;UAeR,QAAQ,UAAUlpB,IAAV,EAAgBY,CAAhB,EAAmB;YAAE,OAAO,EAAP;UAAY;QAfjC,CAAZ;QAiBAmwD,GAAG,CAACrsD,IAAJ,CAAS,OAAOg5D,WAAhB;QACA3M,GAAG,CAACrsD,IAAJ,CAAS,iDAAT,EAA4D,EAA5D;QACAqsD,GAAG,CAACrsD,IAAJ,CAAS,YAAY,OAAZ,IAAuBosD,EAAE,CAAC2F,UAAH,CAAc8D,SAAd,IAA2BzJ,EAAE,CAAC2F,UAAH,CAAc6D,OAAzC,IAAoD70D,CAAC,CAACyjB,GAA7E,IACH82C,KAAK,CAAC92C,GAAN,CAAUyuC,OAAO,CAACE,cAAlB,EAAkCj3D,CAAlC,EAAqC6E,CAAC,CAACrE,GAAvC,CADG,GAC2C,WADpD;QAEA2vD,GAAG,CAACrsD,IAAJ,CAAS,mBAAmB,iCAA5B;QACAqsD,GAAG,CAACrsD,IAAJ,CAAS,WAAW2nC,QAAQ,CAAC0zB,IAA7B;QACAhP,GAAG,CAACrsD,IAAJ,CAAS,EAAT,EAAa2I,CAAC,GAAG4T,IAAI,CAAC2rB,SAAL,CAAev/B,CAAf,CAAH,GAAuB,EAArC;MACH,CAzBD;IA0BH,CA3BD,CA9C6D,CA0E7D;;;IACA,KAAK,IAAIzM,CAAC,GAAG,CAAR,EAAWknB,CAAC,GAAG6vC,OAAO,CAACE,cAAR,CAAuB53D,MAA3C,EAAmDW,CAAC,GAAGknB,CAAvD,EAA0DlnB,CAAC,EAA3D,EAA+D;MAC3DyuD,OAAO,CAACzuD,CAAD,EAAIknB,CAAJ,CAAP;IACH;;IACDipC,GAAG,CAACrsD,IAAJ,CAAS,OAAOg5D,WAAP,GAAqB,IAA9B,EAAoC,EAApC;IACA,OAAO;MACHntD,IAAI,EAAE,MADH;MAEH2Y,GAAG,EAAEA,GAFF;MAGHF,WAAW,EAAE,+BAA+B00C,WAHzC;MAIH19D,IAAI,EAAE+wD,GAAG,CAACnsD,IAAJ,CAAS,MAAT;IAJH,CAAP;EAMH,CArFD;EAsFA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIk7D,aAAa,CAAChhE,SAAd,CAAwB0rB,UAAxB,GAAqC,UAAUsmC,EAAV,EAAcM,OAAd,EAAuBmL,QAAvB,EAAiC;IAClEnL,OAAO,CAAC7mC,gBAAR,CAAyB,QAAzB,EAAmC,gDAAnC;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIu1C,aAAa,CAAChhE,SAAd,CAAwB63D,eAAxB,GAA0C,UAAU32D,IAAV,EAAgBkwD,EAAhB,EAAoB3E,KAApB,EAA2B4F,GAA3B,EAAgCC,OAAhC,EAAyCuG,OAAzC,EAAkD;IACxF,IAAI0B,OAAO,GAAG,SAAd;IACA,IAAI3C,GAAG,GAAGtF,OAAO,IAAIA,OAAO,CAACiI,OAAD,CAA5B;IACA,IAAIzK,KAAK,GAAG,IAAZ;IACA,IAAIzqD,IAAI,GAAG,EAAX;;IACA,IAAIitD,OAAO,IAAIA,OAAO,CAAC7gD,IAAR,CAAauN,WAAb,OAA+B,MAA9C,EAAsD;MAClD,IAAIo/C,YAAY,GAAG/L,GAAG,IAAIC,OAAO,CAAClmC,iBAAR,CAA0B,oBAA1B,CAA1B;MACA,IAAI4C,OAAO,GAAIovC,YAAY,IAAIp8D,QAAQ,CAACo8D,YAAD,EAAe,EAAf,CAAzB,IAAgD,CAA9D;;MACA,IAAI3R,KAAK,IAAIA,KAAK,CAACtC,eAAnB,EAAoC;QAChC,IAAI,CAACJ,QAAQ,CAAC4I,MAAT,CAAgBzxD,IAAI,CAACkgE,KAArB,CAAL,EAAkC;UAC9BtR,KAAK,GAAG5uD,IAAI,CAACkgE,KAAb;QACH;MACJ;;MACD,IAAIpyC,OAAO,GAAG,CAAV,IAAe9tB,IAAI,CAACmgE,KAAxB,EAA+B;QAC3BngE,IAAI,GAAGA,IAAI,CAACmgE,KAAZ;MACH;;MACDh8D,IAAI,CAACyqD,KAAL,GAAaA,KAAb;MACAzqD,IAAI,CAACrB,MAAL,GAAc9C,IAAd;MACA,KAAK85D,kBAAL,CAAwBpD,GAAxB,EAA6B12D,IAA7B,EAAmCmE,IAAnC,EAAyC,IAAzC,EAA+ConD,KAA/C;IACH;;IACDpnD,IAAI,CAACrB,MAAL,GAAcqB,IAAI,CAACrB,MAAL,IAAe9C,IAA7B;IACA,OAAO6oD,QAAQ,CAAC4I,MAAT,CAAgB7C,KAAhB,IAAyBzqD,IAAI,CAACrB,MAA9B,GAAuC;MAAEA,MAAM,EAAEqB,IAAI,CAACrB,MAAf;MAAuB8rD,KAAK,EAAEzqD,IAAI,CAACyqD,KAAnC;MAA0CR,UAAU,EAAEjqD,IAAI,CAACiqD;IAA3D,CAA9C;EACH,CAtBD;;EAuBA,OAAO0R,aAAP;AACH,CAjM4C,CAiM3C3E,YAjM2C,CAA7C;AAkMA;AACA;AACA;AACA;AACA;;;AACA,IAAIiF,gBAAgB;AAAG;AAAyB,UAAUniC,MAAV,EAAkB;EAC9Db,SAAS,CAACgjC,gBAAD,EAAmBniC,MAAnB,CAAT;;EACA,SAASmiC,gBAAT,GAA4B;IACxB,OAAOniC,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACj/B,KAAP,CAAa,IAAb,EAAmB+D,SAAnB,CAAnB,IAAoD,IAA3D;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIq9D,gBAAgB,CAACthE,SAAjB,CAA2B+3D,YAA3B,GAA0C,UAAU/F,EAAV,EAAcvF,KAAd,EAAqBuN,gBAArB,EAAuC;IAC7E,IAAIv4D,GAAG,GAAG,IAAIs4D,UAAJ,GAAiBhC,YAAjB,CAA8B/F,EAA9B,EAAkCvF,KAAlC,EAAyCuN,gBAAzC,CAAV;IACA,IAAIuH,OAAO,GAAG,MAAd;IACA,IAAIrgE,IAAI,GAAG6oD,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyB5xD,GAAG,CAAC8/D,OAAD,CAA5B,CAAX;IACA,IAAIv9D,MAAM,GAAG,EAAb;IACA,IAAItC,KAAK,GAAG,OAAZ;;IACA,IAAIR,IAAI,CAACw5D,KAAT,EAAgB;MACZ,KAAK,IAAI54D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,IAAI,CAACw5D,KAAL,CAAWv5D,MAA/B,EAAuCW,CAAC,EAAxC,EAA4C;QACxC,IAAI44D,KAAK,GAAGx5D,IAAI,CAACw5D,KAAL,CAAW54D,CAAX,CAAZ;QACA,IAAIQ,GAAG,GAAGc,MAAM,CAACjB,IAAP,CAAYu4D,KAAZ,EAAmB,CAAnB,CAAV;QACA12D,MAAM,CAAC1B,GAAD,CAAN,GAAco4D,KAAK,CAACp4D,GAAD,CAAnB;MACH;IACJ;;IACD0B,MAAM,CAACtC,KAAD,CAAN,GAAgBR,IAAhB;IACA,IAAIq5D,OAAO,GAAG,SAAd;IACA,IAAInwC,GAAG,GAAG,KAAV;IACA,OAAO;MACHlpB,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAe9pC,MAAf,CADH;MAEHomB,GAAG,EAAE3oB,GAAG,CAAC2oB,GAAD,CAFL;MAGHmwC,OAAO,EAAE94D,GAAG,CAAC84D,OAAD,CAHT;MAIH9oD,IAAI,EAAE,MAJH;MAKHyY,WAAW,EAAE;IALV,CAAP;EAOH,CAvBD;;EAwBA,OAAOo3C,gBAAP;AACH,CAxC+C,CAwC9CvH,UAxC8C,CAAhD;AAyCA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAIyH,iBAAiB;AAAG;AAAyB,UAAUriC,MAAV,EAAkB;EAC/Db,SAAS,CAACkjC,iBAAD,EAAoBriC,MAApB,CAAT;EACA;AACJ;AACA;;;EACI,SAASqiC,iBAAT,GAA6B;IACzB,IAAIp8D,KAAK,GAAG+5B,MAAM,CAACl5B,IAAP,CAAY,IAAZ,KAAqB,IAAjC;;IACA/D,8DAAQ,CAAC,YAAD,EAAe63D,UAAU,CAAC/5D,SAAX,CAAqB0rB,UAApC,EAAgDtmB,KAAhD,CAAR;IACA,OAAOA,KAAP;EACH;;EACDo8D,iBAAiB,CAACxhE,SAAlB,CAA4Bi5D,MAA5B,GAAqC,UAAUjH,EAAV,EAAc9wD,IAAd,EAAoBkpD,SAApB,EAA+BqC,KAA/B,EAAsCxZ,QAAtC,EAAgD;IACjF,KAAK2kB,GAAL,CAAS3kB,QAAT,GAAoBA,QAApB;IACA,KAAK6pB,UAAL,GAAkB,KAAlB;IACA,OAAO;MACH1yC,GAAG,EAAE4nC,EAAE,CAAC2F,UAAH,CAAcmE,SAAd,IAA2B9J,EAAE,CAAC2F,UAAH,CAAc6D,OAAzC,IAAoDxJ,EAAE,CAAC2F,UAAH,CAAcvtC,GADpE;MAEHlpB,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAenqC,4DAAM,CAAC,EAAD,EAAK;QAC5BjC,KAAK,EAAER,IADqB;QAE5B26D,KAAK,EAAEzR,SAFqB;QAG5BluB,MAAM,EAAE;MAHoB,CAAL,EAIxB6tB,QAAQ,CAAC+H,YAAT,CAAsB,IAAtB,EAA4BE,EAA5B,EAAgCvF,KAAhC,CAJwB,CAArB;IAFH,CAAP;EAQH,CAXD;;EAYA+U,iBAAiB,CAACxhE,SAAlB,CAA4B8xB,MAA5B,GAAqC,UAAUkgC,EAAV,EAAc8H,QAAd,EAAwB5uD,GAAxB,EAA6Bk/C,SAA7B,EAAwCqC,KAAxC,EAA+C;IAChFttB,MAAM,CAACn/B,SAAP,CAAiB8xB,MAAjB,CAAwB7rB,IAAxB,CAA6B,IAA7B,EAAmC+rD,EAAnC,EAAuC8H,QAAvC,EAAiD5uD,GAAjD;;IACA,OAAO;MACHuG,IAAI,EAAE,MADH;MAEH2Y,GAAG,EAAE4nC,EAAE,CAAC2F,UAAH,CAAc8D,SAAd,IAA2BzJ,EAAE,CAAC2F,UAAH,CAAc6D,OAAzC,IAAoDxJ,EAAE,CAAC2F,UAAH,CAAcvtC,GAFpE;MAGHlpB,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAenqC,4DAAM,CAAC,EAAD,EAAK;QAC5BrB,GAAG,EAAE4I,GADuB;QAE5B6wD,SAAS,EAAEjC,QAFiB;QAG5B+B,KAAK,EAAEzR,SAHqB;QAI5BluB,MAAM,EAAE;MAJoB,CAAL,EAKxB6tB,QAAQ,CAAC+H,YAAT,CAAsB,IAAtB,EAA4BE,EAA5B,EAAgCvF,KAAhC,CALwB,CAArB;IAHH,CAAP;EAUH,CAZD;;EAaA+U,iBAAiB,CAACxhE,SAAlB,CAA4Bm5D,MAA5B,GAAqC,UAAUnH,EAAV,EAAc8H,QAAd,EAAwB5uD,GAAxB,EAA6Bk/C,SAA7B,EAAwCqC,KAAxC,EAA+C;IAChF,KAAKqQ,UAAL,GAAkB,QAAlB;IACA,KAAK2E,SAAL,GAAiB3H,QAAjB;IACA,OAAO;MACHroD,IAAI,EAAE,MADH;MAEH2Y,GAAG,EAAE4nC,EAAE,CAAC2F,UAAH,CAAcqE,SAAd,IAA2BhK,EAAE,CAAC2F,UAAH,CAAc6D,OAAzC,IAAoDxJ,EAAE,CAAC2F,UAAH,CAAcvtC,GAFpE;MAGHlpB,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAenqC,4DAAM,CAAC,EAAD,EAAK;QAC5BjC,KAAK,EAAEwJ,GADqB;QAE5BgxB,MAAM,EAAE,QAFoB;QAG5B6/B,SAAS,EAAEjC,QAHiB;QAI5Bx3D,GAAG,EAAE4I,GAAG,CAAC4uD,QAAD,CAJoB;QAK5B+B,KAAK,EAAEzR;MALqB,CAAL,EAMxBL,QAAQ,CAAC+H,YAAT,CAAsB,IAAtB,EAA4BE,EAA5B,EAAgCvF,KAAhC,CANwB,CAArB;IAHH,CAAP;EAWH,CAdD;;EAeA+U,iBAAiB,CAACxhE,SAAlB,CAA4B63D,eAA5B,GAA8C,UAAU32D,IAAV,EAAgBkwD,EAAhB,EAAoB3E,KAApB,EAA2B4F,GAA3B,EAAgCC,OAAhC,EAAyCuG,OAAzC,EAAkDlyD,CAAlD,EAAqD;IAC/F,IAAI7E,CAAJ;IACA,IAAIutD,OAAO,GAAGiD,OAAO,GAAGnwC,IAAI,CAACC,KAAL,CAAWkwC,OAAO,CAACpxD,IAAnB,CAAH,GAA8BA,IAAnD;IACAA,IAAI,GAAGmuD,OAAO,CAACnzB,MAAR,KAAmB,OAAnB,GAA6B6tB,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyBnyD,IAAzB,CAA7B,GAA8DA,IAArE;;IACA,IAAI,KAAK47D,UAAL,KAAoB,KAAxB,EAA+B;MAC3B39B,MAAM,CAACn/B,SAAP,CAAiBi5D,MAAjB,CAAwBhzD,IAAxB,CAA6B,IAA7B,EAAmCmrD,EAAnC,EAAuClwD,IAAvC,EAA6C,IAA7C,EAAmD,IAAnD,EAAyD,KAAK02D,GAAL,CAAS3kB,QAAlE;IACH;;IACD,IAAI,KAAK6pB,UAAL,KAAoB,QAAxB,EAAkC;MAC9B39B,MAAM,CAACn/B,SAAP,CAAiBm5D,MAAjB,CAAwBlzD,IAAxB,CAA6B,IAA7B,EAAmCmrD,EAAnC,EAAuC,KAAKqQ,SAA5C,EAAuDvgE,IAAvD;IACH;;IACD,KAAK47D,UAAL,GAAkBh9D,SAAlB;;IACA,IAAIoB,IAAI,CAACy6D,KAAT,EAAgB;MACZ,KAAK75D,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGZ,IAAI,CAACy6D,KAAL,CAAWx6D,MAA3B,EAAmCW,CAAC,EAApC,EAAwC;QACpCq9B,MAAM,CAACn/B,SAAP,CAAiBi5D,MAAjB,CAAwBhzD,IAAxB,CAA6B,IAA7B,EAAmCmrD,EAAnC,EAAuClwD,IAAI,CAACy6D,KAAL,CAAW75D,CAAX,CAAvC;MACH;IACJ;;IACD,IAAIZ,IAAI,CAACw6D,OAAT,EAAkB;MACd,KAAK55D,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGZ,IAAI,CAACw6D,OAAL,CAAav6D,MAA7B,EAAqCW,CAAC,EAAtC,EAA0C;QACtCq9B,MAAM,CAACn/B,SAAP,CAAiBm5D,MAAjB,CAAwBlzD,IAAxB,CAA6B,IAA7B,EAAmCmrD,EAAnC,EAAuCzqD,CAAC,CAACrE,GAAzC,EAA8CpB,IAAI,CAACw6D,OAAL,CAAa55D,CAAb,CAA9C;MACH;IACJ;;IACD,IAAIZ,IAAI,CAAC06D,OAAT,EAAkB;MACd,KAAK95D,CAAC,GAAG,CAAT,EAAYA,CAAC,GAAGZ,IAAI,CAAC06D,OAAL,CAAaz6D,MAA7B,EAAqCW,CAAC,EAAtC,EAA0C;QACtCq9B,MAAM,CAACn/B,SAAP,CAAiB8xB,MAAjB,CAAwB7rB,IAAxB,CAA6B,IAA7B,EAAmCmrD,EAAnC,EAAuCzqD,CAAC,CAACrE,GAAzC,EAA8CpB,IAAI,CAAC06D,OAAL,CAAa95D,CAAb,CAA9C;MACH;IACJ;;IACD,OAAOZ,IAAP;EACH,CA3BD;EA4BA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIsgE,iBAAiB,CAACxhE,SAAlB,CAA4B44D,YAA5B,GAA2C,UAAU5G,EAAV,EAAc6G,OAAd,EAAuBlyD,CAAvB,EAA0B8lD,KAA1B,EAAiC6O,QAAjC,EAA2C;IAClF,OAAO;MACH7pD,IAAI,EAAE,MADH;MAEH2Y,GAAG,EAAE4nC,EAAE,CAAC2F,UAAH,CAAc4D,QAAd,IAA0BvJ,EAAE,CAAC2F,UAAH,CAAc6D,OAAxC,IAAmDxJ,EAAE,CAAC2F,UAAH,CAAcvtC,GAFnE;MAGHF,WAAW,EAAE,iCAHV;MAIH8B,QAAQ,EAAE,MAJP;MAKH9qB,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAenqC,4DAAM,CAAC,EAAD,EAAK;QAC5B+3D,OAAO,EAAE7C,OAAO,CAACK,cADW;QAE5ByC,KAAK,EAAE9C,OAAO,CAACG,YAFa;QAG5B4C,OAAO,EAAE/C,OAAO,CAACE,cAHW;QAI5B78B,MAAM,EAAE,OAJoB;QAK5B2/B,KAAK,EAAEl1D,CAAC,CAACyjB,GALmB;QAM5B9nB,GAAG,EAAEqE,CAAC,CAACrE;MANqB,CAAL,EAOxBynD,QAAQ,CAAC+H,YAAT,CAAsB,IAAtB,EAA4BE,EAA5B,EAAgCvF,KAAhC,CAPwB,CAArB;IALH,CAAP;EAcH,CAfD;;EAgBA+U,iBAAiB,CAACxhE,SAAlB,CAA4BqqD,SAA5B,GAAwC,UAAUz3C,OAAV,EAAmB;IACvD,IAAI8uD,SAAS,GAAG,IAAI3H,UAAJ,EAAhB;IACA2H,SAAS,CAACrX,SAAV,CAAoBz3C,OAApB;EACH,CAHD;;EAIA,OAAO4uD,iBAAP;AACH,CA9GgD,CA8G/C1J,WA9G+C,CAAjD;AA+GA;AACA;AACA;AACA;AACA;;;AACA,IAAI6J,iBAAiB;AAAG;AAAyB,UAAUxiC,MAAV,EAAkB;EAC/Db,SAAS,CAACqjC,iBAAD,EAAoBxiC,MAApB,CAAT;;EACA,SAASwiC,iBAAT,CAA2Bn3D,KAA3B,EAAkC;IAC9B,IAAIpF,KAAK,GAAG+5B,MAAM,CAACl5B,IAAP,CAAY,IAAZ,KAAqB,IAAjC,CAD8B,CAE9B;;;IACAb,KAAK,CAACwN,OAAN,GAAgBjP,4DAAM,CAAC,EAAD,EAAKyB,KAAK,CAACwN,OAAX,EAAoB;MACtC2uD,OAAO,EAAE,YAAY,CAAG,CADc;MAEtCK,SAAS,EAAE,YAAY,CAAG,CAFY;MAGtCC,YAAY,EAAE,YAAY,CAAG,CAHS;MAItCC,YAAY,EAAE,YAAY,CAAG,CAJS;MAKtCC,WAAW,EAAE,YAAY,CAAG;IALU,CAApB,CAAtB;IAOAp+D,4DAAM,CAACyB,KAAK,CAACwN,OAAP,EAAgBpI,KAAK,IAAI,EAAzB,CAAN;IACA,OAAOpF,KAAP;EACH;;EACDu8D,iBAAiB,CAAC3hE,SAAlB,CAA4Bk5B,aAA5B,GAA4C,YAAY;IACpD,OAAO,mBAAP;EACH,CAFD;;EAGA,OAAOyoC,iBAAP;AACH,CAnBgD,CAmB/C5H,UAnB+C,CAAjD;AAoBA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAIiI,cAAc;AAAG;AAAyB,UAAU7iC,MAAV,EAAkB;EAC5Db,SAAS,CAAC0jC,cAAD,EAAiB7iC,MAAjB,CAAT;;EACA,SAAS6iC,cAAT,CAAwBpvD,OAAxB,EAAiC;IAC7B,IAAIxN,KAAK,GAAG+5B,MAAM,CAACl5B,IAAP,CAAY,IAAZ,KAAqB,IAAjC;;IACAb,KAAK,CAACqX,GAAN,GAAY7J,OAAZ;IACAxN,KAAK,CAAC68D,MAAN,GAAe78D,KAAK,CAACqX,GAAN,CAAU0Q,QAAzB;IACA/nB,KAAK,CAACqnD,KAAN,GAAcrnD,KAAK,CAACqX,GAAN,CAAUgwC,KAAxB;IACA;IACA;;IACArnD,KAAK,CAAC88D,YAAN,GAAqB98D,KAAK,CAACqX,GAAN,CAAUylD,YAAV,GAAyB98D,KAAK,CAACqX,GAAN,CAAUylD,YAAnC,GAAkD,YAAY,CAAG,CAAtF;IACA;;IACA98D,KAAK,CAAC+8D,QAAN,GAAiB,YAAY;MAAE,OAAO/8D,KAAK,CAACqnD,KAAb;IAAqB,CAApD;;IACA,OAAOrnD,KAAP;EACH;;EACD48D,cAAc,CAAChiE,SAAf,CAAyBk5B,aAAzB,GAAyC,YAAY;IACjD,OAAO,gBAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI8oC,cAAc,CAAChiE,SAAf,CAAyB+3D,YAAzB,GAAwC,UAAUqK,WAAV,EAAuB3V,KAAvB,EAA8B;IAClE,IAAI4V,QAAQ,GAAGljC,MAAM,CAACn/B,SAAP,CAAiB+3D,YAAjB,CAA8B73D,KAA9B,CAAoC,IAApC,EAA0C+D,SAA1C,CAAf;;IACA,IAAI+tD,EAAE,GAAG7vC,IAAI,CAACC,KAAL,CAAWigD,QAAQ,CAACnhE,IAApB,CAAT,CAFkE,CAGlE;;IACA,IAAIiB,IAAI,GAAG,CAAC,MAAD,EAAS,MAAT,EAAiB,QAAjB,EAA2B,OAA3B,EAAoC,QAApC,EAA8C,OAA9C,EACP,QADO,EACG,gBADH,EACqB,YADrB,EACmC,QADnC,CAAX;IAEA,IAAIkW,IAAI,GAAG,EAAX;IACA,IAAI1N,GAAG,GAAG,mBAAV;IACAxI,IAAI,CAACi3B,MAAL,CAAY,UAAUzyB,CAAV,EAAa;MACrB0R,IAAI,CAAC1R,CAAD,CAAJ,GAAUgE,GAAG,CAACnH,OAAJ,CAAYmD,CAAZ,IAAiB,CAAC,CAAlB,GAAsBwb,IAAI,CAAC2rB,SAAL,CAAekkB,EAAE,CAACrrD,CAAD,CAAjB,CAAtB,GAA8CqrD,EAAE,CAACrrD,CAAD,CAA1D;IACH,CAFD;IAGA,IAAI27D,IAAI,GAAG,KAAKJ,YAAL,MAAuB,EAAlC,CAXkE,CAYlE;;IACAI,IAAI,CAAC,aAAD,CAAJ,GAAsBjqD,IAAtB;IACA,IAAInX,IAAI,GAAGihB,IAAI,CAAC2rB,SAAL,CAAe;MACtB2e,KAAK,EAAE,KAAK0V,QAAL,EADe;MAEtBI,SAAS,EAAED;IAFW,CAAf,CAAX;IAIAD,QAAQ,CAACnhE,IAAT,GAAgBA,IAAhB;IACA,OAAOmhE,QAAP;EACH,CApBD;EAqBA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIL,cAAc,CAAChiE,SAAf,CAAyB63D,eAAzB,GAA2C,UAAU2K,OAAV,EAAmBpR,EAAnB,EAAuB3E,KAAvB,EAA8B4F,GAA9B,EAAmCC,OAAnC,EAA4C;IACnF,IAAIjoD,GAAG,GAAGm4D,OAAV;IACA,IAAI1S,KAAJ;IACA,IAAIR,UAAJ;IACA,IAAItrD,MAAM,GAAGzC,8DAAQ,CAAC,KAAK0gE,MAAL,CAAYj+D,MAAb,EAAqBqG,GAAG,CAACnJ,IAAzB,CAArB;;IACA,IAAI,KAAK+gE,MAAL,CAAYnS,KAAhB,EAAuB;MACnBA,KAAK,GAAGvuD,8DAAQ,CAAC,KAAK0gE,MAAL,CAAYnS,KAAb,EAAoBzlD,GAAG,CAACnJ,IAAxB,CAAhB;IACH;;IACD,IAAI,KAAK+gE,MAAL,CAAY3S,UAAhB,EAA4B;MACxBA,UAAU,GAAG/tD,8DAAQ,CAAC,KAAK0gE,MAAL,CAAY3S,UAAb,EAAyBjlD,GAAG,CAACnJ,IAA7B,CAArB;MACAouD,UAAU,GAAG,CAAC/sD,uEAAiB,CAAC+sD,UAAD,CAAlB,GAAiCvF,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyB/D,UAAzB,CAAjC,GAAwEA,UAArF;IACH;;IACD,IAAIsI,GAAG,GAAGtF,OAAO,CAACiI,OAAR,IAAmB,EAA7B;IACA,IAAIl1D,IAAI,GAAG;MAAErB,MAAM,EAAEA,MAAV;MAAkBsrD,UAAU,EAAEA;IAA9B,CAAX;IACA,IAAIpuD,IAAI,GAAGmE,IAAX;;IACA,IAAIuyD,GAAG,IAAIA,GAAG,CAACsC,MAAX,IAAqBtC,GAAG,CAACsC,MAAJ,CAAW/4D,MAApC,EAA4C;MACxC,KAAK65D,kBAAL,CAAwBpD,GAAxB,EAA6B12D,IAA7B,EAAmCmE,IAAnC,EAAyC,IAAzC,EAA+ConD,KAA/C;IACH;;IACD,OAAO,CAAClqD,uEAAiB,CAACutD,KAAD,CAAlB,GAA4B;MAAE9rD,MAAM,EAAEqB,IAAI,CAACrB,MAAf;MAAuB8rD,KAAK,EAAEA,KAA9B;MAAqCR,UAAU,EAAEA;IAAjD,CAA5B,GAA4FjqD,IAAI,CAACrB,MAAxG;EACH,CAnBD;EAoBA;AACJ;AACA;;;EACIg+D,cAAc,CAAChiE,SAAf,CAAyBi5D,MAAzB,GAAkC,YAAY;IAC1C,IAAIwJ,QAAQ,GAAGtjC,MAAM,CAACn/B,SAAP,CAAiBi5D,MAAjB,CAAwB/4D,KAAxB,CAA8B,IAA9B,EAAoC+D,SAApC,CAAf;;IACA,OAAO,KAAKy+D,gBAAL,CAAsBD,QAAtB,EAAgC,QAAhC,CAAP;EACH,CAHD;EAIA;AACJ;AACA;;;EACIT,cAAc,CAAChiE,SAAf,CAAyBm5D,MAAzB,GAAkC,YAAY;IAC1C,IAAIsJ,QAAQ,GAAGtjC,MAAM,CAACn/B,SAAP,CAAiBm5D,MAAjB,CAAwBj5D,KAAxB,CAA8B,IAA9B,EAAoC+D,SAApC,CAAf;;IACA,OAAO,KAAKy+D,gBAAL,CAAsBD,QAAtB,EAAgC,QAAhC,CAAP;EACH,CAHD;EAIA;AACJ;AACA;;;EACIT,cAAc,CAAChiE,SAAf,CAAyB8xB,MAAzB,GAAkC,YAAY;IAC1C,IAAI2wC,QAAQ,GAAGtjC,MAAM,CAACn/B,SAAP,CAAiB8xB,MAAjB,CAAwB5xB,KAAxB,CAA8B,IAA9B,EAAoC+D,SAApC,CAAf;;IACA,OAAO,KAAKy+D,gBAAL,CAAsBD,QAAtB,EAAgC,QAAhC,CAAP;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIT,cAAc,CAAChiE,SAAf,CAAyB44D,YAAzB,GAAwC,UAAU5G,EAAV,EAAc6G,OAAd,EAAuBlyD,CAAvB,EAA0B8lD,KAA1B,EAAiC6O,QAAjC,EAA2C;IAC/E,IAAIiB,KAAK,GAAGp9B,MAAM,CAACn/B,SAAP,CAAiB44D,YAAjB,CAA8B14D,KAA9B,CAAoC,IAApC,EAA0C+D,SAA1C,CAAZ,CAD+E,CAE/E;;;IACA,IAAI0+D,KAAK,GAAGxgD,IAAI,CAACC,KAAL,CAAWm6C,KAAK,CAACr7D,IAAjB,CAAZ;IACAyhE,KAAK,CAACrgE,GAAN,GAAYqE,CAAC,CAACrE,GAAd;IACAi6D,KAAK,CAACr7D,IAAN,GAAaihB,IAAI,CAAC2rB,SAAL,CAAe60B,KAAf,CAAb;IACA,OAAO,KAAKD,gBAAL,CAAsBnG,KAAtB,EAA6B,OAA7B,CAAP;EACH,CAPD;;EAQAyF,cAAc,CAAChiE,SAAf,CAAyB0iE,gBAAzB,GAA4C,UAAUE,QAAV,EAAoB1mC,MAApB,EAA4B;IACpE,IAAI2mC,MAAM,GAAG1gD,IAAI,CAACC,KAAL,CAAWwgD,QAAQ,CAAC1hE,IAApB,CAAb;IACA0hE,QAAQ,CAAC1hE,IAAT,GAAgBihB,IAAI,CAAC2rB,SAAL,CAAe;MAC3B2e,KAAK,EAAE,KAAKhwC,GAAL,CAASqmD,WAAT,CAAqB5mC,MAArB,CADoB;MAE3BqmC,SAAS,EAAEM;IAFgB,CAAf,CAAhB;IAIA,OAAOD,QAAP;EACH,CAPD;;EAQA,OAAOZ,cAAP;AACH,CAnI6C,CAmI5CjI,UAnI4C,CAA9C;AAoIA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAIgJ,YAAY;AAAG;AAAyB,UAAU5jC,MAAV,EAAkB;EAC1Db,SAAS,CAACykC,YAAD,EAAe5jC,MAAf,CAAT;EACA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI,SAAS4jC,YAAT,CAAsBrR,OAAtB,EAA+B9wB,SAA/B,EAA0CwrB,QAA1C,EAAoD;IAChD,IAAIhnD,KAAK,GAAG+5B,MAAM,CAACl5B,IAAP,CAAY,IAAZ,KAAqB,IAAjC;;IACAb,KAAK,CAAC49D,YAAN,GAAqB,KAArB;IACA59D,KAAK,CAAC69D,cAAN,GAAuB,KAAvB;;IACA,IAAI,CAAC1gE,uEAAiB,CAACmvD,OAAD,CAAtB,EAAiC;MAC7BtsD,KAAK,CAAC89D,YAAN,GAAqBxR,OAArB;IACH;;IACDtsD,KAAK,CAACgnD,QAAN,GAAiBA,QAAjB;IACAhnD,KAAK,CAAC+9D,MAAN,GAAepZ,QAAQ,CAACwI,OAAT,CAAiB,cAAjB,CAAf;IACA,IAAI9wD,GAAG,GAAG;MAAEU,IAAI,EAAE,EAAR;MAAY67D,OAAO,EAAE;IAArB,CAAV;IACAv9D,MAAM,CAACwrC,YAAP,CAAoBe,OAApB,CAA4B5nC,KAAK,CAAC+9D,MAAlC,EAA0ChhD,IAAI,CAAC2rB,SAAL,CAAersC,GAAf,CAA1C;IACA,IAAIkuD,IAAI,GAAGvqD,KAAK,CAAC+9D,MAAjB;;IACA,IAAI,CAAC5gE,uEAAiB,CAACq+B,SAAD,CAAtB,EAAmC;MAC/Bz4B,WAAW,CAAC,YAAY;QACpB,IAAIjH,IAAI,GAAG6oD,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyB5yD,MAAM,CAACwrC,YAAP,CAAoBC,OAApB,CAA4ByjB,IAA5B,CAAzB,CAAX;QACA,IAAIyT,MAAM,GAAG,EAAb;;QACA,KAAK,IAAIthE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,IAAI,CAAC88D,OAAL,CAAa78D,MAAjC,EAAyCW,CAAC,EAA1C,EAA8C;UAC1C,IAAIuhE,WAAW,GAAG,CAAC,IAAI5zD,IAAJ,EAAnB;UACA,IAAI6zD,WAAW,GAAG,CAAC,IAAI7zD,IAAJ,CAASvO,IAAI,CAAC88D,OAAL,CAAal8D,CAAb,EAAgB8+B,SAAzB,CAAnB;UACA1/B,IAAI,CAAC88D,OAAL,CAAal8D,CAAb,EAAgB8+B,SAAhB,GAA4ByiC,WAAW,GAAGC,WAA1C;;UACA,IAAID,WAAW,GAAGC,WAAd,GAA4B1iC,SAAhC,EAA2C;YACvCwiC,MAAM,CAACx9D,IAAP,CAAY9D,CAAZ;UACH;QACJ;;QACD,KAAK,IAAIA,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGshE,MAAM,CAACjiE,MAA3B,EAAmCW,CAAC,EAApC,EAAwC;UACpCZ,IAAI,CAAC88D,OAAL,CAAa98C,MAAb,CAAoBkiD,MAAM,CAACthE,CAAD,CAA1B,EAA+B,CAA/B;UACAZ,IAAI,CAACiB,IAAL,CAAU+e,MAAV,CAAiBkiD,MAAM,CAACthE,CAAD,CAAvB,EAA4B,CAA5B;QACH;;QACDrB,MAAM,CAACwrC,YAAP,CAAoBs3B,UAApB,CAA+B5T,IAA/B;QACAlvD,MAAM,CAACwrC,YAAP,CAAoBe,OAApB,CAA4B2iB,IAA5B,EAAkCxtC,IAAI,CAAC2rB,SAAL,CAAe5sC,IAAf,CAAlC;MACH,CAjBU,EAiBR0/B,SAjBQ,CAAX;IAkBH;;IACD,OAAOx7B,KAAP;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI29D,YAAY,CAAC/iE,SAAb,CAAuBwjE,WAAvB,GAAqC,UAAUp5C,GAAV,EAAeqiC,KAAf,EAAsB;IACvD,IAAIxD,OAAO,GAAG,KAAKgR,eAAL,CAAqBxN,KAArB,CAAd;IACA,IAAIO,OAAO,GAAGpE,KAAK,CAACmE,gBAAN,CAAuBN,KAAK,CAACxD,OAA7B,EAAsC,CAAC,UAAD,EAAa,QAAb,EAAuB,QAAvB,EAAiC,QAAjC,EAA2C,SAA3C,CAAtC,CAAd;IACA,IAAI3mD,GAAG,GAAG8nB,GAAV;IACA,IAAI8hC,IAAI,GAAG,QAAX;;IACA,IAAIA,IAAI,IAAIc,OAAZ,EAAqB;MACjB1qD,GAAG,IAAI0qD,OAAO,CAACd,IAAD,CAAP,CAAcC,SAArB;IACH;;IACDlD,OAAO,CAAC2C,KAAR,CAAcvnD,OAAd,CAAsB,UAAU5C,GAAV,EAAe;MACjCa,GAAG,IAAIb,GAAG,CAACkF,CAAJ,CAAM+kD,SAAN,GAAkBjqD,GAAG,CAACkF,CAAJ,CAAMgkD,SAA/B;IACH,CAFD;IAGA1B,OAAO,CAACiR,MAAR,CAAe71D,OAAf,CAAuB,UAAU5C,GAAV,EAAe;MAClCa,GAAG,IAAIb,GAAG,CAACkF,CAAJ,CAAMgkD,SAAb;IACH,CAFD;IAGA1B,OAAO,CAACmR,QAAR,CAAiB/1D,OAAjB,CAAyB,UAAU5C,GAAV,EAAe;MACpCa,GAAG,IAAIb,GAAG,CAACkF,CAAJ,CAAMwkD,SAAb;IACH,CAFD;;IAGA,KAAK,IAAI/xB,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAG6vB,OAAO,CAACkR,OAAR,CAAgBh5D,MAA9C,EAAsDi4B,MAAM,EAA5D,EAAgE;MAC5D,IAAIqqC,aAAa,GAAGxa,OAAO,CAACkR,OAAR,CAAgB/gC,MAAhB,CAApB;;MACA,IAAIqqC,aAAa,CAAC98D,CAAd,CAAgBumD,SAApB,EAA+B;QAC3B,IAAIwW,QAAQ,GAAGjX,KAAK,CAACjoD,KAAN,EAAf;QACAk/D,QAAQ,CAACza,OAAT,GAAmB,EAAnB;;QACA,KAAK,IAAInnD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2hE,aAAa,CAAC98D,CAAd,CAAgB0mD,UAAhB,CAA2BlsD,MAA/C,EAAuDW,CAAC,EAAxD,EAA4D;UACxD4hE,QAAQ,CAACza,OAAT,CAAiBrjD,IAAjB,CAAsB;YAAE49C,EAAE,EAAE,SAAN;YAAiB78C,CAAC,EAAE88D,aAAa,CAAC98D,CAAd,CAAgB0mD,UAAhB,CAA2BvrD,CAA3B,CAApB;YAAmDs3B,MAAM,EAAEqzB,KAAK,CAACxD,OAAN,CAAc7vB;UAAzE,CAAtB;QACH;;QACD92B,GAAG,IAAImhE,aAAa,CAAC98D,CAAd,CAAgBymD,SAAhB,GAA4B,KAAKoW,WAAL,CAAiBp5C,GAAjB,EAAsBs5C,QAAtB,CAAnC;MACH,CAPD,MAQK;QACDphE,GAAG,IAAImhE,aAAa,CAAC98D,CAAd,CAAgB8iD,KAAhB,GAAwBga,aAAa,CAAC98D,CAAd,CAAgBikD,QAAxC,GAAmD6Y,aAAa,CAAC98D,CAAd,CAAgBjF,KAA1E;MACH;IACJ;;IACD,OAAOY,GAAP;EACH,CAhCD;EAiCA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIygE,YAAY,CAAC/iE,SAAb,CAAuB+3D,YAAvB,GAAsC,UAAU/F,EAAV,EAAcvF,KAAd,EAAqBuN,gBAArB,EAAuC;IACzE,IAAI13D,GAAG,GAAG,KAAKkhE,WAAL,CAAiBxR,EAAE,CAAC2F,UAAH,CAAcvtC,GAA/B,EAAoCqiC,KAApC,CAAV;IACA,IAAIkX,WAAW,GAAG5Z,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyB5yD,MAAM,CAACwrC,YAAP,CAAoBC,OAApB,CAA4B,KAAKi3B,MAAjC,CAAzB,CAAlB;IACA,IAAIjiE,IAAI,GAAGyiE,WAAW,GAAGA,WAAW,CAAC3F,OAAZ,CAAoB2F,WAAW,CAACxhE,IAAZ,CAAiBqB,OAAjB,CAAyBlB,GAAzB,CAApB,CAAH,GAAwD,IAA9E;;IACA,IAAIpB,IAAI,IAAI,IAAR,IAAgB,CAAC,KAAK8hE,YAAtB,IAAsC,CAAC,KAAKC,cAAhD,EAAgE;MAC5D,OAAO/hE,IAAP;IACH;;IACD,KAAK8hE,YAAL,GAAoB,IAApB;IACA,KAAKC,cAAL,GAAsB,IAAtB;IACA;;IACA,OAAO,KAAKC,YAAL,CAAkBnL,YAAlB,CAA+B73D,KAA/B,CAAqC,KAAKgjE,YAA1C,EAAwD,GAAG/7D,KAAH,CAASlB,IAAT,CAAchC,SAAd,EAAyB,CAAzB,CAAxD,CAAP;IACA;EACH,CAZD;EAaA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI8+D,YAAY,CAAC/iE,SAAb,CAAuB63D,eAAvB,GAAyC,UAAU32D,IAAV,EAAgBkwD,EAAhB,EAAoB3E,KAApB,EAA2B4F,GAA3B,EAAgCC,OAAhC,EAAyCuG,OAAzC,EAAkD;IACvF,IAAI,KAAKoK,cAAL,IAAwB3Q,OAAO,IAAI,KAAK4Q,YAAL,CAAkBtwD,OAAlB,CAA0B2pD,KAArC,IACxBxS,QAAQ,CAAC8B,QAAT,CAAkByG,OAAO,CAACloC,GAA1B,EAA+B,KAAK84C,YAAL,CAAkBtwD,OAAlB,CAA0B2pD,KAAzD,CADwB,IAC2CjK,OAAO,CAAC7gD,IAAR,CAAauN,WAAb,OAA+B,MADtG,EAC+G;MAC3G,OAAO,KAAKkkD,YAAL,CAAkBrL,eAAlB,CAAkC32D,IAAlC,EAAwCkwD,EAAxC,EAA4C3E,KAA5C,EAAmD4F,GAAnD,EAAwDC,OAAxD,EAAiEuG,OAAjE,CAAP;IACH;IACD;;;IACA33D,IAAI,GAAG,KAAKgiE,YAAL,CAAkBrL,eAAlB,CAAkC33D,KAAlC,CAAwC,KAAKgjE,YAA7C,EAA2D,GAAG/7D,KAAH,CAASlB,IAAT,CAAchC,SAAd,EAAyB,CAAzB,CAA3D,CAAP;IACA;;IACA,IAAI3B,GAAG,GAAGmqD,KAAK,GAAG,KAAK+W,WAAL,CAAiBpS,EAAE,CAACuG,UAAH,CAAcvtC,GAA/B,EAAoCqiC,KAApC,CAAH,GAAgD2E,EAAE,CAACuG,UAAH,CAAcvtC,GAA7E;IACA,IAAI3oB,GAAG,GAAG,EAAV;IACAA,GAAG,GAAGsoD,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyB5yD,MAAM,CAACwrC,YAAP,CAAoBC,OAApB,CAA4B,KAAKi3B,MAAjC,CAAzB,CAAN;IACA,IAAIthD,KAAK,GAAGpgB,GAAG,CAACU,IAAJ,CAASqB,OAAT,CAAiBlB,GAAjB,CAAZ;;IACA,IAAIuf,KAAK,KAAK,CAAC,CAAf,EAAkB;MACdpgB,GAAG,CAACu8D,OAAJ,CAAY98C,MAAZ,CAAmBW,KAAnB,EAA0B,CAA1B;MACApgB,GAAG,CAACU,IAAJ,CAAS+e,MAAT,CAAgBW,KAAhB,EAAuB,CAAvB;IACH;;IACDpgB,GAAG,CAACu8D,OAAJ,CAAYv8D,GAAG,CAACU,IAAJ,CAASyD,IAAT,CAActD,GAAd,IAAqB,CAAjC,IAAsC;MAAEH,IAAI,EAAEG,GAAR;MAAa0B,MAAM,EAAE9C,IAAI,CAAC8C,MAA1B;MAAkC48B,SAAS,EAAE,IAAInxB,IAAJ,EAA7C;MAAyDqgD,KAAK,EAAE5uD,IAAI,CAAC4uD;IAArE,CAAtC;;IACA,OAAOruD,GAAG,CAACu8D,OAAJ,CAAY78D,MAAZ,GAAqB,KAAKirD,QAAjC,EAA2C;MACvC3qD,GAAG,CAACu8D,OAAJ,CAAY98C,MAAZ,CAAmB,CAAnB,EAAsB,CAAtB;MACAzf,GAAG,CAACU,IAAJ,CAAS+e,MAAT,CAAgB,CAAhB,EAAmB,CAAnB;IACH;;IACDzgB,MAAM,CAACwrC,YAAP,CAAoBe,OAApB,CAA4B,KAAKm2B,MAAjC,EAAyChhD,IAAI,CAAC2rB,SAAL,CAAersC,GAAf,CAAzC;IACA,OAAOP,IAAP;EACH,CAvBD;EAwBA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI6hE,YAAY,CAAC/iE,SAAb,CAAuB0rB,UAAvB,GAAoC,UAAUsmC,EAAV,EAAcM,OAAd,EAAuBmL,QAAvB,EAAiC;IACjE,IAAI,CAACl7D,uEAAiB,CAAC,KAAK2gE,YAAL,CAAkBtwD,OAAlB,CAA0B2pD,KAA3B,CAAlB,IAAuDxS,QAAQ,CAAC8B,QAAT,CAAkB4R,QAAQ,CAACrzC,GAA3B,EAAgC,KAAK84C,YAAL,CAAkBtwD,OAAlB,CAA0B2pD,KAA1D,CAAvD,IACGkB,QAAQ,CAAChsD,IAAT,CAAcuN,WAAd,OAAgC,MADvC,EAC+C;MAC3CszC,OAAO,CAAC7mC,gBAAR,CAAyB,QAAzB,EAAmC,KAAKy3C,YAAL,CAAkBtwD,OAAlB,CAA0B0pD,eAA7D;IACH;;IACD,IAAI,CAACtK,EAAE,CAAC2F,UAAH,CAAciM,WAAnB,EAAgC;MAC5BtR,OAAO,CAAC7mC,gBAAR,CAAyB,QAAzB,EAAmC,KAAKy3C,YAAL,CAAkBtwD,OAAlB,CAA0B8nC,MAA7D;IACH;EACJ,CARD;EASA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIqoB,YAAY,CAAC/iE,SAAb,CAAuBm5D,MAAvB,GAAgC,UAAUnH,EAAV,EAAc8H,QAAd,EAAwBp4D,KAAxB,EAA+B0oD,SAA/B,EAA0C;IACtE,KAAK4Y,YAAL,GAAoB,IAApB;IACA,OAAO,KAAKE,YAAL,CAAkB/J,MAAlB,CAAyBnH,EAAzB,EAA6B8H,QAA7B,EAAuCp4D,KAAvC,EAA8C0oD,SAA9C,CAAP;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI2Y,YAAY,CAAC/iE,SAAb,CAAuBi5D,MAAvB,GAAgC,UAAUjH,EAAV,EAAc9wD,IAAd,EAAoBkpD,SAApB,EAA+B;IAC3D,KAAK6Y,cAAL,GAAsB,IAAtB;IACA,OAAO,KAAKC,YAAL,CAAkBjK,MAAlB,CAAyBjH,EAAzB,EAA6B9wD,IAA7B,EAAmCkpD,SAAnC,CAAP;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI2Y,YAAY,CAAC/iE,SAAb,CAAuB8xB,MAAvB,GAAgC,UAAUkgC,EAAV,EAAc8H,QAAd,EAAwBp4D,KAAxB,EAA+B0oD,SAA/B,EAA0C;IACtE,KAAK4Y,YAAL,GAAoB,IAApB;IACA,OAAO,KAAKE,YAAL,CAAkBpxC,MAAlB,CAAyBkgC,EAAzB,EAA6B8H,QAA7B,EAAuCp4D,KAAvC,EAA8C0oD,SAA9C,CAAP;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI2Y,YAAY,CAAC/iE,SAAb,CAAuB44D,YAAvB,GAAsC,UAAU5G,EAAV,EAAc6G,OAAd,EAAuBlyD,CAAvB,EAA0B;IAC5D,OAAO,KAAKu8D,YAAL,CAAkBtK,YAAlB,CAA+B5G,EAA/B,EAAmC6G,OAAnC,EAA4ClyD,CAA5C,CAAP;EACH,CAFD;;EAGA,OAAOo8D,YAAP;AACH,CAzN2C,CAyN1ChJ,UAzN0C,CAA5C;AA2NA;;AACA;;AACA;AACA;AACA;;;AACA,IAAI5G,WAAW;AAAG;AAAyB,YAAY;EACnD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI,SAASA,WAAT,CAAqBwE,UAArB,EAAiClL,KAAjC,EAAwCiF,OAAxC,EAAiD;IAC7C,IAAItsD,KAAK,GAAG,IAAZ;IACA;;;IACA,KAAK2wD,SAAL,GAAiB,IAAjB;IACA;;IACA,KAAKjC,gBAAL,GAAwB,IAAxB;IACA,KAAK+P,YAAL,GAAoB,EAApB;IACA,KAAKC,aAAL,GAAqB,KAArB;IACA,KAAKjJ,QAAL,GAAgB,EAAhB;IACA,KAAKiJ,aAAL,GAAqB,IAArB;;IACA,IAAI,CAACnM,UAAD,IAAe,CAAC,KAAKA,UAAzB,EAAqC;MACjCA,UAAU,GAAG,EAAb;IACH;;IACDjG,OAAO,GAAGA,OAAO,IAAIiG,UAAU,CAACjG,OAAhC;;IACA,IAAIiG,UAAU,IAAIA,UAAU,CAAC7D,gBAAX,KAAgC,KAAlD,EAAyD;MACrD,KAAKA,gBAAL,GAAwB6D,UAAU,CAAC7D,gBAAnC;IACH;;IACD,IAAI5yD,IAAJ;;IACA,IAAIy2D,UAAU,YAAYl0D,KAA1B,EAAiC;MAC7BvC,IAAI,GAAG;QACH2sD,IAAI,EAAE8J,UADH;QAEHoM,OAAO,EAAE;MAFN,CAAP;IAIH,CALD,MAMK,IAAI,OAAOpM,UAAP,KAAsB,QAA1B,EAAoC;MACrC,IAAI,CAACA,UAAU,CAAC9J,IAAhB,EAAsB;QAClB8J,UAAU,CAAC9J,IAAX,GAAkB,EAAlB;MACH;;MACD,IAAI,CAAC8J,UAAU,CAACtsB,iBAAhB,EAAmC;QAC/BssB,UAAU,CAACtsB,iBAAX,GAA+B,KAA/B;MACH;;MACD,IAAI,CAACssB,UAAU,CAACzoD,EAAhB,EAAoB;QAChByoD,UAAU,CAACzoD,EAAX,GAAgB,EAAhB;MACH;;MACD,IAAI,CAACyoD,UAAU,CAAC5pB,eAAhB,EAAiC;QAC7B4pB,UAAU,CAAC5pB,eAAX,GAA6B,EAA7B;MACH;;MACD7sC,IAAI,GAAG;QACHkpB,GAAG,EAAEutC,UAAU,CAACvtC,GADb;QAEH0xC,SAAS,EAAEnE,UAAU,CAACmE,SAFnB;QAGHL,SAAS,EAAE9D,UAAU,CAAC8D,SAHnB;QAIHO,SAAS,EAAErE,UAAU,CAACqE,SAJnB;QAKHR,OAAO,EAAE7D,UAAU,CAAC6D,OALjB;QAMHD,QAAQ,EAAE5D,UAAU,CAAC4D,QANlB;QAOH1N,IAAI,EAAE8J,UAAU,CAAC9J,IAPd;QAQHthC,OAAO,EAAEorC,UAAU,CAACprC,OARjB;QASHmuB,MAAM,EAAEid,UAAU,CAACjd,MAThB;QAUHx5C,IAAI,EAAEy2D,UAAU,CAACz2D,IAVd;QAWH8iE,kBAAkB,EAAErM,UAAU,CAACqM,kBAX5B;QAYHC,eAAe,EAAEtM,UAAU,CAACsM,eAZzB;QAaHC,aAAa,EAAEvM,UAAU,CAACuM,aAbvB;QAcHxM,WAAW,EAAEC,UAAU,CAACD,WAdrB;QAeHp1D,GAAG,EAAEq1D,UAAU,CAACr1D,GAfb;QAgBHshE,WAAW,EAAEjM,UAAU,CAACiM,WAhBrB;QAiBHO,KAAK,EAAExM,UAAU,CAACwM,KAjBf;QAkBHn4C,QAAQ,EAAE2rC,UAAU,CAAC3rC,QAlBlB;QAmBH+3C,OAAO,EAAEpM,UAAU,CAACoM,OAAX,KAAuBjkE,SAAvB,GAAmC63D,UAAU,CAACoM,OAA9C,GACHpM,UAAU,CAACjG,OAAX,YAA8B8P,iBAA9B,IAAmD7J,UAAU,CAACjG,OAAX,YAA8BiQ,iBAAjF,GACE,KADF,GACUhK,UAAU,CAACvtC,GAAX,GAAiB,KAAjB,GAAyB,IArBtC;QAsBHk0C,cAAc,EAAE3G,UAAU,CAAC2G,cAtBxB;QAuBHjzB,iBAAiB,EAAEssB,UAAU,CAACtsB,iBAvB3B;QAwBHn8B,EAAE,EAAEyoD,UAAU,CAACzoD,EAxBZ;QAyBH6+B,eAAe,EAAE4pB,UAAU,CAAC5pB;MAzBzB,CAAP;IA2BH,CAxCI,MAyCA;MACDgc,QAAQ,CAACvjD,UAAT,CAAoB,gCAApB;IACH;;IACD,IAAItF,IAAI,CAACo9D,cAAL,KAAwBx+D,SAAxB,IAAqC,CAACiqD,QAAQ,CAACqI,MAAT,EAA1C,EAA6D;MACzDlxD,IAAI,CAACo9D,cAAL,GAAsB/7D,uEAAiB,CAACrB,IAAI,CAAC0iE,WAAN,CAAjB,GAAsC,IAAtC,GAA6C1iE,IAAI,CAAC0iE,WAAxE;IACH;;IACD,IAAI1iE,IAAI,CAAC8qB,QAAL,KAAkBlsB,SAAtB,EAAiC;MAC7BoB,IAAI,CAAC8qB,QAAL,GAAgB,MAAhB;IACH;;IACD,KAAK2rC,UAAL,GAAkBz2D,IAAlB;IACA,KAAKkjE,YAAL,GAAoB3X,KAApB;;IACA,IAAI,KAAKkL,UAAL,CAAgBtsB,iBAAhB,IAAqC,KAAKssB,UAAL,CAAgBzoD,EAAzD,EAA6D;MACzDzO,MAAM,CAACW,gBAAP,CAAwB,QAAxB,EAAkC,KAAKkqC,cAAL,CAAoBrrC,IAApB,CAAyB,IAAzB,CAAlC;IACH;;IACD,IAAIiB,IAAI,CAACkpB,GAAL,IAAYlpB,IAAI,CAAC6iE,OAAjB,IAA4B,CAAC7iE,IAAI,CAAC2sD,IAAL,CAAU1sD,MAA3C,EAAmD;MAC/C,KAAKkjE,eAAL,GAAuB,KAAvB;MACA,KAAK3S,OAAL,GAAeA,OAAO,IAAI,IAAI2K,YAAJ,EAA1B;MACA,KAAK1E,UAAL,CAAgBoM,OAAhB,GAA0B,KAA1B;MACA,KAAK37D,KAAL,GAAa,KAAK0hD,YAAL,CAAkB2C,KAAK,IAAI,IAAI7D,KAAJ,EAA3B,CAAb;MACA,KAAKxgD,KAAL,CAAW6Z,IAAX,CAAgB,UAAUtb,CAAV,EAAa;QACzBvB,KAAK,CAACuyD,UAAN,CAAiBoM,OAAjB,GAA2B,IAA3B;QACA3+D,KAAK,CAACi/D,eAAN,GAAwB,IAAxB;QACAnjE,IAAI,CAAC2sD,IAAL,GAAYlnD,CAAC,CAAC3C,MAAd;QACAoB,KAAK,CAACssD,OAAN,GAAgB,IAAIoG,WAAJ,EAAhB;MACH,CALD;IAMH,CAXD,MAYK;MACD,KAAKpG,OAAL,GAAexwD,IAAI,CAAC6iE,OAAL,GAAe,IAAIjM,WAAJ,EAAf,GAAmC,IAAIuE,YAAJ,EAAlD;IACH;;IACD,IAAI,CAACn7D,IAAI,CAACijE,KAAN,IAAe,KAAKzS,OAAL,YAAwB2K,YAA3C,EAAyD;MACrDn7D,IAAI,CAACijE,KAAL,GAAa,UAAb;IACH;;IACD,KAAKzS,OAAL,GAAeA,OAAO,IAAI,KAAKA,OAA/B;;IACA,IAAIxwD,IAAI,CAACgjE,aAAT,EAAwB;MACpB,KAAKxS,OAAL,GAAe,IAAIqR,YAAJ,CAAiB,KAAKrR,OAAtB,EAA+BxwD,IAAI,CAAC8iE,kBAApC,EAAwD9iE,IAAI,CAAC+iE,eAA7D,CAAf;IACH;;IACD,OAAO,IAAP;EACH;EACD;AACJ;AACA;AACA;AACA;;;EACI9Q,WAAW,CAACnzD,SAAZ,CAAsBskE,gBAAtB,GAAyC,UAAUp1D,EAAV,EAAc;IACnD,IAAIq1D,aAAa,GAAGt4B,YAAY,CAACC,OAAb,CAAqBh9B,EAAE,IAAI,KAAKyoD,UAAL,CAAgBzoD,EAA3C,CAApB;IACA,OAAOiT,IAAI,CAACC,KAAL,CAAWmiD,aAAX,CAAP;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACIpR,WAAW,CAACnzD,SAAZ,CAAsBsrC,cAAtB,GAAuC,UAAU3kC,CAAV,EAAauI,EAAb,EAAiBs1D,WAAjB,EAA8B;IACjEv4B,YAAY,CAACe,OAAb,CAAqB99B,EAAE,IAAI,KAAKyoD,UAAL,CAAgBzoD,EAA3C,EAA+CiT,IAAI,CAAC2rB,SAAL,CAAe02B,WAAW,IAAI,KAAKX,YAAnC,CAA/C;EACH,CAFD;;EAGA1Q,WAAW,CAACnzD,SAAZ,CAAsBykE,eAAtB,GAAwC,UAAUhY,KAAV,EAAiB;IACrD,IAAIrnD,KAAK,GAAG,IAAZ;;IACA,IAAIs/D,cAAc,GAAG,KAAKJ,gBAAL,EAArB;;IACA,IAAI,KAAKR,aAAL,IAAsBY,cAAtB,IAAwCthE,MAAM,CAACjB,IAAP,CAAYuiE,cAAZ,EAA4BvjE,MAAxE,EAAgF;MAC5E,KAAK0iE,YAAL,GAAoBa,cAApB;MACA,KAAKb,YAAL,CAAkB5a,OAAlB,GAA4B,KAAK4a,YAAL,CAAkB5a,OAAlB,CAA0B7vB,MAA1B,CAAiC,UAAUqzB,KAAV,EAAiB;QAC1E,IAAIrnD,KAAK,CAACuyD,UAAN,CAAiB5pB,eAAjB,IAAoC3oC,KAAK,CAACuyD,UAAN,CAAiB5pB,eAAjB,CAAiC5sC,MAAzE,EAAiF;UAC7E,IAAIsrD,KAAK,CAACjJ,EAAN,IAAYp+C,KAAK,CAACuyD,UAAN,CAAiB5pB,eAAjB,CAAiChc,IAAjC,CAAsC,UAAU4yC,OAAV,EAAmB;YAAE,OAAOlY,KAAK,CAACjJ,EAAN,KAAamhB,OAApB;UAA8B,CAAzF,CAAhB,EAA4G;YACxG,OAAO,KAAP,CADwG,CAC1F;UACjB;QACJ;;QACD,IAAIlY,KAAK,CAACjJ,EAAN,KAAa,SAAjB,EAA4B;UACxB,IAAI78C,CAAC,GAAG8lD,KAAK,CAAC9lD,CAAd;;UACA,IAAIA,CAAC,IAAIA,CAAC,CAACumD,SAAP,IAAoBvmD,CAAC,CAAC0mD,UAAF,YAAwB5pD,KAAhD,EAAuD;YACnD,IAAImhE,aAAa,GAAGj+D,CAAC,CAAC0mD,UAAF,CAAa3iD,GAAb,CAAiB,UAAUm6D,YAAV,EAAwB;cACzD,IAAIA,YAAY,CAACxX,UAAb,IAA2BwX,YAAY,CAACxX,UAAb,YAAmC5pD,KAAlE,EAAyE;gBACrE;gBACA,IAAIqhE,gBAAgB,GAAGD,YAAY,CAACxX,UAAb,CAAwB3iD,GAAxB,CAA4B,UAAUq6D,eAAV,EAA2B;kBAC1E,IAAItb,KAAK,GAAGsb,eAAe,CAACtb,KAA5B;kBAAA,IAAmCmB,QAAQ,GAAGma,eAAe,CAACna,QAA9D;kBAAA,IAAwElpD,KAAK,GAAGqjE,eAAe,CAACrjE,KAAhG;kBAAA,IAAuGmpD,UAAU,GAAGka,eAAe,CAACla,UAApI;kBAAA,IAAgJC,YAAY,GAAGia,eAAe,CAACja,YAA/K;kBAAA,IAA6LC,SAAS,GAAGga,eAAe,CAACha,SAAzN;kBACA,OAAO,IAAIE,SAAJ,CAAcxB,KAAd,EAAqBmB,QAArB,EAA+BlpD,KAA/B,EAAsCmpD,UAAtC,EAAkDC,YAAlD,EAAgEC,SAAhE,CAAP;gBACH,CAHsB,CAAvB;gBAIA,OAAO8Z,YAAY,CAACzX,SAAb,KAA2B,KAA3B,GAAmCnC,SAAS,CAACqC,GAAV,CAAcwX,gBAAd,CAAnC,GAAqE7Z,SAAS,CAACwC,EAAV,CAAaqX,gBAAb,CAA5E;cACH,CAPD,MAQK;gBACD;gBACA,IAAIrb,KAAK,GAAGob,YAAY,CAACpb,KAAzB;gBAAA,IAAgCmB,QAAQ,GAAGia,YAAY,CAACja,QAAxD;gBAAA,IAAkElpD,KAAK,GAAGmjE,YAAY,CAACnjE,KAAvF;gBAAA,IAA8FmpD,UAAU,GAAGga,YAAY,CAACha,UAAxH;gBAAA,IAAoIC,YAAY,GAAG+Z,YAAY,CAAC/Z,YAAhK;gBAAA,IAA8KC,SAAS,GAAG8Z,YAAY,CAAC9Z,SAAvM;gBACA,OAAO,IAAIE,SAAJ,CAAcxB,KAAd,EAAqBmB,QAArB,EAA+BlpD,KAA/B,EAAsCmpD,UAAtC,EAAkDC,YAAlD,EAAgEC,SAAhE,CAAP;cACH;YACJ,CAdmB,CAApB;YAeA0B,KAAK,CAAC9lD,CAAN,GAAU,IAAIskD,SAAJ,CAAc2Z,aAAa,CAAC,CAAD,CAA3B,EAAgCj+D,CAAC,CAACymD,SAAlC,EAA6CwX,aAAa,CAACz9D,KAAd,CAAoB,CAApB,CAA7C,CAAV;UACH;QACJ;;QACD,OAAO,IAAP,CA3B0E,CA2B7D;MAChB,CA5B2B,CAA5B;MA6BA,IAAIu8D,QAAQ,GAAG//D,4DAAM,CAAC,IAAIilD,KAAJ,EAAD,EAAc,KAAKib,YAAnB,CAArB;MACA,KAAKC,aAAL,GAAqB,KAArB;MACA,OAAQJ,QAAR;IACH,CAlCD,MAmCK;MACD,KAAKG,YAAL,GAAoBpX,KAApB;MACA,KAAKqX,aAAL,GAAqB,KAArB;MACA,OAAOrX,KAAP;IACH;EACJ,CA3CD;EA4CA;AACJ;AACA;AACA;AACA;;;EACI0G,WAAW,CAACnzD,SAAZ,CAAsBglE,eAAtB,GAAwC,UAAUvY,KAAV,EAAiB;IACrD,KAAK2X,YAAL,GAAoB3X,KAApB;IACA,OAAO,IAAP;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;;;EACI0G,WAAW,CAACnzD,SAAZ,CAAsBgqD,YAAtB,GAAqC,UAAUyC,KAAV,EAAiB;IAClD,IAAI,CAAC,KAAK2X,YAAN,IAAsB,EAAE3X,KAAK,YAAY7D,KAAnB,CAA1B,EAAqD;MACjDmB,QAAQ,CAACvjD,UAAT,CAAoB,+DAApB;IACH;;IACD,IAAI,CAAC,KAAKmxD,UAAL,CAAgB9J,IAArB,EAA2B;MACvB9D,QAAQ,CAACvjD,UAAT,CAAoB,iEAApB;IACH;;IACD,IAAI,KAAKmxD,UAAL,CAAgBtsB,iBAAhB,IAAqC,KAAKssB,UAAL,CAAgBzoD,EAAzD,EAA6D;MACzDu9C,KAAK,GAAG,KAAKgY,eAAL,CAAqBhY,KAArB,CAAR;IACH;;IACDA,KAAK,GAAGA,KAAK,IAAI,KAAK2X,YAAtB;IACA,IAAIpgE,MAAM,GAAG,KAAK0tD,OAAL,CAAaqG,YAAb,CAA0B,IAA1B,EAAgCtL,KAAhC,CAAb;;IACA,IAAIA,KAAK,CAAC3D,QAAV,EAAoB;MAChB,IAAID,IAAI,GAAG4D,KAAK,CAAC3D,QAAN,CAAeK,SAA1B;MACA,IAAIuH,MAAM,GAAGjE,KAAK,CAAC3D,QAAN,CAAeM,OAA5B;MACA,IAAI/+C,GAAG,GAAGoiD,KAAK,CAACtC,eAAN,GAAwBnmD,MAAM,CAACA,MAA/B,GACNA,MADJ;;MAEA,IAAI0sD,MAAM,IAAIA,MAAM,YAAYjtD,KAAhC,EAAuC;QACnCsmD,QAAQ,CAAC0G,cAAT,CAAwBhE,KAAK,CAAC3D,QAAN,CAAeI,IAAvC,EAA6CL,IAA7C,EAAmDx+C,GAAnD,EAAwDqmD,MAAxD,EAAgEjE,KAAK,CAAC3D,QAAN,CAAexmD,GAA/E;MACH;;MACD,KAAK,IAAIiM,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGlE,GAAG,CAAClJ,MAAxB,EAAgCoN,CAAC,EAAjC,EAAqC;QACjC,IAAIlE,GAAG,CAACkE,CAAD,CAAH,CAAOs6C,IAAP,aAAwBplD,KAA5B,EAAmC;UAC/B4G,GAAG,CAACkE,CAAD,CAAH,GAAS5K,4DAAM,CAAC,EAAD,EAAK,EAAL,EAAS0G,GAAG,CAACkE,CAAD,CAAZ,CAAf;UACAlE,GAAG,CAACkE,CAAD,CAAH,CAAOs6C,IAAP,IAAe,KAAK6I,OAAL,CAAamG,eAAb,CAA6BpL,KAAK,CAAC3D,QAAN,CAAeY,KAAf,CAAqB,IAAIyJ,WAAJ,CAAgB9oD,GAAG,CAACkE,CAAD,CAAH,CAAOs6C,IAAP,EAAa1hD,KAAb,CAAmB,CAAnB,CAAhB,CAArB,EAA6D6iD,YAA7D,EAA7B,EAA0G,IAA1G,EAAgHyC,KAAhH,CAAf;QACH;MACJ;IACJ;;IACD,OAAO,KAAKiF,OAAL,CAAamG,eAAb,CAA6B7zD,MAA7B,EAAqC,IAArC,EAA2CyoD,KAA3C,CAAP;EACH,CA5BD;EA6BA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI0G,WAAW,CAACnzD,SAAZ,CAAsB8pD,YAAtB,GAAqC,UAAU2C,KAAV,EAAiB9qB,IAAjB,EAAuBL,IAAvB,EAA6BuoB,MAA7B,EAAqC;IACtE,IAAIzkD,KAAK,GAAG,IAAZ;;IACA,IAAI6/D,WAAW,GAAG,aAAlB;;IACA,IAAI,KAAKtN,UAAL,CAAgBtsB,iBAAhB,IAAqC,KAAKssB,UAAL,CAAgBzoD,EAAzD,EAA6D;MACzDu9C,KAAK,GAAG,KAAKgY,eAAL,CAAqBhY,KAArB,CAAR;IACH;;IACD,IAAI,OAAOA,KAAP,KAAiB,UAArB,EAAiC;MAC7B5C,MAAM,GAAGvoB,IAAT;MACAA,IAAI,GAAGK,IAAP;MACAA,IAAI,GAAG8qB,KAAP;MACAA,KAAK,GAAG,IAAR;IACH;;IACD,IAAI,CAACA,KAAL,EAAY;MACRA,KAAK,GAAG,KAAK2X,YAAb;IACH;;IACD,IAAI,EAAE3X,KAAK,YAAY7D,KAAnB,CAAJ,EAA+B;MAC3BmB,QAAQ,CAACvjD,UAAT,CAAoB,+DAApB;IACH;;IACD,IAAI0+D,QAAQ,GAAG,IAAIC,QAAJ,EAAf;IACA,IAAI9/D,IAAI,GAAG;MAAEonD,KAAK,EAAEA;IAAT,CAAX;;IACA,IAAI,CAAC,KAAKkL,UAAL,CAAgBoM,OAAjB,IAA6B,KAAKpM,UAAL,CAAgBvtC,GAAhB,KAAwBtqB,SAAxB,IAAqC,KAAK63D,UAAL,CAAgBvtC,GAAhB,KAAwB,EAA1F,IACI,CAAC7nB,uEAAiB,CAAC,KAAKmvD,OAAL,CAAauT,WAAb,CAAD,CADtB,IACsD,KAAKG,mBAAL,CAAyB,KAAK1T,OAA9B,CAD1D,EACkG;MAC9F,IAAI1tD,MAAM,GAAG,KAAK0tD,OAAL,CAAaqG,YAAb,CAA0B,IAA1B,EAAgCtL,KAAhC,CAAb;;MACA,IAAI,CAAClqD,uEAAiB,CAAC,KAAKmvD,OAAL,CAAauT,WAAb,CAAD,CAAtB,EAAmD;QAC/C,KAAKvT,OAAL,CAAauT,WAAb,EAA0BjhE,MAA1B,EAAkCkhE,QAAlC,EAA4C7/D,IAA5C,EAAkDonD,KAAlD;MACH,CAFD,MAGK,IAAI,CAAClqD,uEAAiB,CAACyB,MAAM,CAAComB,GAAR,CAAlB,IAAkC,KAAKg7C,mBAAL,CAAyB,KAAK1T,OAA9B,CAAtC,EAA8E;QAC/E,KAAKmJ,QAAL,GAAgB,EAAhB;QACA,KAAKoK,WAAL,CAAiBjhE,MAAjB,EAAyBkhE,QAAzB,EAAmC7/D,IAAnC,EAAyConD,KAAzC;MACH,CAHI,MAIA;QACDpnD,IAAI,GAAG8tD,WAAW,CAACkS,cAAZ,CAA2B5Y,KAA3B,EAAkCzoD,MAAlC,EAA0CqB,IAA1C,CAAP;QACA6/D,QAAQ,CAACx6C,OAAT,CAAiBrlB,IAAjB;MACH;IACJ,CAdD,MAeK;MACD8tD,WAAW,CAACmS,QAAZ,CAAqB,YAAY;QAC7B,IAAIj7D,GAAG,GAAGjF,KAAK,CAAC4kD,YAAN,CAAmByC,KAAnB,CAAV;;QACApnD,IAAI,GAAG8tD,WAAW,CAACkS,cAAZ,CAA2B5Y,KAA3B,EAAkCpiD,GAAlC,EAAuChF,IAAvC,CAAP;QACA6/D,QAAQ,CAACx6C,OAAT,CAAiBrlB,IAAjB;MACH,CAJD;IAKH;;IACD,IAAIs8B,IAAI,IAAIL,IAAZ,EAAkB;MACd4jC,QAAQ,CAACljD,OAAT,CAAiBC,IAAjB,CAAsB0f,IAAtB,EAA4BL,IAA5B;IACH;;IACD,IAAIuoB,MAAJ,EAAY;MACRqb,QAAQ,CAACljD,OAAT,CAAiBC,IAAjB,CAAsB4nC,MAAtB,EAA8BA,MAA9B;IACH;;IACD,OAAOqb,QAAQ,CAACljD,OAAhB;EACH,CAjDD;;EAkDAmxC,WAAW,CAACkS,cAAZ,GAA6B,UAAU5Y,KAAV,EAAiBzoD,MAAjB,EAAyBqB,IAAzB,EAA+B;IACxD,IAAIonD,KAAK,CAACtC,eAAV,EAA2B;MACvB9kD,IAAI,CAACrB,MAAL,GAAcA,MAAM,CAACA,MAArB;MACAqB,IAAI,CAACyqD,KAAL,GAAa9rD,MAAM,CAAC8rD,KAApB;MACAzqD,IAAI,CAACiqD,UAAL,GAAkBtrD,MAAM,CAACsrD,UAAzB;IACH,CAJD,MAKK;MACDjqD,IAAI,CAACrB,MAAL,GAAcA,MAAd;IACH;;IACD,OAAOqB,IAAP;EACH,CAVD;;EAWA8tD,WAAW,CAACmS,QAAZ,GAAuB,UAAU9hB,EAAV,EAAc;IACjC;IACA;IACA,CAAC/iD,MAAM,CAACN,YAAP,IAAuBM,MAAM,CAAC+E,UAA/B,EAA2Cg+C,EAA3C,EAA+C,CAA/C;IACA;EACH,CALD;;EAMA2P,WAAW,CAACnzD,SAAZ,CAAsBulE,aAAtB,GAAsC,UAAUn7C,GAAV,EAAeo7C,SAAf,EAA0BC,MAA1B,EAAkC;IACpE,OAAO9hE,4DAAM,CAAC,EAAD,EAAK;MACd8N,IAAI,EAAE,KADQ;MAEdua,QAAQ,EAAE,KAAK2rC,UAAL,CAAgB3rC,QAFZ;MAGd43C,WAAW,EAAE,KAAKjM,UAAL,CAAgBiM,WAHf;MAIdO,KAAK,EAAE,KAAKxM,UAAL,CAAgBwM,KAJT;MAKduB,KAAK,EAAE,IALO;MAMd1S,WAAW,EAAE,KANC;MAOdrnC,SAAS,EAAE65C,SAPG;MAQd15C,SAAS,EAAE25C;IARG,CAAL,EASVr7C,GATU,CAAb;EAUH,CAXD,CAzSmD,CAqTnD;;;EACA+oC,WAAW,CAACnzD,SAAZ,CAAsBilE,WAAtB,GAAoC,UAAU76C,GAAV,EAAe86C,QAAf,EAAyB7/D,IAAzB,EAA+BonD,KAA/B,EAAsC;IACtE,IAAIrnD,KAAK,GAAG,IAAZ;;IACA,IAAIugE,UAAU,GAAG,CAAC,CAAClZ,KAAK,CAACvC,gBAAzB;;IACA,IAAIub,MAAM,GAAG,UAAU9+D,CAAV,EAAa;MACtBtB,IAAI,CAAC4mB,KAAL,GAAatlB,CAAb;MACAu+D,QAAQ,CAACv6C,MAAT,CAAgBtlB,IAAhB;IACH,CAHD;;IAIA,IAAIugE,OAAO,GAAG,UAAU1kE,IAAV,EAAgB4uD,KAAhB,EAAuBuC,GAAvB,EAA4BC,OAA5B,EAAqC3qC,MAArC,EAA6C2nC,UAA7C,EAAyDuW,oBAAzD,EAA+E;MACzFxgE,IAAI,CAACgtD,GAAL,GAAWA,GAAX;MACAhtD,IAAI,CAACyqD,KAAL,GAAaA,KAAK,GAAG9tD,QAAQ,CAAC8tD,KAAK,CAAC7tD,QAAN,EAAD,EAAmB,EAAnB,CAAX,GAAoC,CAAtD;MACAoD,IAAI,CAACrB,MAAL,GAAc9C,IAAd;MACAmE,IAAI,CAACitD,OAAL,GAAeA,OAAf;MACAjtD,IAAI,CAACiqD,UAAL,GAAkBA,UAAlB;MACAjqD,IAAI,CAACsiB,MAAL,GAAcA,MAAd;MACAtiB,IAAI,CAACwgE,oBAAL,GAA4BA,oBAA5B;MACAX,QAAQ,CAACx6C,OAAT,CAAiBrlB,IAAjB;IACH,CATD;;IAUA,IAAIygE,YAAY,GAAG,UAAU5kE,IAAV,EAAgBm0B,QAAhB,EAA0B;MACzC,IAAI0wC,SAAS,GAAG,IAAIZ,QAAJ,EAAhB;MACA,IAAIa,SAAS,GAAG;QAAE5/D,MAAM,EAAEf;MAAV,CAAhB;MACAonD,KAAK,CAAC3D,QAAN,CAAeC,OAAf,GAAyB,IAAzB;;MACA,IAAIkd,MAAM,GAAG7gE,KAAK,CAACssD,OAAN,CAAcqG,YAAd,CAA2B3yD,KAA3B,EAAkCqnD,KAAK,CAAC3D,QAAxC,EAAkD5nD,IAAI,GAAGkE,KAAK,CAACssD,OAAN,CAAcmG,eAAd,CAA8B32D,IAA9B,CAAH,GAAyCm0B,QAA/F,CAAb;;MACA,IAAI6wC,QAAQ,GAAG9gE,KAAK,CAAC6/D,WAAN,CAAkBgB,MAAlB,EAA0BF,SAA1B,EAAqCC,SAArC,EAAgDvZ,KAAK,CAAC3D,QAAtD,CAAf;;MACA,IAAI,CAAC6c,UAAL,EAAiB;QACbI,SAAS,CAAC9jD,IAAV,CAAe,UAAUkkD,OAAV,EAAmB;UAC9B,IAAIjlE,IAAJ,EAAU;YACN6oD,QAAQ,CAAC0G,cAAT,CAAwBhE,KAAK,CAAC3D,QAAN,CAAeI,IAAvC,EAA6CuD,KAAK,CAAC3D,QAAN,CAAeK,SAA5D,EAAuEjoD,IAAvE,EAA6EilE,OAA7E,EAAsF1Z,KAAK,CAAC3D,QAAN,CAAexmD,GAArG;YACAsjE,OAAO,CAAC1kE,IAAD,EAAOilE,OAAO,CAACrW,KAAf,EAAsBqW,OAAO,CAAC9T,GAA9B,CAAP;UACH;QACJ,CALD,EAKGoT,MALH;MAMH;;MACD,OAAOS,QAAP;IACH,CAfD;;IAgBA,IAAIV,SAAS,GAAG,UAAUtkE,IAAV,EAAgBoxD,OAAhB,EAAyB;MACrC,IAAIltD,KAAK,CAACghE,gBAAN,CAAuBhhE,KAAK,CAACssD,OAA7B,CAAJ,EAA2C;QACvC;QACA,IAAI,CAACnvD,uEAAiB,CAACrB,IAAI,CAAC,QAAD,CAAL,CAAtB,EAAwC;UACpC;UACA,OAAOukE,MAAM,CAACvkE,IAAI,CAAC,QAAD,CAAL,EAAiBoxD,OAAjB,CAAb;QACH;MACJ;;MACD,IAAIltD,KAAK,CAACggE,mBAAN,CAA0BhgE,KAAK,CAACssD,OAAhC,CAAJ,EAA8C;QAC1CY,OAAO,GAAG3uD,4DAAM,CAAC,EAAD,EAAKyB,KAAK,CAACihE,aAAX,EAA0B/T,OAA1B,CAAhB;MACH;;MACD,IAAIA,OAAO,CAAC9nC,WAAR,CAAoB4B,iBAApB,CAAsC,cAAtC,EAAsD5oB,OAAtD,CAA8D,KAA9D,MAAyE,CAAC,CAA1E,IAA+E4B,KAAK,CAAC2wD,SAAzF,EAAoG;QAChG70D,IAAI,GAAG6oD,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyBnyD,IAAzB,CAAP;MACH;;MACD,IAAI8C,MAAM,GAAGoB,KAAK,CAACssD,OAAN,CAAcmG,eAAd,CAA8B32D,IAA9B,EAAoCkE,KAApC,EAA2CqnD,KAA3C,EAAkD6F,OAAO,CAAC9nC,WAA1D,EAAuE8nC,OAAvE,CAAb;;MACA,IAAIxC,KAAK,GAAG,CAAZ;MACA,IAAIR,UAAU,GAAG,IAAjB;MACA,IAAIuW,oBAAoB,GAAG,sBAA3B;MACA,IAAIS,cAAc,GAAGplE,IAAI,CAAC2kE,oBAAD,CAAzB;;MACA,IAAIpZ,KAAK,CAACtC,eAAV,EAA2B;QACvB2F,KAAK,GAAG9rD,MAAM,CAAC8rD,KAAf;QACAR,UAAU,GAAGtrD,MAAM,CAACsrD,UAApB;QACAtrD,MAAM,GAAGA,MAAM,CAACA,MAAhB;MACH;;MACD,IAAI,CAACyoD,KAAK,CAAC3D,QAAX,EAAqB;QACjB8c,OAAO,CAAC5hE,MAAD,EAAS8rD,KAAT,EAAgBwC,OAAO,CAAC9nC,WAAxB,EAAqC8nC,OAAO,CAAC7gD,IAA7C,EAAmDvQ,IAAnD,EAAyDouD,UAAzD,EAAqEgX,cAArE,CAAP;QACA;MACH;;MACD,IAAI,CAACX,UAAL,EAAiB;QACbG,YAAY,CAAC9hE,MAAD,EAASsuD,OAAT,CAAZ;MACH;IACJ,CA/BD;;IAgCA,IAAIL,GAAG,GAAG,KAAKsT,aAAL,CAAmBn7C,GAAnB,EAAwBo7C,SAAxB,EAAmCC,MAAnC,CAAV;;IACA,IAAI,CAAC,KAAKL,mBAAL,CAAyB,KAAK1T,OAA9B,CAAL,EAA6C;MACzC,IAAI6U,MAAM,GAAG,IAAIv8C,sDAAJ,CAASioC,GAAT,CAAb;;MACAsU,MAAM,CAAC76C,UAAP,GAAoB,YAAY;QAC5BtmB,KAAK,CAACsmB,UAAN,CAAiB66C,MAAM,CAAC/7C,WAAxB,EAAqC+7C,MAArC;MACH,CAFD;;MAGAtU,GAAG,GAAGsU,MAAM,CAACl8C,IAAP,EAAN;MACA4nC,GAAG,CAAC3vC,KAAJ,CAAU,UAAU3b,CAAV,EAAa;QAAE,OAAO,IAAP;MAAc,CAAvC,EANyC,CAMC;;MAC1C,KAAKk0D,QAAL,CAAcj1D,IAAd,CAAmB2gE,MAAnB;IACH,CARD,MASK;MACD,KAAKF,aAAL,GAAqBpU,GAArB;MACA,IAAIK,OAAO,GAAGL,GAAd;MACA,KAAKP,OAAL,CAAa9+C,OAAb,CAAqB2uD,OAArB,CAA6B;QACzBrgE,IAAI,EAAEoxD,OAAO,CAACpxD,IADW;QAEzByqB,SAAS,EAAE2mC,OAAO,CAAC3mC,SAFM;QAEKG,SAAS,EAAEwmC,OAAO,CAACxmC;MAFxB,CAA7B;IAIH;;IACD,IAAI65C,UAAJ,EAAgB;MACZ,IAAI3jD,OAAO,GAAG,KAAK,CAAnB;MACA,IAAI3X,GAAG,GAAGoiD,KAAK,CAACvC,gBAAN,CAAuBjkD,IAAvB,CAA4B,IAA5B,EAAkC;QAAEwmD,KAAK,EAAEA,KAAK,CAAC3D,QAAf;QAAyB1iD,MAAM,EAAEqmD;MAAjC,CAAlC,CAAV;;MACA,IAAIpiD,GAAG,IAAIA,GAAG,CAAClJ,MAAf,EAAuB;QACnB6gB,OAAO,GAAGyI,OAAO,CAAC+7C,GAAR,CAAY,CAACvU,GAAD,EAAM6T,YAAY,CAAC,IAAD,EAAOz7D,GAAP,CAAlB,CAAZ,CAAV;QACA2X,OAAO,CAACC,IAAR,CAAa,YAAY;UACrB,IAAI5c,IAAI,GAAG,EAAX;;UACA,KAAK,IAAI/B,EAAE,GAAG,CAAd,EAAiBA,EAAE,GAAGW,SAAS,CAAC9C,MAAhC,EAAwCmC,EAAE,EAA1C,EAA8C;YAC1C+B,IAAI,CAAC/B,EAAD,CAAJ,GAAWW,SAAS,CAACX,EAAD,CAApB;UACH;;UACD,IAAIU,MAAM,GAAGqB,IAAI,CAAC,CAAD,CAAjB;;UACA,IAAIohE,OAAO,GAAGrhE,KAAK,CAACssD,OAAN,CAAcmG,eAAd,CAA8B7zD,MAAM,CAAC,CAAD,CAApC,EAAyCoB,KAAzC,EAAgDqnD,KAAhD,EAAuDrnD,KAAK,CAACy1D,QAAN,CAAe,CAAf,EAAkBrwC,WAAzE,EAAsFplB,KAAK,CAACy1D,QAAN,CAAe,CAAf,CAAtF,CAAd;;UACA,IAAI/K,KAAK,GAAG,CAAZ;;UACA,IAAIrD,KAAK,CAACtC,eAAV,EAA2B;YACvB2F,KAAK,GAAG2W,OAAO,CAAC3W,KAAhB;YACA2W,OAAO,GAAGA,OAAO,CAACziE,MAAlB;UACH;;UACD,IAAI0iE,OAAO,GAAGthE,KAAK,CAACssD,OAAN,CAAcmG,eAAd,CAA8B7zD,MAAM,CAAC,CAAD,CAApC,EAAyCoB,KAAzC,EAAgDqnD,KAAK,CAAC3D,QAAtD,EAAgE1jD,KAAK,CAACy1D,QAAN,CAAe,CAAf,EAAkBrwC,WAAlF,EAA+FplB,KAAK,CAACy1D,QAAN,CAAe,CAAf,CAA/F,CAAd;;UACA/K,KAAK,GAAG,CAAR;;UACA,IAAIrD,KAAK,CAAC3D,QAAN,CAAeqB,eAAnB,EAAoC;YAChC2F,KAAK,GAAG4W,OAAO,CAAC5W,KAAhB;YACA4W,OAAO,GAAGA,OAAO,CAAC1iE,MAAlB;UACH;;UACD+lD,QAAQ,CAAC0G,cAAT,CAAwBhE,KAAK,CAAC3D,QAAN,CAAeI,IAAvC,EAA6CuD,KAAK,CAAC3D,QAAN,CAAeK,SAA5D,EAAuEsd,OAAvE,EAAgFC,OAAhF,EAAyFja,KAAK,CAAC3D,QAAN,CAAexmD,GAAxG;UACAqjE,UAAU,GAAG,KAAb;UACAC,OAAO,CAACa,OAAD,EAAU3W,KAAV,EAAiB1qD,KAAK,CAACy1D,QAAN,CAAe,CAAf,EAAkBrwC,WAAnC,CAAP;QACH,CArBD;MAsBH,CAxBD,MAyBK;QACDm7C,UAAU,GAAG,KAAb;MACH;IACJ;;IACD,OAAO1T,GAAP;EACH,CApHD;;EAqHAkB,WAAW,CAACnzD,SAAZ,CAAsB0rB,UAAtB,GAAmC,UAAU4mC,OAAV,EAAmBmL,QAAnB,EAA6B;IAC5D,KAAK/L,OAAL,CAAahmC,UAAb,CAAwB,IAAxB,EAA8B4mC,OAA9B,EAAuCmL,QAAvC;IACA,IAAIlxC,OAAO,GAAG,KAAKorC,UAAL,CAAgBprC,OAA9B;IACA,IAAI/hB,KAAJ;;IACA,KAAK,IAAI1I,CAAC,GAAG,CAAb,EAAgByqB,OAAO,IAAIzqB,CAAC,GAAGyqB,OAAO,CAACprB,MAAvC,EAA+CW,CAAC,EAAhD,EAAoD;MAChD0I,KAAK,GAAG,EAAR;MACA,IAAIrI,IAAI,GAAGiB,MAAM,CAACjB,IAAP,CAAYoqB,OAAO,CAACzqB,CAAD,CAAnB,CAAX;;MACA,KAAK,IAAIwB,EAAE,GAAG,CAAT,EAAYC,MAAM,GAAGpB,IAA1B,EAAgCmB,EAAE,GAAGC,MAAM,CAACpC,MAA5C,EAAoDmC,EAAE,EAAtD,EAA0D;QACtD,IAAI6G,IAAI,GAAG5G,MAAM,CAACD,EAAD,CAAjB;QACAkH,KAAK,CAAC5E,IAAN,CAAWuE,IAAX;QACAmoD,OAAO,CAAC7mC,gBAAR,CAAyBthB,IAAzB,EAA+BoiB,OAAO,CAACzqB,CAAD,CAAP,CAAWqI,IAAX,CAA/B;MACH;IACJ;EACJ,CAbD;EAcA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIgpD,WAAW,CAACnzD,SAAZ,CAAsB84B,WAAtB,GAAoC,UAAU+/B,OAAV,EAAmBv2D,GAAnB,EAAwB8nD,SAAxB,EAAmCqC,KAAnC,EAA0C6O,QAA1C,EAAoD;IACpF,IAAIl2D,KAAK,GAAG,IAAZ;;IACA,IAAIglD,SAAS,YAAYxB,KAAzB,EAAgC;MAC5B6D,KAAK,GAAGrC,SAAR;MACAA,SAAS,GAAG,IAAZ;IACH;;IACD,IAAI/kD,IAAI,GAAG;MACP+kB,GAAG,EAAEggC,SADE;MAEP9nD,GAAG,EAAEA,GAAG,IAAI,KAAKq1D,UAAL,CAAgBr1D;IAFrB,CAAX;IAIA,IAAI2vD,GAAG,GAAG,KAAKP,OAAL,CAAakH,YAAb,CAA0B,IAA1B,EAAgCC,OAAhC,EAAyCxzD,IAAzC,EAA+ConD,KAAK,IAAI,IAAI7D,KAAJ,EAAxD,EAAqE0S,QAArE,CAAV;IACA,IAAIqL,aAAa,GAAG,eAApB;;IACA,IAAI,KAAKhP,UAAL,CAAgBoM,OAApB,EAA6B;MACzB,OAAO9R,GAAP;IACH;;IACD,IAAI,CAAC1vD,uEAAiB,CAAC,KAAKmvD,OAAL,CAAaiV,aAAb,CAAD,CAAtB,EAAqD;MACjD,OAAO,KAAKjV,OAAL,CAAaiV,aAAb,EAA4B1U,GAA5B,CAAP;IACH,CAFD,MAGK,IAAI,CAAC,KAAKmT,mBAAL,CAAyB,KAAK1T,OAA9B,CAAL,EAA6C;MAC9C,IAAIkV,MAAM,GAAG,IAAIzB,QAAJ,EAAb;MACA,IAAI0B,MAAM,GAAG,IAAI78C,sDAAJ,CAASioC,GAAT,CAAb;;MACA4U,MAAM,CAACn7C,UAAP,GAAoB,YAAY;QAC5BtmB,KAAK,CAACsmB,UAAN,CAAiBm7C,MAAM,CAACr8C,WAAxB,EAAqCq8C,MAArC;MACH,CAFD;;MAGAA,MAAM,CAACl7C,SAAP,GAAmB,UAAUzqB,IAAV,EAAgBoxD,OAAhB,EAAyB;QACxC,IAAIltD,KAAK,CAACghE,gBAAN,CAAuBhhE,KAAK,CAACssD,OAA7B,CAAJ,EAA2C;UACvC;UACA,IAAI,CAACnvD,uEAAiB,CAACrB,IAAI,CAAC,QAAD,CAAL,CAAtB,EAAwC;YACpC;YACA2lE,MAAM,CAAC/6C,SAAP,CAAiB3J,IAAI,CAAC2rB,SAAL,CAAe5sC,IAAI,CAAC,QAAD,CAAnB,CAAjB;UACH;QACJ;;QACD0lE,MAAM,CAACl8C,OAAP,CAAetlB,KAAK,CAACssD,OAAN,CAAcmG,eAAd,CAA8B32D,IAA9B,EAAoCkE,KAApC,EAA2C,IAA3C,EAAiDktD,OAAO,CAAC9nC,WAAzD,EAAsE8nC,OAAtE,EAA+EuG,OAA/E,EAAwFxzD,IAAxF,CAAf;MACH,CATD;;MAUAwhE,MAAM,CAAC/6C,SAAP,GAAmB,UAAUnlB,CAAV,EAAa;QAC5BigE,MAAM,CAACj8C,MAAP,CAAc,CAAC;UAAEsB,KAAK,EAAEtlB;QAAT,CAAD,CAAd;MACH,CAFD;;MAGAkgE,MAAM,CAACx8C,IAAP,GAAc/H,KAAd,CAAoB,UAAU3b,CAAV,EAAa;QAAE,OAAO,IAAP;MAAc,CAAjD,EAnB8C,CAmBM;;MACpD,OAAOigE,MAAM,CAAC5kD,OAAd;IACH,CArBI,MAsBA;MACD,OAAO,KAAK2kD,aAAL,CAAmB1U,GAAnB,EAAwB,KAAKP,OAAL,CAAa9+C,OAAb,CAAqBmvD,WAA7C,CAAP;IACH;EACJ,CA3CD;EA4CA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI5O,WAAW,CAACnzD,SAAZ,CAAsBi5D,MAAtB,GAA+B,UAAU/3D,IAAV,EAAgBkpD,SAAhB,EAA2BqC,KAA3B,EAAkCxZ,QAAlC,EAA4C;IACvE,IAAImX,SAAS,YAAYxB,KAAzB,EAAgC;MAC5B6D,KAAK,GAAGrC,SAAR;MACAA,SAAS,GAAG,IAAZ;IACH;;IACD,IAAI6H,GAAG,GAAG,KAAKP,OAAL,CAAauH,MAAb,CAAoB,IAApB,EAA0B/3D,IAA1B,EAAgCkpD,SAAhC,EAA2CqC,KAA3C,EAAkDxZ,QAAlD,CAAV;IACA,IAAI0zB,aAAa,GAAG,eAApB;;IACA,IAAI,KAAKhP,UAAL,CAAgBoM,OAApB,EAA6B;MACzB,OAAO9R,GAAP;IACH;;IACD,IAAI,CAAC1vD,uEAAiB,CAAC,KAAKmvD,OAAL,CAAaiV,aAAb,CAAD,CAAtB,EAAqD;MACjD,OAAO,KAAKjV,OAAL,CAAaiV,aAAb,EAA4B1U,GAA5B,CAAP;IACH,CAFD,MAGK;MACD,OAAO,KAAK0U,aAAL,CAAmB1U,GAAnB,EAAwB,KAAKP,OAAL,CAAa9+C,OAAb,CAAqBgvD,SAA7C,CAAP;IACH;EACJ,CAhBD;EAiBA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIzO,WAAW,CAACnzD,SAAZ,CAAsB8xB,MAAtB,GAA+B,UAAUgoC,QAAV,EAAoBp4D,KAApB,EAA2B0oD,SAA3B,EAAsCqC,KAAtC,EAA6C;IACxE,IAAI,OAAO/qD,KAAP,KAAiB,QAArB,EAA+B;MAC3BA,KAAK,GAAGqoD,QAAQ,CAAClwB,SAAT,CAAmBigC,QAAnB,EAA6Bp4D,KAA7B,CAAR;IACH;;IACD,IAAI0oD,SAAS,YAAYxB,KAAzB,EAAgC;MAC5B6D,KAAK,GAAGrC,SAAR;MACAA,SAAS,GAAG,IAAZ;IACH;;IACD,IAAI//C,GAAG,GAAG,KAAKqnD,OAAL,CAAa5/B,MAAb,CAAoB,IAApB,EAA0BgoC,QAA1B,EAAoCp4D,KAApC,EAA2C0oD,SAA3C,EAAsDqC,KAAtD,CAAV;IACA,IAAIka,aAAa,GAAG,eAApB;;IACA,IAAI,KAAKhP,UAAL,CAAgBoM,OAApB,EAA6B;MACzB,OAAO15D,GAAP;IACH;;IACD,IAAI,CAAC9H,uEAAiB,CAAC,KAAKmvD,OAAL,CAAaiV,aAAb,CAAD,CAAtB,EAAqD;MACjD,OAAO,KAAKjV,OAAL,CAAaiV,aAAb,EAA4Bt8D,GAA5B,CAAP;IACH,CAFD,MAGK;MACD,IAAIynB,MAAM,GAAG,KAAK4/B,OAAL,CAAa9+C,OAAb,CAAqBkvD,YAAlC;MACA,OAAO,KAAK6E,aAAL,CAAmBt8D,GAAnB,EAAwBynB,MAAxB,CAAP;IACH;EACJ,CApBD;EAqBA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIqhC,WAAW,CAACnzD,SAAZ,CAAsBm5D,MAAtB,GAA+B,UAAUW,QAAV,EAAoBp4D,KAApB,EAA2B0oD,SAA3B,EAAsCqC,KAAtC,EAA6C6O,QAA7C,EAAuD;IAClF,IAAIlR,SAAS,YAAYxB,KAAzB,EAAgC;MAC5B6D,KAAK,GAAGrC,SAAR;MACAA,SAAS,GAAG,IAAZ;IACH;;IACD,IAAI//C,GAAG,GAAG,KAAKqnD,OAAL,CAAayH,MAAb,CAAoB,IAApB,EAA0BW,QAA1B,EAAoCp4D,KAApC,EAA2C0oD,SAA3C,EAAsDqC,KAAtD,EAA6D6O,QAA7D,CAAV;IACA,IAAIqL,aAAa,GAAG,eAApB;;IACA,IAAI,KAAKhP,UAAL,CAAgBoM,OAApB,EAA6B;MACzB,OAAO15D,GAAP;IACH;;IACD,IAAI,CAAC9H,uEAAiB,CAAC,KAAKmvD,OAAL,CAAaiV,aAAb,CAAD,CAAtB,EAAqD;MACjD,OAAO,KAAKjV,OAAL,CAAaiV,aAAb,EAA4Bt8D,GAA5B,CAAP;IACH,CAFD,MAGK;MACD,IAAI8uD,MAAM,GAAG,KAAKzH,OAAL,CAAa9+C,OAAb,CAAqBivD,YAAlC;MACA,OAAO,KAAK8E,aAAL,CAAmBt8D,GAAnB,EAAwB8uD,MAAxB,CAAP;IACH;EACJ,CAjBD;;EAkBAhG,WAAW,CAACnzD,SAAZ,CAAsBolE,mBAAtB,GAA4C,UAAUzN,UAAV,EAAsB;IAC9D,OAAO,KAAKjG,OAAL,CAAax4B,aAAb,IACH,KAAKw4B,OAAL,CAAax4B,aAAb,OAAiC,mBADrC;EAEH,CAHD;;EAIAi6B,WAAW,CAACnzD,SAAZ,CAAsBomE,gBAAtB,GAAyC,UAAUzO,UAAV,EAAsB;IAC3D,OAAO,KAAKjG,OAAL,CAAax4B,aAAb,IACH,KAAKw4B,OAAL,CAAax4B,aAAb,OAAiC,gBADrC;EAEH,CAHD;;EAIAi6B,WAAW,CAACnzD,SAAZ,CAAsB8mE,WAAtB,GAAoC,UAAU9Y,MAAV,EAAkBsE,OAAlB,EAA2B;IAC3D,IAAI,KAAK8T,gBAAL,CAAsB,KAAK1U,OAA3B,CAAJ,EAAyC;MACrC,IAAIxwD,IAAI,GAAGihB,IAAI,CAACC,KAAL,CAAW4rC,MAAX,CAAX,CADqC,CAErC;;MACA,IAAI,CAACzrD,uEAAiB,CAACrB,IAAI,CAAC,QAAD,CAAL,CAAtB,EAAwC;QACpC;QACA,KAAK6lE,WAAL,CAAiB5kD,IAAI,CAAC2rB,SAAL,CAAe5sC,IAAI,CAAC,QAAD,CAAnB,CAAjB;MACH;IACJ;;IACD,IAAI,KAAKkkE,mBAAL,CAAyB,KAAK1T,OAA9B,CAAJ,EAA4C;MACxCY,OAAO,GAAG3uD,4DAAM,CAAC,EAAD,EAAK,KAAK0iE,aAAV,EAAyB/T,OAAzB,CAAhB;IACH;;IACD,IAAI;MACAvI,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyBrF,MAAzB;IACH,CAFD,CAGA,OAAOrnD,CAAP,EAAU;MACNqnD,MAAM,GAAG,EAAT;IACH;;IACDA,MAAM,GAAG,KAAK0D,OAAL,CAAamG,eAAb,CAA6B9N,QAAQ,CAAC3nC,KAAT,CAAeixC,SAAf,CAAyBrF,MAAzB,CAA7B,EAA+D,IAA/D,EAAqE,IAArE,EAA2EsE,OAAO,CAAC9nC,WAAnF,EAAgG8nC,OAAhG,CAAT;IACA,KAAK0U,YAAL,CAAkBt8C,OAAlB,CAA0BsjC,MAA1B;EACH,CApBD;;EAqBAmF,WAAW,CAACnzD,SAAZ,CAAsB+mE,WAAtB,GAAoC,UAAUpgE,CAAV,EAAa;IAC7C,KAAKqgE,YAAL,CAAkBr8C,MAAlB,CAAyB,CAAC;MAAEsB,KAAK,EAAEtlB;IAAT,CAAD,CAAzB;EACH,CAFD;;EAGAwsD,WAAW,CAACnzD,SAAZ,CAAsB2mE,aAAtB,GAAsC,UAAUt8D,GAAV,EAAe48D,QAAf,EAAyB;IAC3D,IAAI7hE,KAAK,GAAG,IAAZ;;IACAiF,GAAG,GAAG1G,4DAAM,CAAC,EAAD,EAAK;MACb8N,IAAI,EAAE,MADO;MAEbyY,WAAW,EAAE,iCAFA;MAGb8oC,WAAW,EAAE;IAHA,CAAL,EAIT3oD,GAJS,CAAZ;IAKA,KAAK28D,YAAL,GAAoB,IAAI7B,QAAJ,EAApB;;IACA,IAAI,CAAC,KAAKC,mBAAL,CAAyB,KAAK1T,OAA9B,CAAL,EAA6C;MACzC,IAAIwV,MAAM,GAAG,IAAIl9C,sDAAJ,CAAS3f,GAAT,CAAb;;MACA68D,MAAM,CAACx7C,UAAP,GAAoB,YAAY;QAC5BtmB,KAAK,CAACsmB,UAAN,CAAiBw7C,MAAM,CAAC18C,WAAxB,EAAqC08C,MAArC;MACH,CAFD;;MAGAA,MAAM,CAACv7C,SAAP,GAAmB,KAAKm7C,WAAL,CAAiB7mE,IAAjB,CAAsB,IAAtB,CAAnB;MACAinE,MAAM,CAACp7C,SAAP,GAAmB,KAAKi7C,WAAL,CAAiB9mE,IAAjB,CAAsB,IAAtB,CAAnB;MACAinE,MAAM,CAAC78C,IAAP,GAAc/H,KAAd,CAAoB,UAAU3b,CAAV,EAAa;QAAE,OAAO,IAAP;MAAc,CAAjD,EAPyC,CAOW;IACvD,CARD,MASK;MACD,KAAK0/D,aAAL,GAAqBh8D,GAArB;MACA48D,QAAQ,CAAChhE,IAAT,CAAc,IAAd,EAAoB;QAChB/E,IAAI,EAAEmJ,GAAG,CAACnJ,IADM;QACAyqB,SAAS,EAAE,KAAKm7C,WAAL,CAAiB7mE,IAAjB,CAAsB,IAAtB,CADX;QAEhB6rB,SAAS,EAAE,KAAKi7C,WAAL,CAAiB9mE,IAAjB,CAAsB,IAAtB;MAFK,CAApB;IAIH;;IACD,OAAO,KAAK+mE,YAAL,CAAkBhlD,OAAzB;EACH,CAzBD;;EA0BAmxC,WAAW,CAACnzD,SAAZ,CAAsBmnE,gBAAtB,GAAyC,YAAY;IACjD1mE,MAAM,CAACa,mBAAP,CAA2B,QAA3B,EAAqC,KAAKgqC,cAAL,CAAoBrrC,IAApB,CAAyB,IAAzB,CAArC;IACA,KAAK03D,UAAL,CAAgBtsB,iBAAhB,GAAoC,KAApC;IACA,KAAKw4B,YAAL,GAAoB,EAApB;IACApjE,MAAM,CAACwrC,YAAP,CAAoBe,OAApB,CAA4B,KAAK2qB,UAAL,CAAgBzoD,EAA5C,EAAgD,IAAhD;EACH,CALD;;EAMA,OAAOikD,WAAP;AACH,CAloB0C,EAA3C;AAmoBA;AACA;AACA;;;AACA,IAAIgS,QAAQ;AAAG;AAAyB,YAAY;EAChD,SAASA,QAAT,GAAoB;IAChB,IAAI//D,KAAK,GAAG,IAAZ;IACA;AACR;AACA;;;IACQ,KAAK4c,OAAL,GAAe,IAAIyI,OAAJ,CAAY,UAAUC,OAAV,EAAmBC,MAAnB,EAA2B;MAClDvlB,KAAK,CAACslB,OAAN,GAAgBA,OAAhB;MACAtlB,KAAK,CAACulB,MAAN,GAAeA,MAAf;IACH,CAHc,CAAf;IAIA;AACR;AACA;;IACQ,KAAK1I,IAAL,GAAY,KAAKD,OAAL,CAAaC,IAAb,CAAkBhiB,IAAlB,CAAuB,KAAK+hB,OAA5B,CAAZ;IACA;AACR;AACA;;IACQ,KAAKM,KAAL,GAAa,KAAKN,OAAL,CAAaM,KAAb,CAAmBriB,IAAnB,CAAwB,KAAK+hB,OAA7B,CAAb;EACH;;EACD,OAAOmjD,QAAP;AACH,CApBuC,EAAxC;AAsBA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACv4MmH;;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;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;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;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;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;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;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,gEAAgE;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C,0CAA0C,gEAAgE;AAC1G;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C,0CAA0C,kDAAkD;AAC5F;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C,0CAA0C,kDAAkD;AAC5F;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,8FAA8F;AACxI;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C,0CAA0C,8FAA8F;AACxI;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;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;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9kJl0B;AACjX;AACf;AACwC;AAC7D;AACS;AACV;;AAEvD;AACA;AACA;AACA;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;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS;AAClC;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;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;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;AACA,oDAAoD,iDAAiD,mBAAmB;AACxH;AACA;AACA,oDAAoD,wCAAwC;AAC5F;AACA;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;AACA,gCAAgC,6DAAO,CAAC,4DAAM,kDAAkD,6DAAO;AACvG;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;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;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;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;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,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;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,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;AACA;AACA,2BAA2B,uEAAiB;AAC5C;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,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,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,0FAA0F;AAC7I;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,YAAY,4DAAM;AAClB;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;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;AACA,+BAA+B,uEAAiB;AAChD;AACA,qBAAqB;AACrB;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;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;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,iDAAiD,gEAAU;AAC3D;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;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;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,aAAa;AACb;AACA,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,QAAQ,qEAAmB;AAC3B;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,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;AACA,YAAY,4DAAM;AAClB;AACA;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;AACA,YAAY,wEAAoB;AAChC;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,qFAAqF,iEAAW;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAU,yBAAyB,oCAAoC;AACnF;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,YAAY,4DAAM;AAClB;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,YAAY,4DAAM;AAClB;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;AACA;AACA;AACA;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;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;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;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;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;AACA,YAAY,wEAAoB;AAChC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA,YAAY,wEAAoB;AAChC;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,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,kCAAkC,uEAAiB;AACnD;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;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;AACA,+DAA+D,6DAAW;AAC1E;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,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,kBAAkB,uEAAiB;AACnC;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,YAAY,uEAAiB;AAC7B,YAAY,iEAAW;AACvB;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,+FAA+F;AAChI;AACA;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,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,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;AACA,iBAAiB;AACjB;AACA;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;AACA;AACA,eAAe,mBAAmB;AAClC,eAAe,mBAAmB;AAClC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA,qCAAqC,oEAAgB;AACrD;AACA,wBAAwB,wEAAoB;AAC5C,6BAA6B,uEAAiB,mCAAmC,uEAAiB;AAClG;AACA;AACA;AACA,4BAA4B,kEAAgB;AAC5C;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;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,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO,GAAG,2CAA2C;AAC7D;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,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,uEAAqB;AAC7B;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,WAAW,kBAAkB;AAC7B,WAAW,iCAAiC;AAC5C,WAAW,gBAAgB;AAC3B,WAAW,QAAQ;AACnB;AACA;AACA,0BAA0B,mEAAa,WAAW,sBAAsB;AACxE,4BAA4B,mEAAa,YAAY,sBAAsB;AAC3E,uEAAuE,iEAAW;AAClF;AACA,SAAS,uEAAiB;AAC1B;AACA,QAAQ,gEAAU,iBAAiB,yCAAyC;AAC5E;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA,WAAW,iCAAiC;AAC5C,WAAW,aAAa;AACxB;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB,QAAQ,iEAAW;AACnB;AACA;AACA,QAAQ,iEAAW;AACnB,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,gBAAgB;AAC3B,WAAW,aAAa;AACxB,WAAW,kBAAkB;AAC7B,WAAW,iCAAiC;AAC5C,WAAW,gBAAgB;AAC3B,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA,QAAQ,4DAAM;AACd;AACA,aAAa,uEAAiB;AAC9B,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iCAAiC;AAC5C,WAAW,kBAAkB;AAC7B,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,gBAAgB;AAC3B;AACA;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B,QAAQ,8DAAQ;AAChB;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,gBAAgB;AAC3B,WAAW,iCAAiC;AAC5C,WAAW,gBAAgB;AAC3B,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA,oEAAoE,uEAAiB;AACrF;AACA,YAAY,iEAAW;AACvB;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA,+EAA+E,uEAAiB;AAChG;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gEAAU,uBAAuB,0EAA0E;AAC3H;AACA;AACA;AACA;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,uCAAuC,6DAAW,uCAAuC,6DAAW;AACpG,uBAAuB,uDAAK;AAC5B;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;AACA,gBAAgB,wEAAoB;AACpC;AACA;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,mCAAmC,uEAAiB;AACpD;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;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;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,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,oFAAoF,uEAAiB;AACrG;AACA;AACA;AACA,uEAAuE,uEAAiB;AACxF;AACA,iEAAiE,uEAAiB;AAClF;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,QAAQ,iEAAW;AACnB,YAAY,kEAAgB;AAC5B;AACA,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,gBAAgB,4DAAM;AACtB;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;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,YAAY,4DAAM;AAClB;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,YAAY,4DAAM;AAClB;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;AACA;AACA,gCAAgC,qBAAqB;AACrD;AACA,uDAAuD,uEAAiB;AACxE,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA,qDAAqD,iEAAW;AAChE;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,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;AACA,YAAY,gEAAU,iCAAiC,iBAAiB,UAAU,QAAQ,WAAW,GAAG;AACxG,YAAY,8DAAQ;AACpB;AACA;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;AACA;AACA;AACA,iBAAiB;AACjB;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,QAAQ,4DAAM;AACd;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,qBAAqB,uEAAiB;AACtC;AACA;AACA,6CAA6C,8DAAQ;AACrD,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,yCAAyC,8DAAQ;AACjD,iBAAiB;AACjB;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,aAAa,uEAAiB;AAC9B;AACA;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,gBAAgB,iEAAW,OAAO,oEAAiB;AACnD,aAAa;AACb;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;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,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;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;AACA,gBAAgB,6DAAM;AACtB;AACA;AACA;AACA,gBAAgB,6DAAM;AACtB;AACA;AACA;AACA,gBAAgB,6DAAM;AACtB;AACA;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;AACA;AACA;AACA,yDAAyD,2BAA2B;AACpF;AACA;AACA;AACA;AACA,iDAAiD,oEAAiB;AAClE;AACA;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,yDAAyD,SAAS;AAClE;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;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,gBAAgB,uEAAiB;AACjC,gBAAgB,8DAAQ;AACxB;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;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,aAAa,uEAAiB;AAC9B,4BAA4B,iDAAiD;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,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;AACA,+BAA+B,uEAAiB;AAChD;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,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,sFAAsF,uEAAiB;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,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,YAAY,4DAAM;AAClB;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzjjBxZ;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;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,kEAAkE;AAClI;AACA;AACA;AACA;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;;;;;;;;;;;;;;;;;;;;;;;AC5kFrR;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5rCjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI7mC,SAAS,GAAIx+B,MAAD,IAAuC,YAAY;EAC/D,IAAIy+B,aAAa,GAAG,UAAUtwB,CAAV,EAAaF,CAAb,EAAgB;IAChCwwB,aAAa,GAAGn7B,MAAM,CAACo7B,cAAP,IACX;MAAEC,SAAS,EAAE;IAAb,aAA6Bh7B,KAA7B,IAAsC,UAAUwK,CAAV,EAAaF,CAAb,EAAgB;MAAEE,CAAC,CAACwwB,SAAF,GAAc1wB,CAAd;IAAkB,CAD/D,IAEZ,UAAUE,CAAV,EAAaF,CAAb,EAAgB;MAAE,KAAK,IAAIoK,CAAT,IAAcpK,CAAd,EAAiB,IAAIA,CAAC,CAAClJ,cAAF,CAAiBsT,CAAjB,CAAJ,EAAyBlK,CAAC,CAACkK,CAAD,CAAD,GAAOpK,CAAC,CAACoK,CAAD,CAAR;IAAc,CAF9E;;IAGA,OAAOomB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAApB;EACH,CALD;;EAMA,OAAO,UAAUE,CAAV,EAAaF,CAAb,EAAgB;IACnBwwB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAAb;;IACA,SAAS2wB,EAAT,GAAc;MAAE,KAAK97B,WAAL,GAAmBqL,CAAnB;IAAuB;;IACvCA,CAAC,CAACjO,SAAF,GAAc+N,CAAC,KAAK,IAAN,GAAa3K,MAAM,CAACg7B,MAAP,CAAcrwB,CAAd,CAAb,IAAiC2wB,EAAE,CAAC1+B,SAAH,GAAe+N,CAAC,CAAC/N,SAAjB,EAA4B,IAAI0+B,EAAJ,EAA7D,CAAd;EACH,CAJD;AAKH,CAZqD,EAAtD;;AAaA,IAAIC,UAAU,GAAI7+B,MAAD,IAAuC,UAAU8+B,UAAV,EAAsBxC,MAAtB,EAA8B95B,GAA9B,EAAmCu8B,IAAnC,EAAyC;EAC7F,IAAI7wB,CAAC,GAAG/J,SAAS,CAAC9C,MAAlB;EAAA,IAA0B29B,CAAC,GAAG9wB,CAAC,GAAG,CAAJ,GAAQouB,MAAR,GAAiByC,IAAI,KAAK,IAAT,GAAgBA,IAAI,GAAGz7B,MAAM,CAAC27B,wBAAP,CAAgC3C,MAAhC,EAAwC95B,GAAxC,CAAvB,GAAsEu8B,IAArH;EAAA,IAA2H5wB,CAA3H;EACA,IAAI,OAAO+wB,OAAP,KAAmB,QAAnB,IAA+B,OAAOA,OAAO,CAACC,QAAf,KAA4B,UAA/D,EAA2EH,CAAC,GAAGE,OAAO,CAACC,QAAR,CAAiBL,UAAjB,EAA6BxC,MAA7B,EAAqC95B,GAArC,EAA0Cu8B,IAA1C,CAAJ,CAA3E,KACK,KAAK,IAAI/8B,CAAC,GAAG88B,UAAU,CAACz9B,MAAX,GAAoB,CAAjC,EAAoCW,CAAC,IAAI,CAAzC,EAA4CA,CAAC,EAA7C,EAAiD,IAAImM,CAAC,GAAG2wB,UAAU,CAAC98B,CAAD,CAAlB,EAAuBg9B,CAAC,GAAG,CAAC9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAAC6wB,CAAD,CAAT,GAAe9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,EAAcw8B,CAAd,CAAT,GAA4B7wB,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,CAA7C,KAA+Dw8B,CAAnE;EAC7E,OAAO9wB,CAAC,GAAG,CAAJ,IAAS8wB,CAAT,IAAc17B,MAAM,CAAC8sB,cAAP,CAAsBkM,MAAtB,EAA8B95B,GAA9B,EAAmCw8B,CAAnC,CAAd,EAAqDA,CAA5D;AACH,CALD;AAMA;AACA;AACA;;;AACA,IAAI0pC,YAAY;AAAG;AAAyB,UAAUrpC,MAAV,EAAkB;EAC1Db,SAAS,CAACkqC,YAAD,EAAerpC,MAAf,CAAT;;EACA,SAASqpC,YAAT,GAAwB;IACpB,OAAOrpC,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACj/B,KAAP,CAAa,IAAb,EAAmB+D,SAAnB,CAAnB,IAAoD,IAA3D;EACH;;EACD06B,UAAU,CAAC,CACPxC,8DAAQ,CAAC,IAAD,CADD,CAAD,EAEPqsC,YAAY,CAACxoE,SAFN,EAEiB,aAFjB,EAEgC,KAAK,CAFrC,CAAV;;EAGA2+B,UAAU,CAAC,CACPxC,8DAAQ,CAAC,IAAD,CADD,CAAD,EAEPqsC,YAAY,CAACxoE,SAFN,EAEiB,aAFjB,EAEgC,KAAK,CAFrC,CAAV;;EAGA2+B,UAAU,CAAC,CACPxC,8DAAQ,CAAC,IAAD,CADD,CAAD,EAEPqsC,YAAY,CAACxoE,SAFN,EAEiB,WAFjB,EAE8B,KAAK,CAFnC,CAAV;;EAGA2+B,UAAU,CAAC,CACPxC,8DAAQ,CAAC,IAAD,CADD,CAAD,EAEPqsC,YAAY,CAACxoE,SAFN,EAEiB,KAFjB,EAEwB,KAAK,CAF7B,CAAV;;EAGA,OAAOwoE,YAAP;AACH,CAlB2C,CAkB1ChjC,+DAlB0C,CAA5C;;AAoBA,IAAI0E,WAAW,GAAIpqC,MAAD,IAAuC,YAAY;EACjE,IAAIy+B,aAAa,GAAG,UAAUtwB,CAAV,EAAaF,CAAb,EAAgB;IAChCwwB,aAAa,GAAGn7B,MAAM,CAACo7B,cAAP,IACX;MAAEC,SAAS,EAAE;IAAb,aAA6Bh7B,KAA7B,IAAsC,UAAUwK,CAAV,EAAaF,CAAb,EAAgB;MAAEE,CAAC,CAACwwB,SAAF,GAAc1wB,CAAd;IAAkB,CAD/D,IAEZ,UAAUE,CAAV,EAAaF,CAAb,EAAgB;MAAE,KAAK,IAAIoK,CAAT,IAAcpK,CAAd,EAAiB,IAAIA,CAAC,CAAClJ,cAAF,CAAiBsT,CAAjB,CAAJ,EAAyBlK,CAAC,CAACkK,CAAD,CAAD,GAAOpK,CAAC,CAACoK,CAAD,CAAR;IAAc,CAF9E;;IAGA,OAAOomB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAApB;EACH,CALD;;EAMA,OAAO,UAAUE,CAAV,EAAaF,CAAb,EAAgB;IACnBwwB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAAb;;IACA,SAAS2wB,EAAT,GAAc;MAAE,KAAK97B,WAAL,GAAmBqL,CAAnB;IAAuB;;IACvCA,CAAC,CAACjO,SAAF,GAAc+N,CAAC,KAAK,IAAN,GAAa3K,MAAM,CAACg7B,MAAP,CAAcrwB,CAAd,CAAb,IAAiC2wB,EAAE,CAAC1+B,SAAH,GAAe+N,CAAC,CAAC/N,SAAjB,EAA4B,IAAI0+B,EAAJ,EAA7D,CAAd;EACH,CAJD;AAKH,CAZuD,EAAxD;;AAaA,IAAIyL,YAAY,GAAIrqC,MAAD,IAAuC,UAAU8+B,UAAV,EAAsBxC,MAAtB,EAA8B95B,GAA9B,EAAmCu8B,IAAnC,EAAyC;EAC/F,IAAI7wB,CAAC,GAAG/J,SAAS,CAAC9C,MAAlB;EAAA,IAA0B29B,CAAC,GAAG9wB,CAAC,GAAG,CAAJ,GAAQouB,MAAR,GAAiByC,IAAI,KAAK,IAAT,GAAgBA,IAAI,GAAGz7B,MAAM,CAAC27B,wBAAP,CAAgC3C,MAAhC,EAAwC95B,GAAxC,CAAvB,GAAsEu8B,IAArH;EAAA,IAA2H5wB,CAA3H;EACA,IAAI,OAAO+wB,OAAP,KAAmB,QAAnB,IAA+B,OAAOA,OAAO,CAACC,QAAf,KAA4B,UAA/D,EAA2EH,CAAC,GAAGE,OAAO,CAACC,QAAR,CAAiBL,UAAjB,EAA6BxC,MAA7B,EAAqC95B,GAArC,EAA0Cu8B,IAA1C,CAAJ,CAA3E,KACK,KAAK,IAAI/8B,CAAC,GAAG88B,UAAU,CAACz9B,MAAX,GAAoB,CAAjC,EAAoCW,CAAC,IAAI,CAAzC,EAA4CA,CAAC,EAA7C,EAAiD,IAAImM,CAAC,GAAG2wB,UAAU,CAAC98B,CAAD,CAAlB,EAAuBg9B,CAAC,GAAG,CAAC9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAAC6wB,CAAD,CAAT,GAAe9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,EAAcw8B,CAAd,CAAT,GAA4B7wB,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,CAA7C,KAA+Dw8B,CAAnE;EAC7E,OAAO9wB,CAAC,GAAG,CAAJ,IAAS8wB,CAAT,IAAc17B,MAAM,CAAC8sB,cAAP,CAAsBkM,MAAtB,EAA8B95B,GAA9B,EAAmCw8B,CAAnC,CAAd,EAAqDA,CAA5D;AACH,CALD;;AAMA,IAAI2pC,YAAY,GAAG,CAAC,WAAD,EAAc,QAAd,EAAwB,KAAxB,EAA+B,MAA/B,EAAuC,OAAvC,EAAgD,QAAhD,EAA0D,UAA1D,EAAsE,QAAtE,EACf,QADe,EACL,SADK,EACM,WADN,EACmB,MADnB,EAC2B,SAD3B,CAAnB;AAEA;AACA;AACA;;AACA,IAAIC,eAAe;AAAG;AAAyB,UAAUvpC,MAAV,EAAkB;EAC7D+K,WAAW,CAACw+B,eAAD,EAAkBvpC,MAAlB,CAAX;;EACA,SAASupC,eAAT,GAA2B;IACvB,OAAOvpC,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACj/B,KAAP,CAAa,IAAb,EAAmB+D,SAAnB,CAAnB,IAAoD,IAA3D;EACH;;EACDkmC,YAAY,CAAC,CACThO,8DAAQ,CAACssC,YAAD,CADC,CAAD,EAETC,eAAe,CAAC1oE,SAFP,EAEkB,OAFlB,EAE2B,KAAK,CAFhC,CAAZ;;EAGAmqC,YAAY,CAAC,CACThO,8DAAQ,CAAC,IAAD,CADC,CAAD,EAETusC,eAAe,CAAC1oE,SAFP,EAEkB,SAFlB,EAE6B,KAAK,CAFlC,CAAZ;;EAGA,OAAO0oE,eAAP;AACH,CAZ8C,CAY7CljC,+DAZ6C,CAA/C;;AAcA,IAAI6I,WAAW,GAAIvuC,MAAD,IAAuC,YAAY;EACjE,IAAIy+B,aAAa,GAAG,UAAUtwB,CAAV,EAAaF,CAAb,EAAgB;IAChCwwB,aAAa,GAAGn7B,MAAM,CAACo7B,cAAP,IACX;MAAEC,SAAS,EAAE;IAAb,aAA6Bh7B,KAA7B,IAAsC,UAAUwK,CAAV,EAAaF,CAAb,EAAgB;MAAEE,CAAC,CAACwwB,SAAF,GAAc1wB,CAAd;IAAkB,CAD/D,IAEZ,UAAUE,CAAV,EAAaF,CAAb,EAAgB;MAAE,KAAK,IAAIoK,CAAT,IAAcpK,CAAd,EAAiB,IAAIA,CAAC,CAAClJ,cAAF,CAAiBsT,CAAjB,CAAJ,EAAyBlK,CAAC,CAACkK,CAAD,CAAD,GAAOpK,CAAC,CAACoK,CAAD,CAAR;IAAc,CAF9E;;IAGA,OAAOomB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAApB;EACH,CALD;;EAMA,OAAO,UAAUE,CAAV,EAAaF,CAAb,EAAgB;IACnBwwB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAAb;;IACA,SAAS2wB,EAAT,GAAc;MAAE,KAAK97B,WAAL,GAAmBqL,CAAnB;IAAuB;;IACvCA,CAAC,CAACjO,SAAF,GAAc+N,CAAC,KAAK,IAAN,GAAa3K,MAAM,CAACg7B,MAAP,CAAcrwB,CAAd,CAAb,IAAiC2wB,EAAE,CAAC1+B,SAAH,GAAe+N,CAAC,CAAC/N,SAAjB,EAA4B,IAAI0+B,EAAJ,EAA7D,CAAd;EACH,CAJD;AAKH,CAZuD,EAAxD;;AAaA,IAAI4P,YAAY,GAAIxuC,MAAD,IAAuC,UAAU8+B,UAAV,EAAsBxC,MAAtB,EAA8B95B,GAA9B,EAAmCu8B,IAAnC,EAAyC;EAC/F,IAAI7wB,CAAC,GAAG/J,SAAS,CAAC9C,MAAlB;EAAA,IAA0B29B,CAAC,GAAG9wB,CAAC,GAAG,CAAJ,GAAQouB,MAAR,GAAiByC,IAAI,KAAK,IAAT,GAAgBA,IAAI,GAAGz7B,MAAM,CAAC27B,wBAAP,CAAgC3C,MAAhC,EAAwC95B,GAAxC,CAAvB,GAAsEu8B,IAArH;EAAA,IAA2H5wB,CAA3H;EACA,IAAI,OAAO+wB,OAAP,KAAmB,QAAnB,IAA+B,OAAOA,OAAO,CAACC,QAAf,KAA4B,UAA/D,EAA2EH,CAAC,GAAGE,OAAO,CAACC,QAAR,CAAiBL,UAAjB,EAA6BxC,MAA7B,EAAqC95B,GAArC,EAA0Cu8B,IAA1C,CAAJ,CAA3E,KACK,KAAK,IAAI/8B,CAAC,GAAG88B,UAAU,CAACz9B,MAAX,GAAoB,CAAjC,EAAoCW,CAAC,IAAI,CAAzC,EAA4CA,CAAC,EAA7C,EAAiD,IAAImM,CAAC,GAAG2wB,UAAU,CAAC98B,CAAD,CAAlB,EAAuBg9B,CAAC,GAAG,CAAC9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAAC6wB,CAAD,CAAT,GAAe9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,EAAcw8B,CAAd,CAAT,GAA4B7wB,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,CAA7C,KAA+Dw8B,CAAnE;EAC7E,OAAO9wB,CAAC,GAAG,CAAJ,IAAS8wB,CAAT,IAAc17B,MAAM,CAAC8sB,cAAP,CAAsBkM,MAAtB,EAA8B95B,GAA9B,EAAmCw8B,CAAnC,CAAd,EAAqDA,CAA5D;AACH,CALD;AAMA;AACA;AACA;;;AACA,IAAI6pC,cAAc;AAAG;AAAyB,UAAUxpC,MAAV,EAAkB;EAC5DkP,WAAW,CAACs6B,cAAD,EAAiBxpC,MAAjB,CAAX;;EACA,SAASwpC,cAAT,GAA0B;IACtB,OAAOxpC,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACj/B,KAAP,CAAa,IAAb,EAAmB+D,SAAnB,CAAnB,IAAoD,IAA3D;EACH;;EACDqqC,YAAY,CAAC,CACTnS,8DAAQ,CAAC,IAAD,CADC,CAAD,EAETwsC,cAAc,CAAC3oE,SAFN,EAEiB,qBAFjB,EAEwC,KAAK,CAF7C,CAAZ;;EAGAsuC,YAAY,CAAC,CACTnS,8DAAQ,CAAC,UAAD,CADC,CAAD,EAETwsC,cAAc,CAAC3oE,SAFN,EAEiB,YAFjB,EAE+B,KAAK,CAFpC,CAAZ;;EAGAsuC,YAAY,CAAC,CACTnS,8DAAQ,CAAC,IAAD,CADC,CAAD,EAETwsC,cAAc,CAAC3oE,SAFN,EAEiB,YAFjB,EAE+B,KAAK,CAFpC,CAAZ;;EAGAsuC,YAAY,CAAC,CACTnS,8DAAQ,CAAC,IAAD,CADC,CAAD,EAETwsC,cAAc,CAAC3oE,SAFN,EAEiB,aAFjB,EAEgC,KAAK,CAFrC,CAAZ;;EAGA,OAAO2oE,cAAP;AACH,CAlB6C,CAkB5CnjC,+DAlB4C,CAA9C;;AAoBA,IAAI6U,WAAW,GAAIv6C,MAAD,IAAuC,YAAY;EACjE,IAAIy+B,aAAa,GAAG,UAAUtwB,CAAV,EAAaF,CAAb,EAAgB;IAChCwwB,aAAa,GAAGn7B,MAAM,CAACo7B,cAAP,IACX;MAAEC,SAAS,EAAE;IAAb,aAA6Bh7B,KAA7B,IAAsC,UAAUwK,CAAV,EAAaF,CAAb,EAAgB;MAAEE,CAAC,CAACwwB,SAAF,GAAc1wB,CAAd;IAAkB,CAD/D,IAEZ,UAAUE,CAAV,EAAaF,CAAb,EAAgB;MAAE,KAAK,IAAIoK,CAAT,IAAcpK,CAAd,EAAiB,IAAIA,CAAC,CAAClJ,cAAF,CAAiBsT,CAAjB,CAAJ,EAAyBlK,CAAC,CAACkK,CAAD,CAAD,GAAOpK,CAAC,CAACoK,CAAD,CAAR;IAAc,CAF9E;;IAGA,OAAOomB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAApB;EACH,CALD;;EAMA,OAAO,UAAUE,CAAV,EAAaF,CAAb,EAAgB;IACnBwwB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAAb;;IACA,SAAS2wB,EAAT,GAAc;MAAE,KAAK97B,WAAL,GAAmBqL,CAAnB;IAAuB;;IACvCA,CAAC,CAACjO,SAAF,GAAc+N,CAAC,KAAK,IAAN,GAAa3K,MAAM,CAACg7B,MAAP,CAAcrwB,CAAd,CAAb,IAAiC2wB,EAAE,CAAC1+B,SAAH,GAAe+N,CAAC,CAAC/N,SAAjB,EAA4B,IAAI0+B,EAAJ,EAA7D,CAAd;EACH,CAJD;AAKH,CAZuD,EAAxD;;AAaA,IAAI4b,YAAY,GAAIx6C,MAAD,IAAuC,UAAU8+B,UAAV,EAAsBxC,MAAtB,EAA8B95B,GAA9B,EAAmCu8B,IAAnC,EAAyC;EAC/F,IAAI7wB,CAAC,GAAG/J,SAAS,CAAC9C,MAAlB;EAAA,IAA0B29B,CAAC,GAAG9wB,CAAC,GAAG,CAAJ,GAAQouB,MAAR,GAAiByC,IAAI,KAAK,IAAT,GAAgBA,IAAI,GAAGz7B,MAAM,CAAC27B,wBAAP,CAAgC3C,MAAhC,EAAwC95B,GAAxC,CAAvB,GAAsEu8B,IAArH;EAAA,IAA2H5wB,CAA3H;EACA,IAAI,OAAO+wB,OAAP,KAAmB,QAAnB,IAA+B,OAAOA,OAAO,CAACC,QAAf,KAA4B,UAA/D,EAA2EH,CAAC,GAAGE,OAAO,CAACC,QAAR,CAAiBL,UAAjB,EAA6BxC,MAA7B,EAAqC95B,GAArC,EAA0Cu8B,IAA1C,CAAJ,CAA3E,KACK,KAAK,IAAI/8B,CAAC,GAAG88B,UAAU,CAACz9B,MAAX,GAAoB,CAAjC,EAAoCW,CAAC,IAAI,CAAzC,EAA4CA,CAAC,EAA7C,EAAiD,IAAImM,CAAC,GAAG2wB,UAAU,CAAC98B,CAAD,CAAlB,EAAuBg9B,CAAC,GAAG,CAAC9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAAC6wB,CAAD,CAAT,GAAe9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,EAAcw8B,CAAd,CAAT,GAA4B7wB,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,CAA7C,KAA+Dw8B,CAAnE;EAC7E,OAAO9wB,CAAC,GAAG,CAAJ,IAAS8wB,CAAT,IAAc17B,MAAM,CAAC8sB,cAAP,CAAsBkM,MAAtB,EAA8B95B,GAA9B,EAAmCw8B,CAAnC,CAAd,EAAqDA,CAA5D;AACH,CALD;AAMA;AACA;AACA;;;AACA,IAAI8pC,WAAW,GAAG,CACd;EACInf,KAAK,EAAE,MADX;EACmBof,UAAU,EAAE,MAD/B;EACuCC,QAAQ,EAAE,GADjD;EACsDC,YAAY,EAAE,IADpE;EAEI9lB,QAAQ,EAAEgE,2EAAqB,CAAC,UAAU/lD,IAAV,EAAgB;IAC5C,OAAO,+BAA+BA,IAAI,CAACsgB,IAApC,GAA2C,SAAlD;EACH,CAF8B,CAFnC;EAKIwnD,gBAAgB,EAAE;IAAEC,KAAK,EAAE;EAAT;AALtB,CADc,EAQd;EACIxf,KAAK,EAAE,cADX;EAC2Bof,UAAU,EAAE,cADvC;EACuDp3D,IAAI,EAAE,UAD7D;EAEIH,MAAM,EAAE,qBAFZ;EAEmCw3D,QAAQ,EAAE,GAF7C;EAEkDj0B,KAAK,EAAE;AAFzD,CARc,EAYd;EACI4U,KAAK,EAAE,MADX;EACmBof,UAAU,EAAE,MAD/B;EACuCC,QAAQ,EAAE,EADjD;EACqDj0B,KAAK,EAAE,KAD5D;EAEIoO,QAAQ,EAAEgE,2EAAqB,CAAC,UAAU/lD,IAAV,EAAgB;IAC5C,OAAO,+BAA+BA,IAAI,CAACu4D,IAApC,GAA2C,SAAlD;EACH,CAF8B,CAFnC;EAIQnoD,MAAM,EAAE;AAJhB,CAZc,CAAlB;AAmBA;AACA;AACA;;AACA,IAAI43D,mBAAmB;AAAG;AAAyB,UAAU/pC,MAAV,EAAkB;EACjEkb,WAAW,CAAC6uB,mBAAD,EAAsB/pC,MAAtB,CAAX;;EACA,SAAS+pC,mBAAT,GAA+B;IAC3B,OAAO/pC,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACj/B,KAAP,CAAa,IAAb,EAAmB+D,SAAnB,CAAnB,IAAoD,IAA3D;EACH;;EACDq2C,YAAY,CAAC,CACTne,8DAAQ,CAAC,IAAD,CADC,CAAD,EAET+sC,mBAAmB,CAAClpE,SAFX,EAEsB,gBAFtB,EAEwC,KAAK,CAF7C,CAAZ;;EAGAs6C,YAAY,CAAC,CACTne,8DAAQ,CAACysC,WAAD,CADC,CAAD,EAETM,mBAAmB,CAAClpE,SAFX,EAEsB,SAFtB,EAEiC,KAAK,CAFtC,CAAZ;;EAGA,OAAOkpE,mBAAP;AACH,CAZkD,CAYjD1jC,+DAZiD,CAAnD;;AAcA,IAAI0V,WAAW,GAAIp7C,MAAD,IAAuC,YAAY;EACjE,IAAIy+B,aAAa,GAAG,UAAUtwB,CAAV,EAAaF,CAAb,EAAgB;IAChCwwB,aAAa,GAAGn7B,MAAM,CAACo7B,cAAP,IACX;MAAEC,SAAS,EAAE;IAAb,aAA6Bh7B,KAA7B,IAAsC,UAAUwK,CAAV,EAAaF,CAAb,EAAgB;MAAEE,CAAC,CAACwwB,SAAF,GAAc1wB,CAAd;IAAkB,CAD/D,IAEZ,UAAUE,CAAV,EAAaF,CAAb,EAAgB;MAAE,KAAK,IAAIoK,CAAT,IAAcpK,CAAd,EAAiB,IAAIA,CAAC,CAAClJ,cAAF,CAAiBsT,CAAjB,CAAJ,EAAyBlK,CAAC,CAACkK,CAAD,CAAD,GAAOpK,CAAC,CAACoK,CAAD,CAAR;IAAc,CAF9E;;IAGA,OAAOomB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAApB;EACH,CALD;;EAMA,OAAO,UAAUE,CAAV,EAAaF,CAAb,EAAgB;IACnBwwB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAAb;;IACA,SAAS2wB,EAAT,GAAc;MAAE,KAAK97B,WAAL,GAAmBqL,CAAnB;IAAuB;;IACvCA,CAAC,CAACjO,SAAF,GAAc+N,CAAC,KAAK,IAAN,GAAa3K,MAAM,CAACg7B,MAAP,CAAcrwB,CAAd,CAAb,IAAiC2wB,EAAE,CAAC1+B,SAAH,GAAe+N,CAAC,CAAC/N,SAAjB,EAA4B,IAAI0+B,EAAJ,EAA7D,CAAd;EACH,CAJD;AAKH,CAZuD,EAAxD;;AAaA,IAAIyc,YAAY,GAAIr7C,MAAD,IAAuC,UAAU8+B,UAAV,EAAsBxC,MAAtB,EAA8B95B,GAA9B,EAAmCu8B,IAAnC,EAAyC;EAC/F,IAAI7wB,CAAC,GAAG/J,SAAS,CAAC9C,MAAlB;EAAA,IAA0B29B,CAAC,GAAG9wB,CAAC,GAAG,CAAJ,GAAQouB,MAAR,GAAiByC,IAAI,KAAK,IAAT,GAAgBA,IAAI,GAAGz7B,MAAM,CAAC27B,wBAAP,CAAgC3C,MAAhC,EAAwC95B,GAAxC,CAAvB,GAAsEu8B,IAArH;EAAA,IAA2H5wB,CAA3H;EACA,IAAI,OAAO+wB,OAAP,KAAmB,QAAnB,IAA+B,OAAOA,OAAO,CAACC,QAAf,KAA4B,UAA/D,EAA2EH,CAAC,GAAGE,OAAO,CAACC,QAAR,CAAiBL,UAAjB,EAA6BxC,MAA7B,EAAqC95B,GAArC,EAA0Cu8B,IAA1C,CAAJ,CAA3E,KACK,KAAK,IAAI/8B,CAAC,GAAG88B,UAAU,CAACz9B,MAAX,GAAoB,CAAjC,EAAoCW,CAAC,IAAI,CAAzC,EAA4CA,CAAC,EAA7C,EAAiD,IAAImM,CAAC,GAAG2wB,UAAU,CAAC98B,CAAD,CAAlB,EAAuBg9B,CAAC,GAAG,CAAC9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAAC6wB,CAAD,CAAT,GAAe9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,EAAcw8B,CAAd,CAAT,GAA4B7wB,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,CAA7C,KAA+Dw8B,CAAnE;EAC7E,OAAO9wB,CAAC,GAAG,CAAJ,IAAS8wB,CAAT,IAAc17B,MAAM,CAAC8sB,cAAP,CAAsBkM,MAAtB,EAA8B95B,GAA9B,EAAmCw8B,CAAnC,CAAd,EAAqDA,CAA5D;AACH,CALD;;AAMA,IAAIqqC,SAAS,GAAG,CAAC,MAAD,EAAS,GAAT,EAAc,KAAd,EAAqB,MAArB,EAA6B,GAA7B,EAAkC,QAAlC,EAA4C,UAA5C,EAAwD,QAAxD,EAAkE,GAAlE,EAAuE,SAAvE,CAAhB;AACA,IAAIC,WAAW,GAAG,CAAC,MAAD,EAAS,GAAT,EAAc,KAAd,EAAqB,MAArB,EAA6B,OAA7B,EAAsC,GAAtC,EAA2C,QAA3C,EAAqD,QAArD,EAA+D,UAA/D,EAA2E,GAA3E,EAAgF,SAAhF,CAAlB;AACA,IAAIC,WAAW,GAAG,CACd,QADc,EACJ,MADI,EACI,SADJ,EACe,GADf,EACoB,OADpB,EAC6B,GAD7B,EACkC,WADlC,EAC+C,QAD/C,EACyD,GADzD,EAC8D,SAD9D,EACyE,GADzE,EAC8E,WAD9E,CAAlB;AAGA;AACA;AACA;;AACA,IAAIC,mBAAmB;AAAG;AAAyB,UAAUnqC,MAAV,EAAkB;EACjE+b,WAAW,CAACouB,mBAAD,EAAsBnqC,MAAtB,CAAX;;EACA,SAASmqC,mBAAT,GAA+B;IAC3B,OAAOnqC,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACj/B,KAAP,CAAa,IAAb,EAAmB+D,SAAnB,CAAnB,IAAoD,IAA3D;EACH;;EACDk3C,YAAY,CAAC,CACThf,8DAAQ,CAACgtC,SAAD,CADC,CAAD,EAETG,mBAAmB,CAACtpE,SAFX,EAEsB,MAFtB,EAE8B,KAAK,CAFnC,CAAZ;;EAGAm7C,YAAY,CAAC,CACThf,8DAAQ,CAACitC,WAAD,CADC,CAAD,EAETE,mBAAmB,CAACtpE,SAFX,EAEsB,QAFtB,EAEgC,KAAK,CAFrC,CAAZ;;EAGAm7C,YAAY,CAAC,CACThf,8DAAQ,CAACktC,WAAD,CADC,CAAD,EAETC,mBAAmB,CAACtpE,SAFX,EAEsB,QAFtB,EAEgC,KAAK,CAFrC,CAAZ;;EAGAm7C,YAAY,CAAC,CACThf,8DAAQ,CAAC,IAAD,CADC,CAAD,EAETmtC,mBAAmB,CAACtpE,SAFX,EAEsB,SAFtB,EAEiC,KAAK,CAFtC,CAAZ;;EAGA,OAAOspE,mBAAP;AACH,CAlBkD,CAkBjD9jC,+DAlBiD,CAAnD;;AAoBA,IAAIiY,WAAW,GAAI39C,MAAD,IAAuC,YAAY;EACjE,IAAIy+B,aAAa,GAAG,UAAUtwB,CAAV,EAAaF,CAAb,EAAgB;IAChCwwB,aAAa,GAAGn7B,MAAM,CAACo7B,cAAP,IACX;MAAEC,SAAS,EAAE;IAAb,aAA6Bh7B,KAA7B,IAAsC,UAAUwK,CAAV,EAAaF,CAAb,EAAgB;MAAEE,CAAC,CAACwwB,SAAF,GAAc1wB,CAAd;IAAkB,CAD/D,IAEZ,UAAUE,CAAV,EAAaF,CAAb,EAAgB;MAAE,KAAK,IAAIoK,CAAT,IAAcpK,CAAd,EAAiB,IAAIA,CAAC,CAAClJ,cAAF,CAAiBsT,CAAjB,CAAJ,EAAyBlK,CAAC,CAACkK,CAAD,CAAD,GAAOpK,CAAC,CAACoK,CAAD,CAAR;IAAc,CAF9E;;IAGA,OAAOomB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAApB;EACH,CALD;;EAMA,OAAO,UAAUE,CAAV,EAAaF,CAAb,EAAgB;IACnBwwB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAAb;;IACA,SAAS2wB,EAAT,GAAc;MAAE,KAAK97B,WAAL,GAAmBqL,CAAnB;IAAuB;;IACvCA,CAAC,CAACjO,SAAF,GAAc+N,CAAC,KAAK,IAAN,GAAa3K,MAAM,CAACg7B,MAAP,CAAcrwB,CAAd,CAAb,IAAiC2wB,EAAE,CAAC1+B,SAAH,GAAe+N,CAAC,CAAC/N,SAAjB,EAA4B,IAAI0+B,EAAJ,EAA7D,CAAd;EACH,CAJD;AAKH,CAZuD,EAAxD;;AAaA,IAAIgf,YAAY,GAAI59C,MAAD,IAAuC,UAAU8+B,UAAV,EAAsBxC,MAAtB,EAA8B95B,GAA9B,EAAmCu8B,IAAnC,EAAyC;EAC/F,IAAI7wB,CAAC,GAAG/J,SAAS,CAAC9C,MAAlB;EAAA,IAA0B29B,CAAC,GAAG9wB,CAAC,GAAG,CAAJ,GAAQouB,MAAR,GAAiByC,IAAI,KAAK,IAAT,GAAgBA,IAAI,GAAGz7B,MAAM,CAAC27B,wBAAP,CAAgC3C,MAAhC,EAAwC95B,GAAxC,CAAvB,GAAsEu8B,IAArH;EAAA,IAA2H5wB,CAA3H;EACA,IAAI,OAAO+wB,OAAP,KAAmB,QAAnB,IAA+B,OAAOA,OAAO,CAACC,QAAf,KAA4B,UAA/D,EAA2EH,CAAC,GAAGE,OAAO,CAACC,QAAR,CAAiBL,UAAjB,EAA6BxC,MAA7B,EAAqC95B,GAArC,EAA0Cu8B,IAA1C,CAAJ,CAA3E,KACK,KAAK,IAAI/8B,CAAC,GAAG88B,UAAU,CAACz9B,MAAX,GAAoB,CAAjC,EAAoCW,CAAC,IAAI,CAAzC,EAA4CA,CAAC,EAA7C,EAAiD,IAAImM,CAAC,GAAG2wB,UAAU,CAAC98B,CAAD,CAAlB,EAAuBg9B,CAAC,GAAG,CAAC9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAAC6wB,CAAD,CAAT,GAAe9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,EAAcw8B,CAAd,CAAT,GAA4B7wB,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,CAA7C,KAA+Dw8B,CAAnE;EAC7E,OAAO9wB,CAAC,GAAG,CAAJ,IAAS8wB,CAAT,IAAc17B,MAAM,CAAC8sB,cAAP,CAAsBkM,MAAtB,EAA8B95B,GAA9B,EAAmCw8B,CAAnC,CAAd,EAAqDA,CAA5D;AACH,CALD;AAMA;AACA;AACA;;;AACA,IAAIyqC,sBAAsB;AAAG;AAAyB,UAAUpqC,MAAV,EAAkB;EACpEse,WAAW,CAAC8rB,sBAAD,EAAyBpqC,MAAzB,CAAX;;EACA,SAASoqC,sBAAT,GAAkC;IAC9B,OAAOpqC,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACj/B,KAAP,CAAa,IAAb,EAAmB+D,SAAnB,CAAnB,IAAoD,IAA3D;EACH;;EACDy5C,YAAY,CAAC,CACTvhB,8DAAQ,CAAC,OAAD,CADC,CAAD,EAETotC,sBAAsB,CAACvpE,SAFd,EAEyB,UAFzB,EAEqC,KAAK,CAF1C,CAAZ;;EAGA09C,YAAY,CAAC,CACTvhB,8DAAQ,CAAC,OAAD,CADC,CAAD,EAETotC,sBAAsB,CAACvpE,SAFd,EAEyB,UAFzB,EAEqC,KAAK,CAF1C,CAAZ;;EAGA09C,YAAY,CAAC,CACTvhB,8DAAQ,CAAC,IAAD,CADC,CAAD,EAETotC,sBAAsB,CAACvpE,SAFd,EAEyB,SAFzB,EAEoC,KAAK,CAFzC,CAAZ;;EAGA09C,YAAY,CAAC,CACTvhB,8DAAQ,CAAC,MAAD,CADC,CAAD,EAETotC,sBAAsB,CAACvpE,SAFd,EAEyB,WAFzB,EAEsC,KAAK,CAF3C,CAAZ;;EAGA,OAAOupE,sBAAP;AACH,CAlBqD,CAkBpD/jC,+DAlBoD,CAAtD;;AAoBA,IAAIgkC,WAAW,GAAI1pE,MAAD,IAAuC,YAAY;EACjE,IAAIy+B,aAAa,GAAG,UAAUtwB,CAAV,EAAaF,CAAb,EAAgB;IAChCwwB,aAAa,GAAGn7B,MAAM,CAACo7B,cAAP,IACX;MAAEC,SAAS,EAAE;IAAb,aAA6Bh7B,KAA7B,IAAsC,UAAUwK,CAAV,EAAaF,CAAb,EAAgB;MAAEE,CAAC,CAACwwB,SAAF,GAAc1wB,CAAd;IAAkB,CAD/D,IAEZ,UAAUE,CAAV,EAAaF,CAAb,EAAgB;MAAE,KAAK,IAAIoK,CAAT,IAAcpK,CAAd,EAAiB,IAAIA,CAAC,CAAClJ,cAAF,CAAiBsT,CAAjB,CAAJ,EAAyBlK,CAAC,CAACkK,CAAD,CAAD,GAAOpK,CAAC,CAACoK,CAAD,CAAR;IAAc,CAF9E;;IAGA,OAAOomB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAApB;EACH,CALD;;EAMA,OAAO,UAAUE,CAAV,EAAaF,CAAb,EAAgB;IACnBwwB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAAb;;IACA,SAAS2wB,EAAT,GAAc;MAAE,KAAK97B,WAAL,GAAmBqL,CAAnB;IAAuB;;IACvCA,CAAC,CAACjO,SAAF,GAAc+N,CAAC,KAAK,IAAN,GAAa3K,MAAM,CAACg7B,MAAP,CAAcrwB,CAAd,CAAb,IAAiC2wB,EAAE,CAAC1+B,SAAH,GAAe+N,CAAC,CAAC/N,SAAjB,EAA4B,IAAI0+B,EAAJ,EAA7D,CAAd;EACH,CAJD;AAKH,CAZuD,EAAxD;;AAaA,IAAI+qC,YAAY,GAAI3pE,MAAD,IAAuC,UAAU8+B,UAAV,EAAsBxC,MAAtB,EAA8B95B,GAA9B,EAAmCu8B,IAAnC,EAAyC;EAC/F,IAAI7wB,CAAC,GAAG/J,SAAS,CAAC9C,MAAlB;EAAA,IAA0B29B,CAAC,GAAG9wB,CAAC,GAAG,CAAJ,GAAQouB,MAAR,GAAiByC,IAAI,KAAK,IAAT,GAAgBA,IAAI,GAAGz7B,MAAM,CAAC27B,wBAAP,CAAgC3C,MAAhC,EAAwC95B,GAAxC,CAAvB,GAAsEu8B,IAArH;EAAA,IAA2H5wB,CAA3H;EACA,IAAI,OAAO+wB,OAAP,KAAmB,QAAnB,IAA+B,OAAOA,OAAO,CAACC,QAAf,KAA4B,UAA/D,EAA2EH,CAAC,GAAGE,OAAO,CAACC,QAAR,CAAiBL,UAAjB,EAA6BxC,MAA7B,EAAqC95B,GAArC,EAA0Cu8B,IAA1C,CAAJ,CAA3E,KACK,KAAK,IAAI/8B,CAAC,GAAG88B,UAAU,CAACz9B,MAAX,GAAoB,CAAjC,EAAoCW,CAAC,IAAI,CAAzC,EAA4CA,CAAC,EAA7C,EAAiD,IAAImM,CAAC,GAAG2wB,UAAU,CAAC98B,CAAD,CAAlB,EAAuBg9B,CAAC,GAAG,CAAC9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAAC6wB,CAAD,CAAT,GAAe9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,EAAcw8B,CAAd,CAAT,GAA4B7wB,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,CAA7C,KAA+Dw8B,CAAnE;EAC7E,OAAO9wB,CAAC,GAAG,CAAJ,IAAS8wB,CAAT,IAAc17B,MAAM,CAAC8sB,cAAP,CAAsBkM,MAAtB,EAA8B95B,GAA9B,EAAmCw8B,CAAnC,CAAd,EAAqDA,CAA5D;AACH,CALD;AAMA;AACA;AACA;;;AACA,IAAI4qC,cAAc;AAAG;AAAyB,UAAUvqC,MAAV,EAAkB;EAC5DqqC,WAAW,CAACE,cAAD,EAAiBvqC,MAAjB,CAAX;;EACA,SAASuqC,cAAT,GAA0B;IACtB,OAAOvqC,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACj/B,KAAP,CAAa,IAAb,EAAmB+D,SAAnB,CAAnB,IAAoD,IAA3D;EACH;;EACDwlE,YAAY,CAAC,CACTttC,8DAAQ,CAAC,EAAD,CADC,CAAD,EAETutC,cAAc,CAAC1pE,SAFN,EAEiB,mBAFjB,EAEsC,KAAK,CAF3C,CAAZ;;EAGAypE,YAAY,CAAC,CACTttC,8DAAQ,CAAC,IAAD,CADC,CAAD,EAETutC,cAAc,CAAC1pE,SAFN,EAEiB,YAFjB,EAE+B,KAAK,CAFpC,CAAZ;;EAGAypE,YAAY,CAAC,CACTttC,8DAAQ,CAAC,KAAD,CADC,CAAD,EAETutC,cAAc,CAAC1pE,SAFN,EAEiB,WAFjB,EAE8B,KAAK,CAFnC,CAAZ;;EAGAypE,YAAY,CAAC,CACTttC,8DAAQ,CAAC,KAAD,CADC,CAAD,EAETutC,cAAc,CAAC1pE,SAFN,EAEiB,iBAFjB,EAEoC,KAAK,CAFzC,CAAZ;;EAGAypE,YAAY,CAAC,CACTttC,8DAAQ,CAAC,CAAD,CADC,CAAD,EAETutC,cAAc,CAAC1pE,SAFN,EAEiB,aAFjB,EAEgC,KAAK,CAFrC,CAAZ;;EAGAypE,YAAY,CAAC,CACTttC,8DAAQ,CAAC,QAAD,CADC,CAAD,EAETutC,cAAc,CAAC1pE,SAFN,EAEiB,aAFjB,EAEgC,KAAK,CAFrC,CAAZ;;EAGA,OAAO0pE,cAAP;AACH,CAxB6C,CAwB5ClkC,+DAxB4C,CAA9C;;AA0BA,IAAImkC,WAAW,GAAI7pE,MAAD,IAAuC,YAAY;EACjE,IAAIy+B,aAAa,GAAG,UAAUtwB,CAAV,EAAaF,CAAb,EAAgB;IAChCwwB,aAAa,GAAGn7B,MAAM,CAACo7B,cAAP,IACX;MAAEC,SAAS,EAAE;IAAb,aAA6Bh7B,KAA7B,IAAsC,UAAUwK,CAAV,EAAaF,CAAb,EAAgB;MAAEE,CAAC,CAACwwB,SAAF,GAAc1wB,CAAd;IAAkB,CAD/D,IAEZ,UAAUE,CAAV,EAAaF,CAAb,EAAgB;MAAE,KAAK,IAAIoK,CAAT,IAAcpK,CAAd,EAAiB,IAAIA,CAAC,CAAClJ,cAAF,CAAiBsT,CAAjB,CAAJ,EAAyBlK,CAAC,CAACkK,CAAD,CAAD,GAAOpK,CAAC,CAACoK,CAAD,CAAR;IAAc,CAF9E;;IAGA,OAAOomB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAApB;EACH,CALD;;EAMA,OAAO,UAAUE,CAAV,EAAaF,CAAb,EAAgB;IACnBwwB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAAb;;IACA,SAAS2wB,EAAT,GAAc;MAAE,KAAK97B,WAAL,GAAmBqL,CAAnB;IAAuB;;IACvCA,CAAC,CAACjO,SAAF,GAAc+N,CAAC,KAAK,IAAN,GAAa3K,MAAM,CAACg7B,MAAP,CAAcrwB,CAAd,CAAb,IAAiC2wB,EAAE,CAAC1+B,SAAH,GAAe+N,CAAC,CAAC/N,SAAjB,EAA4B,IAAI0+B,EAAJ,EAA7D,CAAd;EACH,CAJD;AAKH,CAZuD,EAAxD;;AAaA,IAAIkrC,YAAY,GAAI9pE,MAAD,IAAuC,UAAU8+B,UAAV,EAAsBxC,MAAtB,EAA8B95B,GAA9B,EAAmCu8B,IAAnC,EAAyC;EAC/F,IAAI7wB,CAAC,GAAG/J,SAAS,CAAC9C,MAAlB;EAAA,IAA0B29B,CAAC,GAAG9wB,CAAC,GAAG,CAAJ,GAAQouB,MAAR,GAAiByC,IAAI,KAAK,IAAT,GAAgBA,IAAI,GAAGz7B,MAAM,CAAC27B,wBAAP,CAAgC3C,MAAhC,EAAwC95B,GAAxC,CAAvB,GAAsEu8B,IAArH;EAAA,IAA2H5wB,CAA3H;EACA,IAAI,OAAO+wB,OAAP,KAAmB,QAAnB,IAA+B,OAAOA,OAAO,CAACC,QAAf,KAA4B,UAA/D,EAA2EH,CAAC,GAAGE,OAAO,CAACC,QAAR,CAAiBL,UAAjB,EAA6BxC,MAA7B,EAAqC95B,GAArC,EAA0Cu8B,IAA1C,CAAJ,CAA3E,KACK,KAAK,IAAI/8B,CAAC,GAAG88B,UAAU,CAACz9B,MAAX,GAAoB,CAAjC,EAAoCW,CAAC,IAAI,CAAzC,EAA4CA,CAAC,EAA7C,EAAiD,IAAImM,CAAC,GAAG2wB,UAAU,CAAC98B,CAAD,CAAlB,EAAuBg9B,CAAC,GAAG,CAAC9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAAC6wB,CAAD,CAAT,GAAe9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,EAAcw8B,CAAd,CAAT,GAA4B7wB,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,CAA7C,KAA+Dw8B,CAAnE;EAC7E,OAAO9wB,CAAC,GAAG,CAAJ,IAAS8wB,CAAT,IAAc17B,MAAM,CAAC8sB,cAAP,CAAsBkM,MAAtB,EAA8B95B,GAA9B,EAAmCw8B,CAAnC,CAAd,EAAqDA,CAA5D;AACH,CALD;AAMA;AACA;AACA;;AACA;;;AACA,IAAI+qC,MAAM;AAAG;AAAyB,UAAU1qC,MAAV,EAAkB;EACpDwqC,WAAW,CAACE,MAAD,EAAS1qC,MAAT,CAAX;;EACA,SAAS0qC,MAAT,GAAkB;IACd,OAAO1qC,MAAM,KAAK,IAAX,IAAmBA,MAAM,CAACj/B,KAAP,CAAa,IAAb,EAAmB+D,SAAnB,CAAnB,IAAoD,IAA3D;EACH;;EACD2lE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,EAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,OAFT,EAEkB,KAAK,CAFvB,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,EAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,YAFT,EAEuB,KAAK,CAF5B,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,EAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,OAFT,EAEkB,KAAK,CAFvB,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,EAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,UAFT,EAEqB,KAAK,CAF1B,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,EAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,UAFT,EAEqB,KAAK,CAF1B,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,MAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,WAFT,EAEsB,KAAK,CAF3B,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,IAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,iBAFT,EAE4B,KAAK,CAFjC,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,IAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,MAFT,EAEiB,KAAK,CAFtB,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,IAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,QAFT,EAEmB,KAAK,CAFxB,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,IAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,UAFT,EAEqB,KAAK,CAF1B,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,IAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,gBAFT,EAE2B,KAAK,CAFhC,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,IAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,cAFT,EAEyB,KAAK,CAF9B,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,IAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,eAFT,EAE0B,KAAK,CAF/B,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,IAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,kBAFT,EAE6B,KAAK,CAFlC,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,EAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,aAFT,EAEwB,KAAK,CAF7B,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,IAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,cAFT,EAEyB,KAAK,CAF9B,CAAZ;;EAGA4pE,YAAY,CAAC,CACTztC,8DAAQ,CAAC,KAAD,CADC,CAAD,EAET0tC,MAAM,CAAC7pE,SAFE,EAES,cAFT,EAEyB,KAAK,CAF9B,CAAZ;;EAGA,OAAO6pE,MAAP;AACH,CAzDqC,CAyDpCrkC,+DAzDoC,CAAtC;AA2DA;AACA;AACA;;AAEA;AACA;AACA;;AACA;;;AACA,IAAIskC,UAAU,GAAG,UAAjB;AACA;;AACA,IAAIC,SAAS,GAAG,SAAhB;AACA;;AACA,IAAIC,aAAa,GAAG,aAApB;AACA;;AACA,IAAIC,OAAO,GAAG,OAAd;AACA;;AACA,IAAIC,OAAO,GAAG,OAAd;AACA;;AACA,IAAIC,YAAY,GAAG,aAAnB;AACA;;AACA,IAAIC,SAAS,GAAG,SAAhB;AACA;;AACA,IAAIC,aAAa,GAAG,aAApB;AACA;;AACA,IAAIC,aAAa,GAAG,aAApB;AACA;;AACA,IAAIC,cAAc,GAAG,cAArB;AACA;;AACA,IAAIC,gBAAgB,GAAG,gBAAvB;AACA;;AACA,IAAIC,eAAe,GAAG,eAAtB;AACA;;AACA,IAAIC,eAAe,GAAG,cAAtB;AACA;;AACA,IAAIC,SAAS,GAAG,SAAhB;AACA;;AACA,IAAIC,OAAO,GAAG,OAAd;AACA;;AACA,IAAIC,WAAW,GAAG,WAAlB;AACA;;AACA,IAAIC,UAAU,GAAG,UAAjB;AACA;;AACA,IAAIC,gBAAgB,GAAG,gBAAvB;AACA;;AACA,IAAIC,SAAS,GAAG,SAAhB;AACA;;AACA,IAAIC,QAAQ,GAAG,QAAf;AACA;;AACA,IAAIC,SAAS,GAAG,SAAhB;AACA;AACA;AACA;;AACA;;AACA,IAAIC,IAAI,GAAG,eAAX;AACA;;AACA,IAAIC,OAAO,GAAG,WAAd;AACA;;AACA,IAAIC,YAAY,GAAG,gBAAnB;AACA;;AACA,IAAIC,UAAU,GAAG,YAAjB;AACA;;AACA,IAAIC,MAAM,GAAG,aAAb;AACA;;AACA,IAAIC,SAAS,GAAG,wBAAhB;AACA;;AACA,IAAIC,YAAY,GAAG,eAAnB;AACA;;AACA,IAAIC,MAAM,GAAG,eAAb;AACA;;AACA,IAAIC,MAAM,GAAG,UAAb;AACA;;AACA,IAAIC,UAAU,GAAG,cAAjB;AACA;;AACA,IAAIC,cAAc,GAAG,kBAArB;AACA;;AACA,IAAIC,WAAW,GAAG,eAAlB;AACA;;AACA,IAAIC,OAAO,GAAG,gBAAd;AACA;;AACA,IAAIC,SAAS,GAAG,aAAhB;AACA;;AACA,IAAIC,SAAS,GAAG,aAAhB;AACA;;AACA,IAAIC,WAAW,GAAG,eAAlB;AACA;;AACA,IAAIC,cAAc,GAAG,mBAArB;AACA;;AACA,IAAIC,aAAa,GAAG,kBAApB;AACA;;AACA,IAAIC,IAAI,GAAG,QAAX;AACA;;AACA,IAAIC,MAAM,GAAG,UAAb;AACA;;AACA,IAAIC,KAAK,GAAG,SAAZ;AACA;;AACA,IAAIC,KAAK,GAAG,SAAZ;AACA;;AACA,IAAIC,OAAO,GAAG,WAAd;AACA;;AACA,IAAIC,KAAK,GAAG,SAAZ;AACA;;AACA,IAAIC,KAAK,GAAG,SAAZ;AACA;;AACA,IAAIC,OAAO,GAAG,oBAAd;AACA;;AACA,IAAIC,GAAG,GAAG,OAAV;AACA;;AACA,IAAIC,OAAO,GAAG,WAAd;AACA;;AACA,IAAIC,KAAK,GAAG,SAAZ;AACA;;AACA,IAAIC,aAAa,GAAG,iBAApB;AACA;;AACA,IAAIC,mBAAmB,GAAG,uBAA1B;AACA;;AACA,IAAIC,KAAK,GAAG,YAAZ;AACA;;AACA,IAAIC,WAAW,GAAG,kBAAlB;AACA;;AACA,IAAIC,SAAS,GAAG,gBAAhB;AACA;;AACA,IAAIC,MAAM,GAAG,aAAb;AACA;;AACA,IAAIC,UAAU,GAAG,YAAjB;AACA;;AACA,IAAIC,UAAU,GAAG,YAAjB;AACA;;AACA,IAAIC,UAAU,GAAG,YAAjB;AACA;;AACA,IAAIC,UAAU,GAAG,cAAjB;AACA;;AACA,IAAIC,kBAAkB,GAAG,0BAAzB;AACA;;AACA,IAAIC,sBAAsB,GAAG,0BAA7B;AACA;;AACA,IAAIC,iBAAiB,GAAG,aAAxB;AACA;;AACA,IAAIC,cAAc,GAAG,SAArB;AACA;;AACA,IAAIC,YAAY,GAAG,gBAAnB;AACA;;AACA,IAAIC,WAAW,GAAG,cAAlB;AACA;;AACA,IAAIC,aAAa,GAAG,gBAApB;AACA;;AACA,IAAIC,SAAS,GAAG,YAAhB;AACA;;AACA,IAAIC,SAAS,GAAG,aAAhB;AACA;;AACA,IAAIC,SAAS,GAAG,aAAhB;AACA;;AACA,IAAIC,YAAY,GAAG,SAAnB;AACA;;AACA,IAAIC,SAAS,GAAG,WAAhB;AACA;;AACA,IAAIC,YAAY,GAAG,eAAnB;AACA;;AACA,IAAIC,SAAS,GAAG,eAAhB;AACA;;AACA,IAAIC,SAAS,GAAG,mBAAhB;AACA;;AACA,IAAIC,WAAW,GAAG,qBAAlB;AACA;;AACA,IAAIC,QAAQ,GAAG,kBAAf;AACA;;AACA,IAAIC,SAAS,GAAG,mBAAhB;AACA;;AACA,IAAIC,UAAU,GAAG,oBAAjB;AACA;;AACA,IAAIC,WAAW,GAAG,qBAAlB;AACA;;AACA,IAAIC,WAAW,GAAG,qBAAlB;AACA;;AACA,IAAIC,cAAc,GAAG,wBAArB;AACA;;AACA,IAAIC,YAAY,GAAG,sBAAnB;AACA;;AACA,IAAIC,YAAY,GAAG,mBAAnB;AACA;;AACA,IAAIC,YAAY,GAAG,sBAAnB;AACA;;AACA,IAAIC,cAAc,GAAG,qBAArB;AACA;;AACA,IAAIC,aAAa,GAAG,uBAApB;AACA;;AACA,IAAIC,YAAY,GAAG,sBAAnB;AACA;;AACA,IAAIC,SAAS,GAAG,mBAAhB;AACA;;AACA,IAAIC,UAAU,GAAG,oBAAjB;AACA;;AACA,IAAIC,eAAe,GAAG,yBAAtB;AACA;;AACA,IAAIC,UAAU,GAAG,oBAAjB;AACA;;AACA,IAAIC,YAAY,GAAG,sBAAnB;AACA;;AACA,IAAIC,aAAa,GAAG,uBAApB;AACA;;AACA,IAAIC,YAAY,GAAG,sBAAnB;AACA;;AACA,IAAIC,KAAK,GAAG,SAAZ;AACA;;AACA,IAAIC,aAAa,GAAG,gBAApB;AACA;;AACA,IAAIC,aAAa,GAAG,mBAApB;AACA;;AACA,IAAIC,MAAM,GAAG,UAAb;AACA;;AACA,IAAIC,WAAW,GAAG,WAAlB;AACA;;AACA,IAAIC,GAAG,GAAG,OAAV;AACA;;AACA,IAAIC,YAAY,GAAG,gBAAnB;AACA;;AACA,IAAIC,SAAS,GAAG,kBAAhB;AACA;;AACA,IAAIC,OAAO,GAAG,WAAd;AACA;;AACA,IAAIC,gBAAgB,GAAG,oBAAvB;AACA;;AACA,IAAIC,SAAS,GAAG,aAAhB;AACA;;AACA,IAAIC,YAAY,GAAG,eAAnB;AACA;;AACA,IAAIC,OAAO,GAAG,cAAd;AACA;;AACA,IAAIC,KAAK,GAAG,YAAZ;AAEA;AACA;AACA;;AACA;;AACA,IAAIC,MAAM,GAAG,QAAb;AACA;AACA;AACA;;AACA;;AACA,IAAIC,YAAY,GAAG,eAAnB;AACA;;AACA,IAAIC,UAAU,GAAG,aAAjB;AACA;;AACA,IAAIC,WAAW,GAAG,cAAlB;AACA;;AACA,IAAIC,SAAS,GAAG,YAAhB;AACA;;AACA,IAAIC,SAAS,GAAG,YAAhB;AACA;;AACA,IAAIC,YAAY,GAAG,eAAnB;AACA;;AACA,IAAIC,QAAQ,GAAG,WAAf;AACA;;AACA,IAAIC,UAAU,GAAG,aAAjB;AACA;;AACA,IAAIC,SAAS,GAAG,YAAhB;AACA;;AACA,IAAIC,UAAU,GAAG,aAAjB;AACA;;AACA,IAAIC,SAAS,GAAG,YAAhB;AACA;;AACA,IAAIC,cAAc,GAAG,iBAArB;AACA;;AACA,IAAIC,WAAW,GAAG,cAAlB;AACA;;AACA,IAAIhvD,OAAO,GAAG,SAAd;AACA;;AACA,IAAIivD,aAAa,GAAG,gBAApB;AACA;;AACA,IAAIjmD,MAAM,GAAG,QAAb;AACA;;AACA,IAAIkmD,UAAU,GAAG,aAAjB;AACA;;AACA,IAAIC,YAAY,GAAG,eAAnB;AACA;;AACA,IAAIC,QAAQ,GAAG,UAAf;AACA;;AACA,IAAIC,aAAa,GAAG,gBAApB;AACA;;AACA,IAAIC,aAAa,GAAG,eAApB;AACA;;AACA,IAAI5mB,MAAM,GAAG,QAAb;AACA;;AACA,IAAI6mB,QAAQ,GAAG,WAAf;AACA;;AACA,IAAIC,OAAO,GAAG,UAAd;AACA;;AACA,IAAIC,gBAAgB,GAAG,mBAAvB;AACA;;AACA,IAAIC,aAAa,GAAG,iBAApB;AACA;;AACA,IAAIC,YAAY,GAAG,gBAAnB;AACA;;AACA,IAAIC,aAAa,GAAG,iBAApB;AACA;;AACA,IAAIC,YAAY,GAAG,eAAnB;AACA;;AACA,IAAIC,YAAY,GAAG,gBAAnB;AACA;;AACA,IAAIC,UAAU,GAAG,aAAjB;AACA;;AACA,IAAIC,WAAW,GAAG,cAAlB;AACA;;AACA,IAAIC,YAAY,GAAG,gBAAnB;AACA;;AACA,IAAIC,UAAU,GAAG,aAAjB;AACA;;AACA,IAAIC,eAAe,GAAG,mBAAtB;AACA;;AACA,IAAIC,SAAS,GAAG,YAAhB;AACA;;AACA,IAAIC,SAAS,GAAG,YAAhB;AACA;;AACA,IAAIC,SAAS,GAAG,YAAhB;AACA;;AACA,IAAIC,YAAY,GAAG,eAAnB;AACA;;AACA,IAAIC,WAAW,GAAG,eAAlB;AACA;;AACA,IAAIC,SAAS,GAAG,YAAhB;AACA;;AACA,IAAIC,QAAQ,GAAG,WAAf;AACA;;AACA,IAAIC,MAAM,GAAG,SAAb;AACA;;AACA,IAAIC,UAAU,GAAG,aAAjB;AACA;;AACA,IAAIC,mBAAmB,GAAG,uBAA1B;AACA;;AACA,IAAIC,UAAU,GAAG,aAAjB;AACA;;AACA,IAAIC,UAAU,GAAG,aAAjB;AACA;;AACA,IAAIC,UAAU,GAAG,aAAjB;AACA;;AACA,IAAIC,gBAAgB,GAAG,eAAvB;AACA;;AACA,IAAIC,cAAc,GAAG,iBAArB;AACA;;AACA,IAAIC,YAAY,GAAG,eAAnB;AACA;;AACA,IAAIC,QAAQ,GAAG,WAAf;AACA;;AACA,IAAIC,OAAO,GAAG,UAAd;AACA;;AACA,IAAIC,QAAQ,GAAG,WAAf;AACA;;AACA,IAAIC,UAAU,GAAG,aAAjB;AACA;;AACA,IAAIC,QAAQ,GAAG,UAAf;AACA;;AACA,IAAIC,mBAAmB,GAAG,uBAA1B;AACA;;AACA,IAAIC,UAAU,GAAG,aAAjB;AACA;;AACA,IAAIC,cAAc,GAAG,MAArB;AACA;;AACA,IAAIC,cAAc,GAAG,OAArB;AACA;;AACA,IAAIC,sBAAsB,GAAG,eAA7B;AACA;;AACA,IAAIC,cAAc,GAAG,MAArB;AACA;;AACA,IAAIC,gBAAgB,GAAG,QAAvB;AACA;;AACA,IAAIC,kBAAkB,GAAG,UAAzB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,UAAT,CAAoBpuE,IAApB,EAA0BnF,IAA1B,EAAgCqI,QAAhC,EAA0C;EACtC,IAAI0P,IAAI,GAAG1X,8DAAQ,CAAC,MAAD,EAASL,IAAT,CAAnB;EACA,IAAIgO,EAAE,GAAG7I,IAAI,CAACqwB,YAAL,CAAkB,SAAlB,CAAT;EACA,IAAIg+C,OAAO,GAAGnyE,uEAAiB,CAAC2M,EAAD,CAAjB,GAAwB+J,IAAxB,GAA+B/J,EAA7C;EACA3F,QAAQ,CAACyuB,aAAT,CAAuB;IAAE28C,IAAI,EAAEC,OAAO,CAACvuE,IAAD,EAAOquE,OAAP,EAAgBnrE,QAAQ,CAACsrE,KAAzB;EAAf,CAAvB,EAAyE,IAAzE;EACAtrE,QAAQ,CAACurE,MAAT,GAAkBC,SAAS,CAAC1uE,IAAD,CAA3B;EACAkD,QAAQ,CAACyrE,SAAT,GAAqBC,YAAY,CAAC5uE,IAAD,EAAO4S,IAAP,CAAjC;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS27D,OAAT,CAAiB9tE,OAAjB,EAA0BmS,IAA1B,EAAgC47D,KAAhC,EAAuC;EACnC,IAAIK,OAAO,GAAGC,UAAU,CAACruE,OAAD,EAAUmS,IAAV,EAAgB,KAAhB,EAAuB47D,KAAvB,CAAxB;EACA,IAAIF,IAAI,GAAGE,KAAK,GAAG,EAAH,GAAQ,GAAxB;EACA,IAAIrtE,GAAG,GAAG0tE,OAAO,CAAC/zE,MAAR,IAAkB0zE,KAAK,GAAG,CAAH,GAAO,CAA9B,CAAV;;EACA,KAAK,IAAI/yE,CAAC,GAAG0F,GAAb,EAAkB1F,CAAC,IAAI,CAAvB,EAA0BA,CAAC,EAA3B,EAA+B;IAC3B6yE,IAAI,IAAIO,OAAO,CAACpzE,CAAD,CAAP,GAAa,GAArB;EACH;;EACD,OAAO6yE,IAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASI,SAAT,CAAmB1uE,IAAnB,EAAyB;EACrB,IAAI6uE,OAAO,GAAGC,UAAU,CAAC9uE,IAAD,EAAOA,IAAI,CAACqwB,YAAL,CAAkB,UAAlB,CAAP,EAAsC,IAAtC,CAAxB;EACA,IAAI0+C,GAAG,GAAG,EAAV;;EACA,KAAK,IAAItzE,CAAC,GAAGozE,OAAO,CAAC/zE,MAAR,GAAiB,CAA9B,EAAiCW,CAAC,IAAI,CAAtC,EAAyCA,CAAC,EAA1C,EAA8C;IAC1CszE,GAAG,CAACxvE,IAAJ,CAASsvE,OAAO,CAACpzE,CAAD,CAAhB;EACH;;EACD,OAAOszE,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASH,YAAT,CAAsBnuE,OAAtB,EAA+BmS,IAA/B,EAAqC;EACjC,IAAIi8D,OAAO,GAAGC,UAAU,CAACruE,OAAD,EAAUmS,IAAV,EAAgB,KAAhB,CAAxB;EACA,IAAIo8D,KAAK,GAAG,EAAZ;;EACA,KAAK,IAAIvzE,CAAC,GAAGozE,OAAO,CAAC/zE,MAAR,GAAiB,CAA9B,EAAiCW,CAAC,IAAI,CAAtC,EAAyCA,CAAC,EAA1C,EAA8C;IAC1CuzE,KAAK,CAACzvE,IAAN,CAAWsvE,OAAO,CAACpzE,CAAD,CAAlB;EACH;;EACD,OAAOuzE,KAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASF,UAAT,CAAoBruE,OAApB,EAA6BmS,IAA7B,EAAmCq8D,IAAnC,EAAyCT,KAAzC,EAAgD;EAC5C,IAAIK,OAAO,GAAG,CAACj8D,IAAD,CAAd;EACA,IAAI+c,EAAE,GAAGlvB,OAAO,CAACP,UAAjB;;EACA,OAAO,CAAChE,uEAAiB,CAACyzB,EAAD,CAAzB,EAA+B;IAC3B,IAAInjB,6DAAO,CAACmjB,EAAD,EAAK,MAAMg2C,SAAX,CAAX,EAAkC;MAC9B,IAAIuJ,UAAU,GAAGD,IAAI,GAAGt/C,EAAE,CAACU,YAAH,CAAgB,UAAhB,CAAH,GAAkCm+C,KAAK,GAAG7+C,EAAE,CAACU,YAAH,CAAgB,SAAhB,CAAH,GACxDtB,4DAAM,CAAC,MAAM62C,SAAP,EAAkBj2C,EAAlB,CAAN,CAA4Bw/C,WADhC;MAEAN,OAAO,CAACtvE,IAAR,CAAa2vE,UAAb;IACH;;IACDv/C,EAAE,GAAGA,EAAE,CAACzvB,UAAR;;IACA,IAAIyvB,EAAE,CAAC7C,SAAH,CAAaM,QAAb,CAAsBw6C,SAAtB,CAAJ,EAAsC;MAClC;IACH;EACJ;;EACD,OAAOiH,OAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASO,YAAT,CAAsBrvE,MAAtB,EAA8B;EAC1B,IAAI9D,GAAG,GAAG8D,MAAM,CAACyuE,KAAP,GAAe,IAAf,GAAsB,MAAhC;EACA,IAAIa,OAAO,GAAGtvE,MAAM,CAACyuE,KAAP,GAAe,EAAf,GAAoB,GAAlC;EACA,IAAI/yE,CAAC,GAAGsE,MAAM,CAACyuE,KAAP,GAAe,CAAf,GAAmB,CAA3B;;EACA,KAAK/yE,CAAL,EAAQA,CAAC,GAAGsE,MAAM,CAAC0uE,MAAP,CAAc3zE,MAA1B,EAAkCW,CAAC,EAAnC,EAAuC;IACnC;IACA,IAAIZ,IAAI,GAAGK,8DAAQ,CAAC6E,MAAM,CAAC0uE,MAAP,CAAchzE,CAAd,CAAD,EAAmBsE,MAAM,CAACuvE,QAA1B,CAAnB;IACAD,OAAO,IAAIn0E,8DAAQ,CAACe,GAAD,EAAMpB,IAAN,CAAR,GAAsB,GAAjC;EACH;;EACDkF,MAAM,CAAC4xB,aAAP,CAAqB;IAAE28C,IAAI,EAAEe;EAAR,CAArB,EAAwC,IAAxC;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,YAAT,CAAsBxvE,MAAtB,EAA8B;EAC1B,IAAIA,MAAM,CAACyvE,KAAX,EAAkB;IACdC,UAAU,CAAC1vE,MAAD,CAAV;IACAA,MAAM,CAAC2vE,aAAP,GAAuB,EAAvB;IACA3vE,MAAM,CAAC4vE,aAAP,GAAuB,EAAvB;IACA5vE,MAAM,CAAC6vE,WAAP,GAAqB,KAArB;IACA7vE,MAAM,CAACgb,MAAP,CAAc0xD,SAAd,EAAyB,EAAzB;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASoD,aAAT,CAAuBh6C,MAAvB,EAA+B91B,MAA/B,EAAuC;EACnCA,MAAM,CAAC+vE,WAAP,GAAqB,KAArB;EACA/vE,MAAM,CAAC4vE,aAAP,GAAuB,EAAvB;EACA5vE,MAAM,CAACgwE,cAAP,GAAwB,EAAxB;EACAhwE,MAAM,CAACgb,MAAP,CAAc4xD,WAAd,EAA2B,EAA3B;;EACA,IAAI5sE,MAAM,CAACgwE,cAAP,CAAsBj1E,MAAtB,KAAiC,CAArC,EAAwC;IACpC,OAAO,KAAP;EACH;;EACD20E,UAAU,CAAC1vE,MAAD,CAAV;EACA,IAAIiwE,OAAO,GAAGjwE,MAAM,CAACgwE,cAArB;;EACA,IAAIhwE,MAAM,CAACkwE,YAAP,KAAwB,gBAA5B,EAA8C;IAC1ClwE,MAAM,CAACmwE,UAAP,GAAoBnwE,MAAM,CAACuuE,IAA3B;EACH,CAFD,MAGK;IACDvuE,MAAM,CAACmwE,UAAP,GAAoBC,aAAa,CAACpwE,MAAM,CAACuuE,IAAR,CAAjC;EACH;;EACD,IAAI7yE,CAAC,GAAG,CAAR;;EACA,IAAIu0E,OAAJ,EAAa;IACTI,SAAS,CAACrwE,MAAD,EAASiwE,OAAO,CAAC,CAAD,CAAhB,CAAT;;IACA,IAAIn6C,MAAM,KAAK,KAAf,EAAsB;MAClB,OAAOp6B,CAAC,GAAGu0E,OAAO,CAACl1E,MAAnB,EAA2B;QACvBu1E,OAAO,CAACL,OAAO,CAACv0E,CAAD,CAAR,CAAP;QACAA,CAAC;MACJ;IACJ;EACJ;;EACDA,CAAC,GAAG,CAAJ;EACAsE,MAAM,CAAC2vE,aAAP,GAAuB,EAAvB;EACA3vE,MAAM,CAAC6vE,WAAP,GAAqB,IAArB;EACA7vE,MAAM,CAACgb,MAAP,CAAcyxD,SAAd,EAAyB,EAAzB;;EACA,OAAO/wE,CAAC,GAAGsE,MAAM,CAACuwE,aAAP,CAAqBx1E,MAAhC,EAAwC;IACpCiF,MAAM,CAAC4vE,aAAP,CAAqBpwE,IAArB,CAA0BQ,MAAM,CAACuwE,aAAP,CAAqB70E,CAArB,CAA1B;IACAsE,MAAM,CAAC2vE,aAAP,CAAqBnwE,IAArB,CAA0BrE,8DAAQ,CAAC,MAAD,EAAS6E,MAAM,CAACuwE,aAAP,CAAqB70E,CAArB,CAAT,CAAlC;IACAA,CAAC;EACJ;;EACD,IAAI,CAACsE,MAAM,CAACwwE,mBAAP,CAA2BC,SAA3B,CAAqC/vE,OAArC,CAA6CpF,KAA7C,KAAuD,EAAvD,IAA6D0E,MAAM,CAAC0wE,UAArE,KACA1wE,MAAM,CAACkwE,YAAP,KAAwB,gBAD5B,EAC8C;IAC1ClwE,MAAM,CAAC2vE,aAAP,GAAuB,EAAvB;IACA3vE,MAAM,CAAC+vE,WAAP,GAAqB,IAArB;IACA,IAAIY,GAAG,GAAG,CAAV;;IACA,OAAOA,GAAG,GAAG3wE,MAAM,CAAC4wE,aAAP,CAAqB71E,MAAlC,EAA0C;MACtCiF,MAAM,CAAC2vE,aAAP,CAAqBnwE,IAArB,CAA0BQ,MAAM,CAAC4wE,aAAP,CAAqBD,GAArB,CAA1B;MACAA,GAAG;IACN;EACJ;;EACD,OAAO,IAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASL,OAAT,CAAiBnuB,KAAjB,EAAwB;EACpBA,KAAK,CAACp1B,SAAN,CAAgB9B,GAAhB,CAAoBg7C,IAApB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASyJ,UAAT,CAAoB1vE,MAApB,EAA4B6wE,KAA5B,EAAmC;EAC/B,IAAIZ,OAAO,GAAI,CAACY,KAAF,GAAW7wE,MAAM,CAACU,OAAP,CAAeO,gBAAf,CAAgC,MAAMglE,IAAtC,CAAX,GACVjmE,MAAM,CAACU,OAAP,CAAeO,gBAAf,CAAgC,MAAMklE,KAAtC,CADJ;EAEA,IAAIzqE,CAAC,GAAG,CAAR;;EACA,OAAOA,CAAC,GAAGu0E,OAAO,CAACl1E,MAAnB,EAA2B;IACvBk1E,OAAO,CAACv0E,CAAD,CAAP,CAAWqxB,SAAX,CAAqBrB,MAArB,CAA6B,CAACmlD,KAAF,GAAW5K,IAAX,GAAkBE,KAA9C;IACAzqE,CAAC;EACJ;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS20E,SAAT,CAAmBrwE,MAAnB,EAA2BU,OAA3B,EAAoC;EAChC,IAAIA,OAAJ,EAAa;IACT,IAAIA,OAAO,CAACqsB,SAAR,CAAkBM,QAAlB,CAA2Bo5C,GAA3B,CAAJ,EAAqC;MACjCzmE,MAAM,CAACkwE,YAAP,GAAsB,aAAtB;IACH,CAFD,MAGK,IAAIvgD,6DAAO,CAACjvB,OAAD,EAAU,MAAM2mE,UAAhB,CAAX,EAAwC;MACzCrnE,MAAM,CAACkwE,YAAP,GAAsB,gBAAtB;IACH,CAFI,MAGA;MACDlwE,MAAM,CAACkwE,YAAP,GAAsB,gBAAtB;IACH;EACJ;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASY,iBAAT,CAA2B9wE,MAA3B,EAAmC1E,KAAnC,EAA0Cy1E,cAA1C,EAA0D;EACtD,IAAIC,UAAJ;;EACA,IAAI11E,KAAK,CAACP,MAAN,KAAiB,CAAjB,IAAsB,CAACiF,MAAM,CAAC0wE,UAAlC,EAA8C;IAC1C1wE,MAAM,CAACgb,MAAP,CAAcoyD,UAAd,EAA0B;MAAEnuE,IAAI,EAAEe;IAAR,CAA1B;EACH;;EACD,IAAIA,MAAM,CAACixE,cAAP,CAAsBC,UAAtB,KAAqC,YAAzC,EAAuD;IACnDF,UAAU,GAAG11E,KAAK,GAAG,GAArB;EACH,CAFD,MAGK,IAAI0E,MAAM,CAACixE,cAAP,CAAsBC,UAAtB,KAAqC,UAAzC,EAAqD;IACtDF,UAAU,GAAG,MAAM11E,KAAnB;EACH,CAFI,MAGA;IACD01E,UAAU,GAAG,MAAM11E,KAAN,GAAc,GAA3B;EACH;;EACD0E,MAAM,CAACgxE,UAAP,GAAoBA,UAApB;EACAhxE,MAAM,CAACmxE,QAAP,GAAkB,CAACC,aAAa,CAACpxE,MAAD,CAAd,CAAlB;;EACA,IAAI1E,KAAK,CAACP,MAAN,GAAe,CAAnB,EAAsB;IAClB,IAAIs2E,aAAa,GAAGrxE,MAAM,CAACixE,cAAP,CAAsBxsB,UAA1C;IACA,IAAI6sB,WAAW,GAAGtxE,MAAM,CAACuxE,eAAzB;IACAC,MAAM,CAACxxE,MAAD,EAAS+wE,cAAc,GAAG9E,YAAH,GAAkBnnB,MAAzC,EAAiD9kD,MAAM,CAACuuE,IAAxD,EAA8DyC,UAA9D,EAA0EM,WAA1E,EAAuF,CAACD,aAAxF,CAAN;EACH,CAJD,MAKK;IACD,IAAI,CAACrxE,MAAM,CAAC0wE,UAAZ,EAAwB;MACpB,IAAI1wE,MAAM,CAACyxE,eAAX,EAA4B;QACxBzxE,MAAM,CAACgb,MAAP,CAAcixD,YAAd,EAA4B;UAAEyF,KAAK,EAAG1xE,MAAM,CAAC2xE,OAAP,KAAmB,SAApB,GAAiC3xE,MAAM,CAAC4xE,iBAAP,CAAyBC,OAAzB,CAAiCtgB,UAAlE,GAA+EvxD,MAAM,CAAC8xE,oBAAP,CAA4BC;QAApH,CAA5B;QACA/xE,MAAM,CAACyxE,eAAP,GAAyB,KAAzB;MACH,CAHD,MAIK;QACDO,IAAI,CAAChyE,MAAD,EAAS+wE,cAAc,GAAG9E,YAAH,GAAkBnnB,MAAzC,EAAiD9kD,MAAM,CAACuuE,IAAxD,CAAJ;MACH;IACJ,CARD,MASK;MACDv7C,MAAM,CAAChzB,MAAD,EAASisE,YAAT,CAAN;IACH;EACJ;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASgG,YAAT,CAAsBjyE,MAAtB,EAA8BkyE,IAA9B,EAAoC;EAChClyE,MAAM,CAAC2xE,OAAP,GAAiB3xE,MAAM,CAACkyE,IAAxB;EACAlyE,MAAM,CAAC4xB,aAAP,CAAqB;IAAEsgD,IAAI,EAAEA;EAAR,CAArB,EAAqC,IAArC;;EACA,IAAIlyE,MAAM,CAACwwE,mBAAP,CAA2BC,SAA3B,CAAqC/vE,OAArC,CAA6CpF,KAA7C,KAAuD,EAAvD,IAA6D0E,MAAM,CAAC0wE,UAAxE,EAAoF;IAChF1wE,MAAM,CAACmyE,mBAAP,GAA6BnyE,MAAM,CAAC4wE,aAApC;EACH;;EACD,IAAII,UAAU,GAAG,EAAjB;;EACA,IAAIhxE,MAAM,CAACwwE,mBAAP,CAA2BC,SAA3B,CAAqC/vE,OAArC,CAA6CpF,KAAjD,EAAwD;IACpD01E,UAAU,GAAGhxE,MAAM,CAACwwE,mBAAP,CAA2BC,SAA3B,CAAqC/vE,OAArC,CAA6CpF,KAA1D;EACH;;EACD0E,MAAM,CAAC+wE,cAAP,GAAwB,IAAxB;EACAD,iBAAiB,CAAC9wE,MAAD,EAASgxE,UAAT,EAAqB,IAArB,CAAjB;AACH;AACD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASoB,eAAT,CAAyBpyE,MAAzB,EAAiCU,OAAjC,EAA0C;EACtC,IAAI2xE,aAAa,GAAG,EAApB;;EACA,IAAI3xE,OAAJ,EAAa;IACT,IAAIivB,6DAAO,CAACjvB,OAAD,EAAU,MAAMqkE,IAAN,GAAa,GAAb,GAAmBC,OAAnB,GAA6B,IAA7B,GAAoCkD,YAA9C,CAAX,EAAwE;MACpEmK,aAAa,GAAG,aAAhB;IACH,CAFD,MAGK,IAAI1iD,6DAAO,CAACjvB,OAAD,EAAU,MAAMglE,WAAhB,CAAX,EAAyC;MAC1C2M,aAAa,GAAG,gBAAhB;IACH,CAFI,MAGA,IAAI3xE,OAAO,CAACqsB,SAAR,CAAkBM,QAAlB,CAA2B,WAA3B,KACL3sB,OAAO,CAACqsB,SAAR,CAAkBM,QAAlB,CAA2B,mBAA3B,CADC,EACgD;MACjDglD,aAAa,GAAG,gBAAhB;IACH,CAHI,MAIA,IAAI1iD,6DAAO,CAACjvB,OAAD,EAAU,sBAAV,CAAX,EAA8C;MAC/C2xE,aAAa,GAAG,eAAhB;IACH,CAFI,MAGA;MACDA,aAAa,GAAG,EAAhB;IACH;EACJ;;EACDryE,MAAM,CAACsyE,YAAP,GAAsBD,aAAtB;AACH;AACD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASltC,OAAT,CAAiBnlC,MAAjB,EAAyB;EACrBA,MAAM,CAACmxE,QAAP,GAAkB,CAACC,aAAa,CAACpxE,MAAD,CAAd,CAAlB;;EACA,IAAI,CAACuyE,aAAa,CAACvyE,MAAM,CAACmxE,QAAP,CAAgB,CAAhB,CAAD,CAAlB,EAAwC;IACpCqB,kBAAkB,CAACxyE,MAAD,EAASA,MAAM,CAACmxE,QAAP,CAAgB,CAAhB,CAAT,EAA6BpD,cAA7B,CAAlB;EACH,CAFD,MAGK;IACDiE,IAAI,CAAChyE,MAAD,EAASirE,UAAT,EAAqBjrE,MAAM,CAACuuE,IAA5B,CAAJ;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASkE,UAAT,CAAoBzyE,MAApB,EAA4B;EACxBgyE,IAAI,CAAChyE,MAAD,EAAS4rE,OAAT,EAAkB5rE,MAAM,CAACuuE,IAAzB,CAAJ;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS6C,aAAT,CAAuBpxE,MAAvB,EAA+B;EAC3B,OAAO7E,8DAAQ,CAAC6E,MAAM,CAAC0uE,MAAP,CAAc1uE,MAAM,CAAC0uE,MAAP,CAAc3zE,MAAd,GAAuB,CAArC,CAAD,EAA0CiF,MAAM,CAACuvE,QAAjD,CAAf;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASmD,SAAT,CAAmB1yE,MAAnB,EAA2B;EACvB,IAAI,CAAC8vE,aAAa,CAAC,MAAD,EAAS9vE,MAAT,CAAlB,EAAoC;IAChC;EACH,CAFD,MAGK;IACDA,MAAM,CAAC2yE,UAAP,GAAoB,MAApB;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,QAAT,CAAkB5yE,MAAlB,EAA0B;EACtB,IAAI,CAAC8vE,aAAa,CAAC,KAAD,EAAQ9vE,MAAR,CAAlB,EAAmC;IAC/B;EACH,CAFD,MAGK;IACDA,MAAM,CAACyvE,KAAP,GAAe,IAAf;IACAzvE,MAAM,CAAC2yE,UAAP,GAAoB,MAApB;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,QAAT,CAAkBC,IAAlB,EAAwB;EACpB,IAAIC,SAAS,GAAG53E,8DAAQ,CAAC,QAAD,EAAW23E,IAAX,CAAxB;;EACA,IAAI,CAACC,SAAL,EAAgB;IACZ,OAAO9L,MAAP;EACH;;EACD,IAAI+L,WAAW,GAAG,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,MAAtB,EAA8B,KAA9B,EAAqC,MAArC,EAA6C,KAA7C,EAAoD,KAApD,EAA2D,MAA3D,EAAmE,KAAnE,EAA0E,KAA1E,CAAlB;EACA,IAAIC,WAAW,GAAG,CAAC,KAAD,EAAQ,KAAR,EAAe,KAAf,EAAsB,KAAtB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,KAA3C,EAAkD,KAAlD,CAAlB;EACA,IAAIC,WAAW,GAAG,CAAC,MAAD,EAAS,KAAT,EAAgB,KAAhB,EAAuB,KAAvB,EAA8B,KAA9B,EAAqC,KAArC,EAA4C,KAA5C,EAAmD,KAAnD,EAA0D,KAA1D,EAAiE,KAAjE,CAAlB;EACA,IAAIC,WAAW,GAAG,CAAC,KAAD,EAAQ,KAAR,EAAe,MAAf,EAAuB,IAAvB,EAA6B,KAA7B,EAAoC,KAApC,EAA2C,MAA3C,EAAmD,KAAnD,EAA0D,KAA1D,EAAiE,KAAjE,EAAwE,KAAxE,EAA+E,MAA/E,EAAuF,KAAvF,EACd,MADc,EACN,KADM,EACC,KADD,EACQ,KADR,EACe,KADf,CAAlB;EAEA,IAAIC,QAAQ,GAAGj4E,8DAAQ,CAAC,MAAD,EAAS23E,IAAT,CAAvB;EACAM,QAAQ,GAAGA,QAAQ,CAACx6D,WAAT,EAAX;;EACA,IAAIw6D,QAAQ,CAACh2E,OAAT,CAAiB,GAAjB,MAA0B,CAAC,CAA/B,EAAkC;IAC9Bg2E,QAAQ,GAAGA,QAAQ,CAAC33E,KAAT,CAAe,GAAf,EAAoBiE,IAApB,CAAyB,EAAzB,CAAX;EACH;;EACD,IAAI2zE,QAAJ;;EACA,IAAIL,WAAW,CAAC51E,OAAZ,CAAoBg2E,QAApB,MAAkC,CAAC,CAAvC,EAA0C;IACtCC,QAAQ,GAAGnM,UAAX;EACH,CAFD,MAGK,IAAI+L,WAAW,CAAC71E,OAAZ,CAAoBg2E,QAApB,MAAkC,CAAC,CAAvC,EAA0C;IAC3CC,QAAQ,GAAGlM,UAAX;EACH,CAFI,MAGA,IAAI+L,WAAW,CAAC91E,OAAZ,CAAoBg2E,QAApB,MAAkC,CAAC,CAAvC,EAA0C;IAC3CC,QAAQ,GAAGjM,UAAX;EACH,CAFI,MAGA,IAAI+L,WAAW,CAAC/1E,OAAZ,CAAoBg2E,QAApB,MAAkC,CAAC,CAAvC,EAA0C;IAC3CC,QAAQ,GAAG,UAAUD,QAArB;EACH,CAFI,MAGA;IACDC,QAAQ,GAAG,uBAAuBD,QAAlC;EACH;;EACD,OAAOC,QAAP;AACH;AACD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,WAAT,CAAqBtzE,MAArB,EAA6B0hD,IAA7B,EAAmC;EAC/B,IAAI6xB,OAAO,GAAGvzE,MAAM,CAACwzE,YAAP,CAAoBF,WAApB,GAAkCtzE,MAAM,CAACwzE,YAAP,CAAoBF,WAAtD,GAAoEtzE,MAAM,CAACwzE,YAAP,CAAoBxvD,GAAtG;EACA,IAAIyvD,OAAO,GAAIF,OAAO,CAACn2E,OAAR,CAAgB,GAAhB,MAAyB,CAAC,CAA3B,GAAgC,QAAhC,GAA2C,QAAzD;EACA,IAAIs2E,MAAJ;EACA,IAAIC,QAAQ,GAAGl0E,kBAAkB,CAACtE,8DAAQ,CAAC,MAAD,EAASumD,IAAT,CAAT,CAAjC;EACA,IAAIkyB,KAAK,GAAGz4E,8DAAQ,CAAC,YAAD,EAAeumD,IAAf,CAApB;;EACA,IAAI1hD,MAAM,CAACyuE,KAAX,EAAkB;IACd,IAAIoF,KAAK,GAAG14E,8DAAQ,CAAC,IAAD,EAAOumD,IAAP,CAApB;IACAgyB,MAAM,GAAGH,OAAO,GAAGE,OAAV,GAAoBzzE,MAAM,CAACuuE,IAA3B,GAAkC,MAAlC,GAA2CsF,KAApD;EACH,CAHD,MAIK,IAAI,CAAC13E,uEAAiB,CAACy3E,KAAD,CAAtB,EAA+B;IAChCF,MAAM,GAAGH,OAAO,GAAGE,OAAV,GAAoBh0E,kBAAkB,CAACm0E,KAAK,CAACp4E,OAAN,CAAc,KAAd,EAAqB,GAArB,CAAD,CAAtC,GAAoEm4E,QAA7E;EACH,CAFI,MAGA;IACDD,MAAM,GAAGH,OAAO,GAAGE,OAAV,GAAoBzzE,MAAM,CAACuuE,IAA3B,GAAkCoF,QAA3C;EACH;;EACDD,MAAM,GAAGA,MAAM,GAAG,QAAT,GAAqB,IAAIrqE,IAAJ,GAAWka,OAAX,EAAD,CAAuB1nB,QAAvB,EAA7B;EACA,IAAIqoB,SAAS,GAAG;IACZ4vD,WAAW,EAAE,CAACpyB,IAAD,CADD;IAEZqyB,QAAQ,EAAEL;EAFE,CAAhB;EAIA1zE,MAAM,CAAC+rB,OAAP,CAAe,iBAAf,EAAkC7H,SAAlC;EACA,OAAOA,SAAS,CAAC6vD,QAAjB;AACH;AACD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,WAAT,CAAqBh0E,MAArB,EAA6BlF,IAA7B,EAAmCyzE,IAAnC,EAAyC;EACrC,IAAI0F,QAAQ,GAAG94E,8DAAQ,CAAC6E,MAAM,CAACyuE,KAAP,GAAe,IAAf,GAAsB,MAAvB,EAA+B3zE,IAA/B,CAAR,GAA+C,GAA9D;EACA,IAAI84E,KAAK,GAAGz4E,8DAAQ,CAAC6E,MAAM,CAACyuE,KAAP,GAAe,UAAf,GAA4B,YAA7B,EAA2C3zE,IAA3C,CAApB;;EACA,IAAI,CAACqB,uEAAiB,CAACy3E,KAAD,CAAtB,EAA+B;IAC3B,OAAOA,KAAK,CAACp4E,OAAN,CAAc,KAAd,EAAqB,GAArB,IAA4By4E,QAAnC;EACH,CAFD,MAGK;IACD,OAAO1F,IAAI,GAAG0F,QAAd;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,OAAT,CAAiBl0E,MAAjB,EAAyBlF,IAAzB,EAA+B;EAC3B,IAAIsgB,IAAI,GAAGjgB,8DAAQ,CAAC,MAAD,EAASL,IAAT,CAAnB;EACA,IAAI84E,KAAK,GAAGz4E,8DAAQ,CAAC,YAAD,EAAeL,IAAf,CAApB;;EACA,IAAI,CAACkF,MAAM,CAACwwE,mBAAP,CAA2BC,SAA3B,CAAqC/vE,OAArC,CAA6CpF,KAA7C,KAAuD,EAAvD,IAA6D0E,MAAM,CAAC0wE,UAArE,KAAoF,CAACv0E,uEAAiB,CAACy3E,KAAD,CAA1G,EAAmH;IAC/GA,KAAK,GAAGA,KAAK,CAACp4E,OAAN,CAAc,KAAd,EAAqB,GAArB,CAAR;IACA4f,IAAI,GAAGw4D,KAAK,CAACp4E,OAAN,CAAcwE,MAAM,CAACuuE,IAArB,EAA2B,EAA3B,IAAiCnzD,IAAxC;EACH;;EACD,OAAOA,IAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS+4D,aAAT,CAAuBn0E,MAAvB,EAA+BypD,KAA/B,EAAsC;EAClC,IAAIA,KAAK,CAAC1uD,MAAN,KAAiB,CAArB,EAAwB;IACpB,OAAO0uD,KAAP;EACH;;EACD,IAAIpD,KAAJ;;EACA,IAAIrmD,MAAM,CAACo0E,SAAP,KAAqB,MAAzB,EAAiC;IAC7B/tB,KAAK,GAAG,IAAI7D,uDAAJ,GAAY2C,MAAZ,CAAmBnlD,MAAM,CAACmlD,MAA1B,EAAkCnlD,MAAM,CAACo0E,SAAP,CAAiBx7D,WAAjB,EAAlC,EAAkE,IAAlE,EAAwEitC,KAAxE,CAA8E,QAA9E,CAAR;EACH,CAFD,MAGK;IACDQ,KAAK,GAAG,IAAI7D,uDAAJ,GAAYqD,KAAZ,CAAkB,QAAlB,CAAR;EACH,CAViC,CAWlC;;;EACA,IAAIwuB,KAAK,GAAG,IAAItnB,6DAAJ,CAAgBtD,KAAhB,EAAuB7F,YAAvB,CAAoCyC,KAApC,CAAZ;EACA,OAAOlrD,8DAAQ,CAAC,SAAD,EAAYk5E,KAAZ,CAAf;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS5gD,SAAT,CAAmBzzB,MAAnB,EAA2B9D,GAA3B,EAAgCZ,KAAhC,EAAuC;EACnC;EACA,IAAIg5E,SAAS,GAAGn5E,8DAAQ,CAAC6E,MAAM,CAAC0uE,MAAP,CAAc1uE,MAAM,CAAC0uE,MAAP,CAAc3zE,MAAd,GAAuB,CAArC,CAAD,EAA0CiF,MAAM,CAACu0E,OAAjD,CAAxB;EACA,IAAIluB,KAAK,GAAG,IAAI7D,uDAAJ,GAAY8B,KAAZ,CAAkBpoD,GAAlB,EAAuB,OAAvB,EAAgCZ,KAAhC,CAAZ,CAHmC,CAInC;;EACA,IAAI+4E,KAAK,GAAG,IAAItnB,6DAAJ,CAAgBunB,SAAhB,EAA2B1wB,YAA3B,CAAwCyC,KAAxC,CAAZ;EACA,OAAOguB,KAAK,CAAC,CAAD,CAAZ;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASG,kBAAT,CAA4Bx0E,MAA5B,EAAoCU,OAApC,EAA6CzB,IAA7C,EAAmD;EAC/C,IAAI09B,GAAJ;EACA,IAAI83C,aAAa,GAAGzlD,4DAAM,CAAC,MAAMhvB,MAAM,CAACU,OAAP,CAAeoI,EAArB,GAA0B66D,SAA3B,EAAsC3jE,MAAM,CAACU,OAA7C,CAA1B;EACA,IAAIg0E,gBAAgB,GAAG1lD,4DAAM,CAAC,MAAMhvB,MAAM,CAACU,OAAP,CAAeoI,EAArB,GAA0B67D,gBAA3B,EAA6C8P,aAA7C,CAAN,CAAkE9lC,YAAzF;EACAhS,GAAG,GAAG83C,aAAa,CAAC9lC,YAAd,GAA6B+lC,gBAAnC;;EACA,IAAI10E,MAAM,CAACkyE,IAAP,KAAgB,SAApB,EAA+B;IAC3Bv1C,GAAG,GAAGA,GAAG,GAAG3N,4DAAM,CAAC,MAAM24C,WAAP,EAAoB8M,aAApB,CAAN,CAAyC9lC,YAArD;EACH;;EACD,IAAIxyC,uEAAiB,CAACuE,OAAO,CAACqC,aAAR,CAAsB,MAAM4jE,KAA5B,CAAD,CAArB,EAA2D;IACvD,IAAIgO,QAAQ,GAAG9zE,mEAAa,CAAC,KAAD,EAAQ;MAAE0rB,SAAS,EAAEo6C;IAAb,CAAR,CAA5B;IACA,IAAIiO,WAAW,GAAG/zE,mEAAa,CAAC,KAAD,EAAQ;MAAE0rB,SAAS,EAAE+6C;IAAb,CAAR,CAA/B;IACA,IAAIuN,QAAQ,GAAGh0E,mEAAa,CAAC,KAAD,EAAQ;MAAE0rB,SAAS,EAAEq6C;IAAb,CAAR,CAA5B;IACA,IAAIkO,QAAQ,GAAGj0E,mEAAa,CAAC,KAAD,EAAQ;MAAE0rB,SAAS,EAAEs6C;IAAb,CAAR,CAA5B;;IACA,IAAI7mE,MAAM,CAACkyE,IAAP,KAAgB,SAApB,EAA+B;MAC3BxxE,OAAO,CAACqC,aAAR,CAAsB,MAAMklE,SAA5B,EAAuC1mE,WAAvC,CAAmDozE,QAAnD;IACH,CAFD,MAGK;MACDj0E,OAAO,CAACa,WAAR,CAAoBozE,QAApB;IACH;;IACDA,QAAQ,CAACpzE,WAAT,CAAqBqzE,WAArB;IACAD,QAAQ,CAACpzE,WAAT,CAAqBszE,QAArB;IACAF,QAAQ,CAACpzE,WAAT,CAAqBuzE,QAArB;EACH;;EACD,IAAIp0E,OAAO,CAACqC,aAAR,CAAsB,MAAM4jE,KAA5B,CAAJ,EAAwC;IACpC,IAAI,CAACxqE,uEAAiB,CAAC8C,IAAI,CAAC4mB,KAAN,CAAtB,EAAoC;MAChCnlB,OAAO,CAACqC,aAAR,CAAsB,MAAM6jE,aAA5B,EAA2CjlE,SAA3C,GAAuDozE,aAAa,CAAC/0E,MAAD,EAAS,eAAT,CAApE;MACAU,OAAO,CAACqC,aAAR,CAAsB,MAAM8jE,mBAA5B,EAAiDllE,SAAjD,GAA6DozE,aAAa,CAAC/0E,MAAD,EAAS,gBAAT,CAA1E;IACH,CAHD,MAIK,IAAIA,MAAM,CAAC0wE,UAAX,EAAuB;MACxBhwE,OAAO,CAACqC,aAAR,CAAsB,MAAM6jE,aAA5B,EAA2CjlE,SAA3C,GAAuDozE,aAAa,CAAC/0E,MAAD,EAAS,cAAT,CAApE;MACAU,OAAO,CAACqC,aAAR,CAAsB,MAAM8jE,mBAA5B,EAAiDllE,SAAjD,GAA6DozE,aAAa,CAAC/0E,MAAD,EAAS,YAAT,CAA1E;IACH,CAHI,MAIA,IAAIA,MAAM,CAACwwE,mBAAP,CAA2BC,SAA3B,CAAqC/vE,OAArC,CAA6CpF,KAA7C,KAAuD,EAA3D,EAA+D;MAChEoF,OAAO,CAACqC,aAAR,CAAsB,MAAM6jE,aAA5B,EAA2CjlE,SAA3C,GAAuDozE,aAAa,CAAC/0E,MAAD,EAAS,cAAT,CAApE;MACAU,OAAO,CAACqC,aAAR,CAAsB,MAAM8jE,mBAA5B,EAAiDllE,SAAjD,GAA6DozE,aAAa,CAAC/0E,MAAD,EAAS,YAAT,CAA1E;IACH,CAHI,MAIA;MACDU,OAAO,CAACqC,aAAR,CAAsB,MAAM6jE,aAA5B,EAA2CjlE,SAA3C,GAAuDozE,aAAa,CAAC/0E,MAAD,EAAS,cAAT,CAApE;MACAU,OAAO,CAACqC,aAAR,CAAsB,MAAM8jE,mBAA5B,EAAiDllE,SAAjD,GAA6DozE,aAAa,CAAC/0E,MAAD,EAAS,aAAT,CAA1E;IACH;EACJ;;EACD,IAAIg1E,IAAI,GAAGhmD,4DAAM,CAAC,MAAM23C,KAAP,EAAcjmE,OAAd,CAAjB;EACAi8B,GAAG,GAAG,CAACA,GAAG,GAAGq4C,IAAI,CAACrmC,YAAZ,IAA4B,CAAlC;EACAqmC,IAAI,CAACpnD,KAAL,CAAWye,SAAX,GAAuB1P,GAAG,GAAG,IAA7B;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASs4C,cAAT,CAAwBvD,KAAxB,EAA+B;EAC3B,OAAO,IAAI3kB,6DAAJ,CAAgB2kB,KAAhB,EAAuB9tB,YAAvB,CAAoC,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkBimB,MAAlB,EAA0B,OAA1B,EAAmC,KAAnC,EAA0C,KAA1C,CAApC,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS2K,SAAT,CAAmBt3E,MAAnB,EAA2Bu3E,MAA3B,EAAmC;EAC/B;EACA,IAAIC,IAAI,GAAGH,cAAc,CAACr3E,MAAM,CAAC8zE,KAAR,CAAzB;;EACA,KAAK,IAAIh2E,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAGg0E,IAAI,CAACr6E,MAA3B,EAAmCW,CAAC,GAAG0F,GAAvC,EAA4C1F,CAAC,EAA7C,EAAiD;IAC7CI,8DAAQ,CAAC,QAAD,EAAWq5E,MAAM,GAAG,GAAT,GAAez5E,CAA1B,EAA6B05E,IAAI,CAAC15E,CAAD,CAAjC,CAAR;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS25E,aAAT,CAAuBp2E,IAAvB,EAA6Bq2E,YAA7B,EAA2CrrE,UAA3C,EAAuD;EACnD,KAAK,IAAIvO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuD,IAAI,CAAClE,MAAzB,EAAiCW,CAAC,EAAlC,EAAsC;IAClC,IAAI65E,WAAW,GAAG,IAAIlsE,IAAJ,CAASlO,8DAAQ,CAAC,aAAD,EAAgB8D,IAAI,CAACvD,CAAD,CAApB,CAAjB,CAAlB;IACA,IAAI85E,YAAY,GAAG,IAAInsE,IAAJ,CAASlO,8DAAQ,CAAC,cAAD,EAAiB8D,IAAI,CAACvD,CAAD,CAArB,CAAjB,CAAnB;;IACA,IAAIS,uEAAiB,CAAC8N,UAAD,CAArB,EAAmC;MAC/BA,UAAU,GAAG,YAAb;IACH;;IACDnO,8DAAQ,CAAC,aAAD,EAAgBw5E,YAAY,CAACp4D,UAAb,CAAwBq4D,WAAxB,EAAqC;MAAErqE,MAAM,EAAEjB;IAAV,CAArC,CAAhB,EAA8EhL,IAAI,CAACvD,CAAD,CAAlF,CAAR;IACAI,8DAAQ,CAAC,cAAD,EAAiBw5E,YAAY,CAACp4D,UAAb,CAAwBs4D,YAAxB,EAAsC;MAAEtqE,MAAM,EAAEjB;IAAV,CAAtC,CAAjB,EAAgFhL,IAAI,CAACvD,CAAD,CAApF,CAAR;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASq5E,aAAT,CAAuB/0E,MAAvB,EAA+B6S,IAA/B,EAAqC;EACjC,IAAIuL,MAAM,GAAGpe,MAAM,CAACy1E,SAAP,CAAiBr+B,WAAjB,CAA6BvkC,IAA7B,CAAb;EACA,OAAQuL,MAAM,KAAK,EAAZ,GAAkBvL,IAAlB,GAAyBuL,MAAhC;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASs3D,WAAT,CAAqB11E,MAArB,EAA6B21E,GAA7B,EAAkC;EAC9B,IAAIC,QAAQ,GAAG51E,MAAM,CAAC41E,QAAtB;EACAA,QAAQ,GAAIz5E,uEAAiB,CAACy5E,QAAD,CAAjB,IAA+BA,QAAQ,KAAK,EAA7C,GAAmDD,GAAnD,GAA0DC,QAAQ,GAAG,GAAX,GAAiBD,GAAtF;EACA,OAAOC,QAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,kBAAT,CAA4B71E,MAA5B,EAAoCf,IAApC,EAA0C;EACtC,IAAI62E,IAAJ;EACA91E,MAAM,CAACyxE,eAAP,GAAyB,IAAzB;;EACA,IAAIxyE,IAAI,CAACyiD,IAAL,CAAU54C,EAAV,CAAa1L,OAAb,CAAqB,WAArB,MAAsC,CAAC,CAAvC,IAA4C6B,IAAI,CAACyiD,IAAL,CAAU54C,EAAV,CAAa1L,OAAb,CAAqB,YAArB,MAAuC,CAAC,CAApF,IAAyF6B,IAAI,CAACyiD,IAAL,CAAU54C,EAAV,CAAa1L,OAAb,CAAqB,MAArB,MAAiC,CAAC,CAA/H,EAAkI;IAC9H04E,IAAI,GAAG,IAAP;EACH,CAFD,MAGK;IACDA,IAAI,GAAG,KAAP;EACH;;EACD,IAAI,CAACA,IAAL,EAAW;IACP91E,MAAM,CAACmlD,MAAP,GAAgB4wB,YAAY,CAAC92E,IAAI,CAACyiD,IAAL,CAAU54C,EAAX,EAAe9I,MAAf,CAA5B;EACH,CAFD,MAGK;IACDA,MAAM,CAACo0E,SAAP,GAAmB2B,YAAY,CAAC92E,IAAI,CAACyiD,IAAL,CAAU54C,EAAX,CAA/B;EACH;;EACD9I,MAAM,CAACmxE,QAAP,GAAkB,CAACC,aAAa,CAACpxE,MAAD,CAAd,CAAlB;;EACA,IAAIA,MAAM,CAACkyE,IAAP,KAAgB,SAApB,EAA+B;IAC3B,IAAIlyE,MAAM,CAACg2E,QAAX,EAAqB;MACjB/D,YAAY,CAACjyE,MAAD,EAAS,SAAT,CAAZ;IACH,CAFD,MAGK;MACDA,MAAM,CAACgb,MAAP,CAAcmyD,UAAd,EAA0B;QAAE9uC,MAAM,EAAE;MAAV,CAA1B;MACAr+B,MAAM,CAACyxE,eAAP,GAAyB,KAAzB;IACH;EACJ;;EACD,IAAIzxE,MAAM,CAACkyE,IAAP,KAAgB,YAApB,EAAkC;IAC9BD,YAAY,CAACjyE,MAAD,EAAS,YAAT,CAAZ;EACH;;EACDA,MAAM,CAACgb,MAAP,CAAckxD,YAAd,EAA4B,EAA5B;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS6J,YAAT,CAAsBjtE,EAAtB,EAA0B9I,MAA1B,EAAkC;EAC9B,IAAI6S,IAAI,GAAG/J,EAAE,CAACsE,SAAH,CAAatE,EAAE,CAACkJ,WAAH,CAAe,GAAf,IAAsB,CAAnC,CAAX;EACA,IAAIqxC,KAAK,GAAGxwC,IAAZ;EACA,IAAIojE,MAAJ;;EACA,IAAIj2E,MAAJ,EAAY;IACRi2E,MAAM,GAAGj2E,MAAM,CAACk2E,mBAAP,CAA2BC,OAApC;EACH;;EACD,QAAQtjE,IAAR;IACI,KAAK,MAAL;MACI,KAAK,IAAInX,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAG60E,MAAM,CAACl7E,MAA7B,EAAqCW,CAAC,GAAG0F,GAAzC,EAA8C1F,CAAC,EAA/C,EAAmD;QAC/C,IAAIu6E,MAAM,CAACv6E,CAAD,CAAN,CAAU2nD,KAAV,KAAoB,cAApB,IAAsC4yB,MAAM,CAACv6E,CAAD,CAAN,CAAU2nD,KAAV,KAAoB,aAA9D,EAA6E;UACzEA,KAAK,GAAG4yB,MAAM,CAACv6E,CAAD,CAAN,CAAU2nD,KAAlB;UACA;QACH,CAHD,MAIK;UACDA,KAAK,GAAG,cAAR;QACH;MACJ;;MACD;;IACJ,KAAK,WAAL;MACIA,KAAK,GAAG,WAAR;MACA;;IACJ,KAAK,YAAL;MACIA,KAAK,GAAG,YAAR;MACA;;IACJ,KAAK,MAAL;MACIA,KAAK,GAAG,MAAR;MACA;EApBR;;EAsBA,OAAOA,KAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS+yB,WAAT,CAAqBp2E,MAArB,EAA6BuuE,IAA7B,EAAmC;EAC/B,IAAI8H,WAAW,GAAG9H,IAAI,CAAC9yE,KAAL,CAAW,GAAX,CAAlB;EACA,IAAI66E,OAAO,GAAGt2E,MAAM,CAACu2E,YAAP,CAAoB96E,KAApB,CAA0B,GAA1B,CAAd,CAF+B,CAG/B;;EACA,IAAIokD,IAAI,GAAG1kD,8DAAQ,CAAC6E,MAAM,CAAC0uE,MAAP,CAAc,CAAd,CAAD,EAAmB1uE,MAAM,CAACuvE,QAA1B,CAAnB;EACA,IAAIrzE,GAAG,GAAGC,uEAAiB,CAAChB,8DAAQ,CAAC,IAAD,EAAO0kD,IAAP,CAAT,CAAjB,GAA0C,MAA1C,GAAmD,IAA7D;;EACA,KAAK,IAAInkD,CAAC,GAAG26E,WAAW,CAACt7E,MAAZ,GAAqB,CAA7B,EAAgCqG,GAAG,GAAGk1E,OAAO,CAACv7E,MAAR,GAAiB,CAA5D,EAA+DW,CAAC,GAAG0F,GAAnE,EAAwE1F,CAAC,EAAzE,EAA6E;IACzE,IAAIwvB,SAAS,GAAIorD,OAAO,CAAC56E,CAAC,GAAG,CAAL,CAAP,KAAmB,EAApB,GAA0BgvE,WAA1B,GAAwCD,UAAxD;IACA,IAAI6E,OAAO,GAAIgH,OAAO,CAAC56E,CAAD,CAAP,KAAe,EAAhB,GAAsB,GAAtB,GAA6BsE,MAAM,CAACuuE,IAAP,GAAc+H,OAAO,CAAC56E,CAAD,CAArB,GAA2B,GAAtE,CAFyE,CAGzE;;IACA,IAAIZ,IAAI,GAAG24B,SAAS,CAACzzB,MAAD,EAAS9D,GAAT,EAAco6E,OAAO,CAAC56E,CAAD,CAArB,CAApB;IACA,IAAIoN,EAAE,GAAG3N,8DAAQ,CAAC,QAAD,EAAWL,IAAX,CAAjB;IACAkF,MAAM,CAAC4xB,aAAP,CAAqB;MAAE28C,IAAI,EAAEe;IAAR,CAArB,EAAwC,IAAxC;IACAtvE,MAAM,CAAC0uE,MAAP,CAAclvE,IAAd,CAAmBsJ,EAAnB;IACA9I,MAAM,CAACmxE,QAAP,GAAkB,CAACr2E,IAAD,CAAlB;IACAkF,MAAM,CAAC4uE,SAAP,CAAiBpvE,IAAjB,CAAsBrE,8DAAQ,CAAC,MAAD,EAASL,IAAT,CAA9B;IACAk3E,IAAI,CAAChyE,MAAD,EAASkrB,SAAT,EAAoBlrB,MAAM,CAACuuE,IAA3B,CAAJ;IACA;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASiI,gBAAT,CAA0Bx2E,MAA1B,EAAkClF,IAAlC,EAAwC;EACpCkF,MAAM,CAACgb,MAAP,CAAcgxD,aAAd,EAA6B;IAAEyK,YAAY,EAAEz2E,MAAM,CAAC0uE,MAAP,CAAc1uE,MAAM,CAAC0uE,MAAP,CAAc3zE,MAAd,GAAuB,CAArC;EAAhB,CAA7B;EACAiF,MAAM,CAACu2E,YAAP,GAAsBvC,WAAW,CAACh0E,MAAD,EAASlF,IAAT,EAAekF,MAAM,CAACuuE,IAAtB,CAAjC;EACAyD,IAAI,CAAChyE,MAAD,EAAUA,MAAM,CAACuuE,IAAP,KAAgBvuE,MAAM,CAACu2E,YAAxB,GAAwC9L,UAAxC,GAAqDC,WAA9D,EAA2E1qE,MAAM,CAACuuE,IAAlF,CAAJ;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASmI,YAAT,CAAsB12E,MAAtB,EAA8B;EAC1BA,MAAM,CAAC22E,UAAP,GAAoB,KAApB;;EACA,IAAI32E,MAAM,CAAC2vE,aAAP,CAAqB50E,MAArB,KAAgC,CAAhC,IAAqCiF,MAAM,CAAC6vE,WAAhD,EAA6D;IACzD,IAAItB,IAAI,GAAIvuE,MAAM,CAAC42E,UAAP,KAAsB,EAAvB,GAA6B52E,MAAM,CAACuuE,IAApC,GAA2CvuE,MAAM,CAAC42E,UAA7D,CADyD,CAEzD;;IACA,IAAIC,SAAS,GAAGC,iBAAiB,CAAC92E,MAAD,EAASA,MAAM,CAAC4vE,aAAhB,EAA+BrB,IAA/B,EAAqCvuE,MAAM,CAACuuE,IAA5C,CAAjC;;IACA,IAAI,CAACsI,SAAL,EAAgB;MACZ,IAAK72E,MAAM,CAAC2yE,UAAP,KAAsB,MAAtB,IAAgC3yE,MAAM,CAACmwE,UAAP,KAAsB5B,IAAvD,IAAgEvuE,MAAM,CAAC2yE,UAAP,KAAsB,MAA1F,EAAkG;QAC9F3yE,MAAM,CAACgb,MAAP,CAAc6xD,SAAd,EAAyB,EAAzB;QACAkK,KAAK,CAAC/2E,MAAD,EAASA,MAAM,CAACmwE,UAAhB,EAA4BnwE,MAAM,CAAC2vE,aAAnC,EAAkDpB,IAAlD,EAAwDvuE,MAAM,CAAC2yE,UAA/D,EAA2E,EAA3E,EAA+E3yE,MAAM,CAAC4vE,aAAtF,CAAL;MACH,CAHD,MAIK;QACD5vE,MAAM,CAAC6vE,WAAP,GAAqB,KAArB;QACA7vE,MAAM,CAACgb,MAAP,CAAc0xD,SAAd,EAAyB,EAAzB;QACAgD,UAAU,CAAC1vE,MAAD,CAAV;QACA,IAAIpC,MAAM,GAAG;UACT8zE,KAAK,EAAE,IADE;UAET7rD,KAAK,EAAE;YACHmxD,IAAI,EAAE,KADH;YAEH32E,OAAO,EAAE00E,aAAa,CAAC/0E,MAAD,EAAS,mBAAT,CAFnB;YAGHi3E,UAAU,EAAE;UAHT;QAFE,CAAb;QAQAC,YAAY,CAACl3E,MAAD,EAAS,OAAT,EAAkBpC,MAAlB,CAAZ;MACH;IACJ;EACJ;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASk5E,iBAAT,CAA2B92E,MAA3B,EAAmClF,IAAnC,EAAyCq8E,WAAzC,EAAsDC,QAAtD,EAAgE;EAC5D,IAAIP,SAAS,GAAG,KAAhB;;EACA,KAAK,IAAIn7E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,IAAI,CAACC,MAAzB,EAAiCW,CAAC,EAAlC,EAAsC;IAClC,IAAI,CAACP,8DAAQ,CAAC,QAAD,EAAWL,IAAI,CAACY,CAAD,CAAf,CAAb,EAAkC;MAC9B,IAAI27E,UAAU,GAAGrD,WAAW,CAACh0E,MAAD,EAASlF,IAAI,CAACY,CAAD,CAAb,EAAkB07E,QAAlB,CAA5B;;MACA,IAAID,WAAW,CAAC/5E,OAAZ,CAAoBi6E,UAApB,MAAoC,CAAxC,EAA2C;QACvC,IAAIz5E,MAAM,GAAG;UACT8zE,KAAK,EAAE,IADE;UAET7rD,KAAK,EAAE;YACHmxD,IAAI,EAAE,KADH;YAEH32E,OAAO,EAAE00E,aAAa,CAAC/0E,MAAD,EAAS,kBAAT,CAFnB;YAGHi3E,UAAU,EAAE;UAHT;QAFE,CAAb;QAQAC,YAAY,CAACl3E,MAAD,EAAS,OAAT,EAAkBpC,MAAlB,CAAZ;QACAi5E,SAAS,GAAG,IAAZ;QACA;MACH;IACJ,CAfD,MAgBK;MACD,IAAIS,OAAO,GAAGt3E,MAAM,CAACu3E,SAAP,CAAiB77E,CAAjB,CAAd;MACA,IAAI0F,GAAG,GAAG,CAAV;;MACA,IAAIk2E,OAAJ,EAAa;QACTl2E,GAAG,GAAGk2E,OAAO,CAACtlE,WAAR,CAAoB,GAApB,CAAN;MACH;;MACD,IAAIu8D,IAAI,GAAG,EAAX;;MACA,IAAIntE,GAAG,GAAG,CAAV,EAAa;QACTmtE,IAAI,GAAG6I,QAAQ,GAAGE,OAAO,CAAClqE,SAAR,CAAkB,CAAlB,EAAqBhM,GAAG,GAAG,CAA3B,CAAlB;MACH;;MACD,IAAImtE,IAAI,KAAK4I,WAAb,EAA0B;QACtB,IAAIv5E,MAAM,GAAG;UACT8zE,KAAK,EAAE,IADE;UAET7rD,KAAK,EAAE;YACHmxD,IAAI,EAAE,KADH;YAEH32E,OAAO,EAAE00E,aAAa,CAAC/0E,MAAD,EAAS,mBAAT,CAFnB;YAGHi3E,UAAU,EAAE;UAHT;QAFE,CAAb;QAQAC,YAAY,CAACl3E,MAAD,EAAS,OAAT,EAAkBpC,MAAlB,CAAZ;QACAi5E,SAAS,GAAG,IAAZ;QACA;MACH;IACJ;EACJ;;EACD,OAAOA,SAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASW,WAAT,CAAqBx3E,MAArB,EAA6B;EACzBA,MAAM,CAAC22E,UAAP,GAAoB,IAApB;;EACA,IAAI32E,MAAM,CAAC0vC,QAAP,CAAgB30C,MAAhB,KAA2B,CAA/B,EAAkC;IAC9BiF,MAAM,CAACo3E,QAAP,GAAkBp3E,MAAM,CAACo3E,QAAP,CAAgB57E,OAAhB,CAAwB,KAAxB,EAA+B,GAA/B,CAAlB;IACAwE,MAAM,CAAC0tE,QAAP,GAAkB1tE,MAAM,CAAC0tE,QAAP,CAAgBlyE,OAAhB,CAAwB,KAAxB,EAA+B,GAA/B,CAAlB;IACA,IAAIq7E,SAAS,GAAGC,iBAAiB,CAAC92E,MAAD,EAASA,MAAM,CAAC0vC,QAAhB,EAA0B1vC,MAAM,CAAC0tE,QAAjC,EAA2C1tE,MAAM,CAACo3E,QAAlD,CAAjC;;IACA,IAAI,CAACP,SAAD,IAAe72E,MAAM,CAACo3E,QAAP,KAAoBp3E,MAAM,CAAC0tE,QAA9C,EAAyD;MACrD1tE,MAAM,CAACmxE,QAAP,GAAkB,CAACnxE,MAAM,CAACy3E,QAAR,CAAlB;MACAV,KAAK,CAAC/2E,MAAD,EAASA,MAAM,CAACo3E,QAAhB,EAA0Bp3E,MAAM,CAACu3E,SAAjC,EAA4Cv3E,MAAM,CAAC0tE,QAAnD,EAA6D,MAA7D,EAAqE,EAArE,EAAyE1tE,MAAM,CAAC0vC,QAAhF,CAAL;MACA1vC,MAAM,CAACgb,MAAP,CAAc6xD,SAAd,EAAyB,EAAzB;IACH;EACJ;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASuD,aAAT,CAAuBsH,OAAvB,EAAgC;EAC5B,IAAInJ,IAAI,GAAGmJ,OAAO,CAACj8E,KAAR,CAAc,GAAd,CAAX;EACA,IAAI6zE,OAAO,GAAGf,IAAI,CAAC,CAAD,CAAJ,GAAU,GAAxB;;EACA,KAAK,IAAI7yE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6yE,IAAI,CAACxzE,MAAL,GAAc,CAAlC,EAAqCW,CAAC,EAAtC,EAA0C;IACtC4zE,OAAO,IAAIf,IAAI,CAAC7yE,CAAD,CAAJ,GAAU,GAArB;EACH;;EACD,OAAO4zE,OAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASqI,gBAAT,CAA0B33E,MAA1B,EAAkCf,IAAlC,EAAwC;EACpC,IAAIg1E,QAAQ,GAAG94E,8DAAQ,CAAC6E,MAAM,CAACyuE,KAAP,GAAe,IAAf,GAAsB,MAAvB,EAA+BxvE,IAAI,CAAC24E,GAApC,CAAR,GAAmD,GAAlE;EACA,IAAIhE,KAAK,GAAGz4E,8DAAQ,CAAC6E,MAAM,CAACyuE,KAAP,GAAe,UAAf,GAA4B,YAA7B,EAA2CxvE,IAAI,CAAC24E,GAAhD,CAApB;;EACA,IAAI,CAACz7E,uEAAiB,CAACy3E,KAAD,CAAtB,EAA+B;IAC3B,IAAIA,KAAK,KAAK,EAAd,EAAkB;MACd,OAAO5zE,MAAM,CAACyuE,KAAP,GAAewF,QAAf,GAA0B,GAAjC;IACH;;IACD,OAAOL,KAAK,CAACp4E,OAAN,CAAc,KAAd,EAAqB,GAArB,IAA4By4E,QAAnC;EACH,CALD,MAMK;IACD,OAAOj0E,MAAM,CAACuuE,IAAP,GAAc0F,QAArB;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4D,aAAT,CAAuB73E,MAAvB,EAA+B83E,SAA/B,EAA0Cl6E,MAA1C,EAAkD;EAC9C,IAAIk6E,SAAS,KAAK,MAAlB,EAA0B;IACtB,IAAI,CAAC93E,MAAM,CAAC22E,UAAZ,EAAwB;MACpB32E,MAAM,CAAC6vE,WAAP,GAAqB,KAArB;MACA7vE,MAAM,CAACgb,MAAP,CAAc0xD,SAAd,EAAyB,EAAzB;MACA1sE,MAAM,CAACgb,MAAP,CAAc+xD,MAAd,EAAsBnvE,MAAtB;IACH,CAJD,MAKK;MACDoC,MAAM,CAACgb,MAAP,CAAcyyD,OAAd,EAAuB7vE,MAAvB;IACH;EACJ;;EACD,IAAIoC,MAAM,CAAC+3E,cAAP,CAAsBh9E,MAAtB,KAAiC,CAArC,EAAwC;IACpCiF,MAAM,CAACg4E,UAAP,GAAoB,EAApB;EACH;;EACD,IAAI3jE,IAAI,GAAG,KAAX;;EACA,KAAK,IAAIq1C,KAAK,GAAG,CAAjB,EAAqBA,KAAK,GAAG9rD,MAAM,CAAC8zE,KAAP,CAAa32E,MAAtB,IAAiC,CAACsZ,IAAtD,EAA4Dq1C,KAAK,EAAjE,EAAqE;IACjE1pD,MAAM,CAACg4E,UAAP,CAAkBx4E,IAAlB,CAAuB5B,MAAM,CAAC8zE,KAAP,CAAahoB,KAAb,EAAoB1pD,MAAM,CAACyuE,KAAP,GAAe,IAAf,GAAsB,MAA1C,CAAvB;;IACA,IAAIzuE,MAAM,CAAC22E,UAAX,EAAuB;MACnB32E,MAAM,CAACi4E,cAAP,CAAsBz4E,IAAtB,CAA2B5B,MAAM,CAAC8zE,KAAP,CAAahoB,KAAb,CAA3B;IACH;EACJ;;EACD1pD,MAAM,CAAC+3E,cAAP,GAAwB,EAAxB;EACA/3E,MAAM,CAACk4E,gBAAP,GAA0B,EAA1B;;EACA,IAAIl4E,MAAM,CAAC22E,UAAP,IAAqB,CAAC32E,MAAM,CAACm4E,YAAjC,EAA+C;IAC3Cn4E,MAAM,CAACo4E,SAAP,GAAmB,IAAnB;EACH,CAFD,MAGK;IACDp4E,MAAM,CAACo4E,SAAP,GAAmB,KAAnB;EACH;;EACD,IAAI,CAACp4E,MAAM,CAAC22E,UAAR,IAAuB32E,MAAM,CAACuuE,IAAP,KAAgBvuE,MAAM,CAACo3E,QAA9C,IAA4Dp3E,MAAM,CAACuuE,IAAP,KAAgBvuE,MAAM,CAAC0tE,QAAnF,IACG1tE,MAAM,CAACq4E,YADd,EAC4B;IACxBr4E,MAAM,CAACs4E,UAAP,GAAoB,KAApB;IACAtG,IAAI,CAAChyE,MAAD,EAAS8sE,QAAT,EAAmB9sE,MAAM,CAACuuE,IAA1B,CAAJ;EACH,CAJD,MAKK;IACDgK,YAAY,CAACv4E,MAAD,CAAZ;EACH;;EACDA,MAAM,CAAC+rB,OAAP,CAAe,SAAf,EAA0B;IAAE+J,MAAM,EAAEgiD,SAAV;IAAqBl6E,MAAM,EAAEA;EAA7B,CAA1B;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS26E,YAAT,CAAsBv4E,MAAtB,EAA8B;EAC1B,IAAI0uE,MAAM,GAAGvzE,8DAAQ,CAAC,QAAD,EAAW6E,MAAM,CAACy3E,QAAlB,CAArB;EACAz3E,MAAM,CAACw4E,UAAP,GAAoB9J,MAApB;EACA1uE,MAAM,CAACmxE,QAAP,GAAkB,CAACnxE,MAAM,CAACy3E,QAAR,CAAlB;;EACA,IAAIz3E,MAAM,CAACs4E,UAAX,EAAuB;IACnBt4E,MAAM,CAACgb,MAAP,CAAc8vD,QAAd,EAAwB9qE,MAAM,CAACmxE,QAA/B;EACH,CAFD,MAGK;IACD,IAAInxE,MAAM,CAACy4E,oBAAX,EAAiC;MAC7B,IAAIx4E,IAAI,GAAG+uB,4DAAM,CAAC,gBAAgB0/C,MAAhB,GAAyB,IAA1B,EAAgC1uE,MAAM,CAACy4E,oBAAP,CAA4BC,OAA5B,CAAoCh4E,OAApE,CAAjB;;MACA,IAAI,CAACT,IAAL,EAAW;QACP,IAAI04E,SAAS,GAAGz4E,QAAQ,CAAC6C,aAAT,CAAuB,iBAAiB5H,8DAAQ,CAAC,IAAD,EAAO6E,MAAM,CAACy3E,QAAd,CAAzB,GAAmD,IAA1E,CAAhB;QACA/I,MAAM,GAAGiK,SAAS,CAACroD,YAAV,CAAuB,UAAvB,CAAT;QACArwB,IAAI,GAAG+uB,4DAAM,CAAC,gBAAgB0/C,MAAhB,GAAyB,IAA1B,EAAgC1uE,MAAM,CAACy4E,oBAAP,CAA4BC,OAA5B,CAAoCh4E,OAApE,CAAb;MACH;;MACD2tE,UAAU,CAACpuE,IAAD,EAAOD,MAAM,CAACy3E,QAAd,EAAwBz3E,MAAxB,CAAV;IACH;;IACDgyE,IAAI,CAAChyE,MAAD,EAAS0tE,QAAT,EAAmB1tE,MAAM,CAAC0tE,QAA1B,CAAJ;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASkL,gBAAT,CAA0B54E,MAA1B,EAAkCob,IAAlC,EAAwC;EACpC;EACA,IAAItgB,IAAI,GAAG,IAAX,CAFoC,CAGpC;;EACA,IAAIgvD,OAAO,GAAG9pD,MAAM,CAAC22E,UAAP,GAAoB32E,MAAM,CAAC0vC,QAA3B,GAAsC1vC,MAAM,CAAC4vE,aAA3D;;EACA,KAAK,IAAIl0E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGouD,OAAO,CAAC/uD,MAA5B,EAAoCW,CAAC,EAArC,EAAyC;IACrC,IAAIP,8DAAQ,CAAC,MAAD,EAAS2uD,OAAO,CAACpuD,CAAD,CAAhB,CAAR,KAAiC0f,IAArC,EAA2C;MACvCtgB,IAAI,GAAGgvD,OAAO,CAACpuD,CAAD,CAAd;MACA;IACH;EACJ;;EACD,OAAOZ,IAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS+9E,wBAAT,CAAkC74E,MAAlC,EAA0C;EACtCA,MAAM,CAACq4E,YAAP,GAAsB,KAAtB;;EACA,IAAIr4E,MAAM,CAACwwE,mBAAP,CAA2BC,SAA3B,CAAqC/vE,OAArC,CAA6CpF,KAA7C,KAAuD,EAA3D,EAA+D;IAC3D0E,MAAM,CAACq4E,YAAP,GAAsB,IAAtB;EACH;;EACD,IAAIr4E,MAAM,CAACkwE,YAAP,KAAwB,gBAA5B,EAA8C;IAC1ClwE,MAAM,CAACu3E,SAAP,GAAmB,EAAnB;IACA,IAAI77E,CAAC,GAAG,CAAR;;IACA,OAAOA,CAAC,GAAGsE,MAAM,CAAC4wE,aAAP,CAAqB71E,MAAhC,EAAwC;MACpCiF,MAAM,CAACu3E,SAAP,CAAiB/3E,IAAjB,CAAsBQ,MAAM,CAAC4wE,aAAP,CAAqBl1E,CAArB,CAAtB;MACAA,CAAC;IACJ;;IACD,IAAIsE,MAAM,CAAC4wE,aAAP,CAAqB71E,MAArB,KAAgC,CAAhC,IAAqCiF,MAAM,CAAC0vC,QAA5C,IAAwD1vC,MAAM,CAAC0vC,QAAP,CAAgB30C,MAAhB,KAA2B,CAAvF,EAA0F;MACtFiF,MAAM,CAACu3E,SAAP,CAAiB/3E,IAAjB,CAAsBs5E,WAAW,CAAC94E,MAAD,EAASA,MAAM,CAAC0vC,QAAP,CAAgB,CAAhB,CAAT,CAAjC;IACH;EACJ;;EACD,IAAIqpC,SAAS,GAAG/4E,MAAM,CAACa,aAAP,CAAqB,KAArB,EAA4B;IACxC0rB,SAAS,EAAE,eAAesmD,QAAQ,CAAC7yE,MAAM,CAAC0vC,QAAP,CAAgB,CAAhB,CAAD;EADM,CAA5B,CAAhB;EAGA,IAAIspC,SAAS,GAAGh5E,MAAM,CAACa,aAAP,CAAqB,KAArB,EAA4B;IACxC0rB,SAAS,EAAE,WAD6B;IAExC5qB,SAAS,EAAE3B,MAAM,CAAC0vC,QAAP,CAAgB,CAAhB,EAAmBt0B;EAFU,CAA5B,CAAhB;EAIA,IAAI69D,UAAU,GAAGj5E,MAAM,CAACa,aAAP,CAAqB,KAArB,EAA4B;IACzC0rB,SAAS,EAAE;EAD8B,CAA5B,CAAjB;EAGA0sD,UAAU,CAAC13E,WAAX,CAAuBw3E,SAAvB;EACAE,UAAU,CAAC13E,WAAX,CAAuBy3E,SAAvB;EACA,IAAI/rD,GAAG,GAAGjtB,MAAM,CAACa,aAAP,CAAqB,KAArB,EAA4B;IAClC0rB,SAAS,EAAEu6C;EADuB,CAA5B,CAAV;EAGA75C,GAAG,CAAC1rB,WAAJ,CAAgB03E,UAAhB;;EACA,IAAIj5E,MAAM,CAACu3E,SAAP,CAAiBx8E,MAAjB,GAA0B,CAA9B,EAAiC;IAC7B,IAAIm+E,KAAK,GAAGl5E,MAAM,CAACa,aAAP,CAAqB,MAArB,EAA6B;MACrC0rB,SAAS,EAAE,YAD0B;MAErC5qB,SAAS,EAAG3B,MAAM,CAACu3E,SAAP,CAAiBx8E,MAAlB,CAA0Bc,QAA1B,CAAmC,EAAnC;IAF0B,CAA7B,CAAZ;IAIAoxB,GAAG,CAAC1rB,WAAJ,CAAgB23E,KAAhB;EACH;;EACDl5E,MAAM,CAACm5E,kBAAP,GAA4BlsD,GAA5B;EACAjtB,MAAM,CAACU,OAAP,CAAea,WAAf,CAA2BvB,MAAM,CAACm5E,kBAAlC;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,eAAT,CAAyBp5E,MAAzB,EAAiCf,IAAjC,EAAuC;EACnC,IAAIo6E,QAAQ,GAAGp6E,IAAf;EACAo6E,QAAQ,CAACl1D,MAAT,GAAkB,KAAlB;;EACA,IAAInkB,MAAM,CAACs5E,eAAP,IAA0B,IAA9B,EAAoC;IAChCj/E,MAAM,CAAC8E,YAAP,CAAoBa,MAAM,CAACs5E,eAA3B;IACAt5E,MAAM,CAACs5E,eAAP,GAAyB,IAAzB;EACH;;EACDC,gBAAgB,CAACv5E,MAAD,CAAhB;EACAA,MAAM,CAACU,OAAP,CAAeqsB,SAAf,CAAyBrB,MAAzB,CAAgC,WAAhC,EAA6C,WAA7C;EACAgkD,UAAU,CAAC1vE,MAAD,CAAV;EACAA,MAAM,CAACw5E,SAAP,CAAiBC,QAAjB,GAA4BzqD,4DAAM,CAAC,MAAMhvB,MAAM,CAACU,OAAP,CAAeoI,EAArB,GAA0B47D,UAA3B,EAAuC1kE,MAAM,CAACU,OAA9C,CAAlC;EACA,IAAIu4E,UAAU,GAAGjqD,4DAAM,CAAC,MAAM83C,KAAP,EAAc9mE,MAAM,CAACU,OAArB,CAAvB;;EACA,IAAIu4E,UAAJ,EAAgB;IACZpqD,4DAAM,CAACoqD,UAAD,CAAN;EACH;;EACD7G,eAAe,CAACpyE,MAAD,EAASf,IAAI,CAAC+2B,MAAd,CAAf;EACAh2B,MAAM,CAACgb,MAAP,CAAcwyD,QAAd,EAAwBvuE,IAAxB;EACAywE,UAAU,CAAC1vE,MAAD,EAAS,OAAT,CAAV;EACAq5E,QAAQ,CAACvF,WAAT,GAAuB9zE,MAAM,CAAC0vC,QAA9B;EACA1vC,MAAM,CAAC+rB,OAAP,CAAe,cAAf,EAA+BstD,QAA/B,EAAyC,UAAUA,QAAV,EAAoB;IACzD,IAAI,CAACA,QAAQ,CAACl1D,MAAV,IAAoB,CAAChoB,uEAAiB,CAAC6D,MAAM,CAACsyE,YAAR,CAAtC,IAA+DtyE,MAAM,CAACsyE,YAAP,KAAwB,EAAvF,IAA6FtyE,MAAM,CAAC05E,SAAP,GAAmB,CAApH,EAAuH;MACnHlC,WAAW,CAACx3E,MAAD,CAAX;IACH;;IACDA,MAAM,CAAC05E,SAAP,GAAmB,CAAnB;EACH,CALD;AAMH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,gBAAT,CAA0B35E,MAA1B,EAAkCf,IAAlC,EAAwC26E,OAAxC,EAAiD;EAC7C,IAAIP,QAAQ,GAAGp6E,IAAf;EACAo6E,QAAQ,CAACl1D,MAAT,GAAkB,KAAlB;EACAk1D,QAAQ,CAACvF,WAAT,GAAuB9zE,MAAM,CAAC0vC,QAA9B;EACA1vC,MAAM,CAAC05E,SAAP,GAAmB,CAAnB;EACA15E,MAAM,CAACi4E,cAAP,GAAwB,EAAxB;;EACA,IAAI,CAACj4E,MAAM,CAAC65E,gBAAR,IAA8B75E,MAAM,CAACkwE,YAAP,KAAwB,gBAAzB,IAC5BvgD,6DAAO,CAAC1wB,IAAI,CAACyB,OAAN,EAAe,IAAf,CAAP,CAA4B4vB,YAA5B,CAAyC,UAAzC,MAAyDtwB,MAAM,CAAC0uE,MAAP,CAAc,CAAd,CAD9D,EACkF;IAC9E2K,QAAQ,CAACl1D,MAAT,GAAkB,IAAlB;EACH;;EACD,IAAKnkB,MAAM,CAACkwE,YAAP,KAAwB,gBAAzB,IACClwE,MAAM,CAAC0uE,MAAP,CAActxE,OAAd,CAAsBuyB,6DAAO,CAAC1wB,IAAI,CAACyB,OAAN,EAAe,IAAf,CAAP,CAA4B4vB,YAA5B,CAAyC,UAAzC,CAAtB,MAAgF,CAAC,CADtF,EAC0F;IACtFtwB,MAAM,CAACs4E,UAAP,GAAoB,IAApB;EACH,CAHD,MAIK;IACDt4E,MAAM,CAACs4E,UAAP,GAAoB,KAApB;EACH;;EACD5I,UAAU,CAAC1vE,MAAD,CAAV;;EACA,IAAIq5E,QAAQ,CAACl1D,MAAb,EAAqB;IACjBy1D,OAAO,CAAC9tC,UAAR,CAAmB7sC,IAAI,CAACrE,KAAxB;IACAk/E,UAAU,CAAC95E,MAAD,CAAV;EACH,CAHD,MAIK,IAAI,CAACq5E,QAAQ,CAACl1D,MAAd,EAAsB;IACvB,IAAIzoB,CAAC,GAAG,CAAR;;IACA,OAAOA,CAAC,GAAGsE,MAAM,CAACgwE,cAAP,CAAsBj1E,MAAjC,EAAyC;MACrCu1E,OAAO,CAACtwE,MAAM,CAACgwE,cAAP,CAAsBt0E,CAAtB,CAAD,CAAP;MACAA,CAAC;IACJ;;IACDsE,MAAM,CAAC+rB,OAAP,CAAe,eAAf,EAAgCstD,QAAhC,EAA0C,UAAUA,QAAV,EAAoB;MAC1D,IAAIA,QAAQ,CAACl1D,MAAb,EAAqB;QACjBy1D,OAAO,CAAC9tC,UAAR,CAAmB7sC,IAAI,CAACrE,KAAxB;QACAk/E,UAAU,CAAC95E,MAAD,CAAV;MACH,CAHD,MAIK;QACDA,MAAM,CAACw5E,SAAP,CAAiBC,QAAjB,GAA4B,IAA5B;MACH;IACJ,CARD;EASH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASK,UAAT,CAAoB95E,MAApB,EAA4B;EACxB0vE,UAAU,CAAC1vE,MAAD,CAAV;EACA,IAAIi5E,UAAU,GAAGjqD,4DAAM,CAAC,MAAM83C,KAAP,EAAc9mE,MAAM,CAACU,OAArB,CAAvB;;EACA,IAAIu4E,UAAJ,EAAgB;IACZpqD,4DAAM,CAACoqD,UAAD,CAAN;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASM,gBAAT,CAA0Bv5E,MAA1B,EAAkC;EAC9B+5E,eAAe,CAAC/5E,MAAD,EAAS+mE,WAAT,CAAf;EACAgT,eAAe,CAAC/5E,MAAD,EAASgnE,SAAT,CAAf;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS+S,eAAT,CAAyB/5E,MAAzB,EAAiC1E,KAAjC,EAAwC;EACpC,IAAI2xB,GAAG,GAAGjtB,MAAM,CAACU,OAAP,CAAeO,gBAAf,CAAgC,MAAM3F,KAAtC,CAAV;;EACA,KAAK,IAAII,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuxB,GAAG,CAAClyB,MAAxB,EAAgCW,CAAC,EAAjC,EAAqC;IACjCuxB,GAAG,CAACvxB,CAAD,CAAH,CAAOqxB,SAAP,CAAiBrB,MAAjB,CAAwBpwB,KAAxB;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS0+E,eAAT,CAAyBh6E,MAAzB,EAAiCf,IAAjC,EAAuC;EACnC,IAAIo6E,QAAQ,GAAGp6E,IAAf;EACAo6E,QAAQ,CAACvF,WAAT,GAAuB9zE,MAAM,CAAC0vC,QAA9B;EACA,IAAIgF,OAAO,GAAG,KAAd;EACA09B,eAAe,CAACpyE,MAAD,EAASf,IAAI,CAAC+2B,MAAd,CAAf;EACAujD,gBAAgB,CAACv5E,MAAD,CAAhB;;EACA,IAAIA,MAAM,CAACs5E,eAAP,IAA0B,IAA9B,EAAoC;IAChCj/E,MAAM,CAAC8E,YAAP,CAAoBa,MAAM,CAACs5E,eAA3B;IACAt5E,MAAM,CAACs5E,eAAP,GAAyB,IAAzB;EACH;;EACD5J,UAAU,CAAC1vE,MAAD,EAAS,OAAT,CAAV;EACA,IAAIC,IAAI,GAAG,IAAX;;EACA,IAAID,MAAM,CAACsyE,YAAP,KAAwB,gBAA5B,EAA8C;IAC1CryE,IAAI,GAAG0vB,6DAAO,CAAC1wB,IAAI,CAAC+2B,MAAN,EAAc,IAAd,CAAd;IACA/1B,IAAI,CAAC8sB,SAAL,CAAe9B,GAAf,CAAmBk7C,KAAnB,EAA0BY,WAA1B;IACAryB,OAAO,GAAG,IAAV;IACA;;IACA10C,MAAM,CAACs5E,eAAP,GAAyBj/E,MAAM,CAAC+E,UAAP,CAAkB,YAAY;MAAEY,MAAM,CAACgb,MAAP,CAAc4yD,QAAd,EAAwB3uE,IAAxB;IAAgC,CAAhE,EAAkE,GAAlE,CAAzB;EACH,CAND,MAOK,IAAIe,MAAM,CAACsyE,YAAP,KAAwB,aAA5B,EAA2C;IAC5CryE,IAAI,GAAG0vB,6DAAO,CAAC1wB,IAAI,CAAC+2B,MAAN,EAAc,IAAd,CAAd;;IACA,IAAI/1B,IAAI,IAAIA,IAAI,CAAC8C,aAAL,CAAmB,MAAMkkE,MAAzB,CAAR,IAA4C,CAAChnE,IAAI,CAAC8sB,SAAL,CAAeM,QAAf,CAAwB44C,IAAxB,CAAjD,EAAgF;MAC5EhmE,IAAI,CAAC8sB,SAAL,CAAe9B,GAAf,CAAmB87C,WAAnB;IACH,CAFD,MAGK,IAAI9mE,IAAI,IAAI,CAACA,IAAI,CAAC8C,aAAL,CAAmB,MAAMkkE,MAAzB,CAAT,IAA6C,CAAChnE,IAAI,CAAC8sB,SAAL,CAAeM,QAAf,CAAwB44C,IAAxB,CAAlD,EAAiF;MAClFhmE,IAAI,CAAC8sB,SAAL,CAAe9B,GAAf,CAAmB+7C,SAAnB;IACH;;IACDtyB,OAAO,GAAG,IAAV;EACH,CATI,MAUA,IAAI10C,MAAM,CAACsyE,YAAP,KAAwB,gBAA5B,EAA8C;IAC/CryE,IAAI,GAAG0vB,6DAAO,CAAC1wB,IAAI,CAAC+2B,MAAN,EAAc,IAAd,CAAd;;IACA,IAAI/1B,IAAI,IAAIA,IAAI,CAAC8C,aAAL,CAAmB,MAAMkkE,MAAzB,CAAR,IAA4C,CAAChnE,IAAI,CAAC8sB,SAAL,CAAeM,QAAf,CAAwB44C,IAAxB,CAAjD,EAAgF;MAC5EhmE,IAAI,CAAC8sB,SAAL,CAAe9B,GAAf,CAAmBk7C,KAAnB,EAA0BY,WAA1B;IACH;;IACDryB,OAAO,GAAG,IAAV;IACA;EACH,CAPI,MAQA,IAAI10C,MAAM,CAACsyE,YAAP,KAAwB,eAA5B,EAA6C;IAC9C59B,OAAO,GAAG,IAAV;EACH;;EACD10C,MAAM,CAACU,OAAP,CAAeqsB,SAAf,CAAyBrB,MAAzB,CAAgC,WAAhC,EAA6C,WAA7C;EACA1rB,MAAM,CAACU,OAAP,CAAeqsB,SAAf,CAAyB9B,GAAzB,CAA6BypB,OAAO,GAAG,WAAH,GAAiB,WAArD;EACA10C,MAAM,CAAC05E,SAAP,GAAmB15E,MAAM,CAAC05E,SAAP,GAAmB,CAAtC;EACA15E,MAAM,CAAC+rB,OAAP,CAAe,cAAf,EAA+BstD,QAA/B;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASY,cAAT,CAAwBn/E,IAAxB,EAA8B;EAC1B,IAAIyJ,GAAG,GAAG,EAAV;EACA,IAAIxI,IAAI,GAAGiB,MAAM,CAACjB,IAAP,CAAYjB,IAAZ,CAAX;;EACA,KAAK,IAAIY,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGK,IAAI,CAAChB,MAAzB,EAAiCW,CAAC,EAAlC,EAAsC;IAClC,IAAIK,IAAI,CAACL,CAAD,CAAJ,KAAY,SAAhB,EAA2B;MACvB6I,GAAG,IAAI,CAAC7I,CAAC,KAAK,CAAN,GAAU,EAAV,GAAe,IAAhB,IAAwBK,IAAI,CAACL,CAAD,CAA5B,GAAkC,IAAlC,GAAyCP,8DAAQ,CAACY,IAAI,CAACL,CAAD,CAAL,EAAUZ,IAAV,CAAxD;IACH;EACJ;;EACD,OAAOyJ,GAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASu0E,WAAT,CAAqB94E,MAArB,EAA6BlF,IAA7B,EAAmC;EAC/B,IAAIkF,MAAM,CAACyuE,KAAX,EAAkB;IACd,OAAOtzE,8DAAQ,CAAC,IAAD,EAAOL,IAAP,CAAf;EACH;;EACD,OAAOo5E,OAAO,CAACl0E,MAAD,EAASlF,IAAT,CAAd;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASo/E,kBAAT,CAA4Bl6E,MAA5B,EAAoClF,IAApC,EAA0C;EACtCkF,MAAM,CAACmxE,QAAP,GAAkB,CAACr2E,IAAD,CAAlB;EACAkF,MAAM,CAACm6E,eAAP,GAAyBh/E,8DAAQ,CAAC,MAAD,EAASL,IAAT,CAAjC;EACAkF,MAAM,CAACuqE,MAAP,GAAgBpvE,8DAAQ,CAAC,QAAD,EAAWL,IAAX,CAAxB;EACAkF,MAAM,CAACo6E,UAAP,GAAoBj/E,8DAAQ,CAAC,YAAD,EAAeL,IAAf,CAA5B;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASu/E,QAAT,CAAkBr6E,MAAlB,EAA0B;EACtB,IAAI,CAACs6E,aAAa,CAACt6E,MAAM,CAACmxE,QAAP,CAAgB,CAAhB,CAAD,CAAlB,EAAwC;IACpCqB,kBAAkB,CAACxyE,MAAD,EAASA,MAAM,CAACmxE,QAAP,CAAgB,CAAhB,CAAT,EAA6BnD,cAA7B,CAAlB;EACH,CAFD,MAGK;IACDkJ,YAAY,CAACl3E,MAAD,EAAS,QAAT,CAAZ;EACH;AACJ;AACD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASu6E,UAAT,CAAoBv6E,MAApB,EAA4B;EACxB;EACA,IAAIypD,KAAK,GAAGzpD,MAAM,CAACmxE,QAAnB;;EACA,KAAK,IAAIz1E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+tD,KAAK,CAAC1uD,MAA1B,EAAkCW,CAAC,EAAnC,EAAuC;IACnC,IAAI,CAAC8+E,iBAAiB,CAAC/wB,KAAK,CAAC/tD,CAAD,CAAN,CAAtB,EAAkC;MAC9B82E,kBAAkB,CAACxyE,MAAD,EAASypD,KAAK,CAAC/tD,CAAD,CAAd,EAAmB0yE,kBAAnB,CAAlB;MACA;IACH;EACJ;;EACD,IAAIpuE,MAAM,CAAC4wE,aAAP,CAAqB71E,MAArB,GAA8B,CAAlC,EAAqC;IACjC0/E,QAAQ,CAACz6E,MAAD,EAASA,MAAM,CAACuuE,IAAhB,EAAsBvuE,MAAM,CAAC4wE,aAA7B,CAAR;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS8J,aAAT,CAAuB16E,MAAvB,EAA+BlF,IAA/B,EAAqC6/E,MAArC,EAA6C;EACzC,KAAK,IAAIj/E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,IAAI,CAACC,MAAzB,EAAiCW,CAAC,EAAlC,EAAsC;IAClC,IAAI,CAAC4+E,aAAa,CAACx/E,IAAI,CAACY,CAAD,CAAL,CAAlB,EAA6B;MACzB82E,kBAAkB,CAACxyE,MAAD,EAASlF,IAAI,CAACY,CAAD,CAAb,EAAkBsyE,cAAlB,CAAlB;MACA;IACH;EACJ;;EACDhuE,MAAM,CAACmxE,QAAP,GAAkBr2E,IAAlB;EACA8/E,MAAM,CAAC56E,MAAD,EAAS26E,MAAT,EAAiB36E,MAAM,CAACuuE,IAAxB,EAA8B,QAA9B,CAAN;AACH;AACD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASsM,eAAT,CAAyB76E,MAAzB,EAAiClF,IAAjC,EAAuC6/E,MAAvC,EAA+C;EAC3C,KAAK,IAAIj/E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,IAAI,CAACC,MAAzB,EAAiCW,CAAC,EAAlC,EAAsC;IAClC,IAAI,CAAC8+E,iBAAiB,CAAC1/E,IAAI,CAACY,CAAD,CAAL,CAAtB,EAAiC;MAC7B82E,kBAAkB,CAACxyE,MAAD,EAASlF,IAAI,CAACY,CAAD,CAAb,EAAkB0yE,kBAAlB,CAAlB;MACA;IACH;EACJ;;EACDpuE,MAAM,CAACmxE,QAAP,GAAkBr2E,IAAlB;;EACA,IAAI6/E,MAAM,CAAC5/E,MAAP,GAAgB,CAApB,EAAuB;IACnB0/E,QAAQ,CAACz6E,MAAD,EAASA,MAAM,CAACuuE,IAAhB,EAAsBoM,MAAtB,CAAR;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASnI,kBAAT,CAA4BxyE,MAA5B,EAAoClF,IAApC,EAA0Cg7B,MAA1C,EAAkD;EAC9C,IAAIz1B,OAAO,GAAGlF,8DAAQ,CAAC,SAAD,EAAYA,8DAAQ,CAAC,YAAD,EAAeL,IAAf,CAApB,CAAtB;;EACA,IAAIuF,OAAO,KAAK,EAAhB,EAAoB;IAChBA,OAAO,GAAG00E,aAAa,CAAC/0E,MAAD,EAAS,gBAAT,CAAb,CAAwCxE,OAAxC,CAAgD,KAAhD,EAAuDL,8DAAQ,CAAC,MAAD,EAASL,IAAT,CAA/D,EAA+EU,OAA/E,CAAuF,KAAvF,EAA8Fs6B,MAA9F,CAAV;EACH;;EACD,IAAI/O,QAAQ,GAAG;IACXlB,KAAK,EAAE;MACHmxD,IAAI,EAAE,KADH;MAEHC,UAAU,EAAE,IAFT;MAGH52E,OAAO,EAAEA;IAHN;EADI,CAAf;EAOA62E,YAAY,CAACl3E,MAAD,EAAS,OAAT,EAAkB+mB,QAAlB,CAAZ;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS+zD,cAAT,CAAwBhgF,IAAxB,EAA8B;EAC1B,OAAO,CAACy3E,aAAa,CAACz3E,IAAD,CAAd,GAAuB,yBAAvB,GAAmD,aAA1D;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASy3E,aAAT,CAAuBz3E,IAAvB,EAA6B;EACzB;EACA,IAAIigF,UAAU,GAAG5/E,8DAAQ,CAAC,YAAD,EAAeL,IAAf,CAAzB;EACA,OAAQigF,UAAU,IAAI,CAAC5/E,8DAAQ,CAAC,MAAD,EAAS4/E,UAAT,CAAxB,GAAgD,KAAhD,GAAwD,IAA/D;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAST,aAAT,CAAuBx/E,IAAvB,EAA6B;EACzB;EACA,IAAIigF,UAAU,GAAG5/E,8DAAQ,CAAC,YAAD,EAAeL,IAAf,CAAzB;EACA,OAAOigF,UAAU,GAAK5/E,8DAAQ,CAAC,MAAD,EAAS4/E,UAAT,CAAR,IAAgC5/E,8DAAQ,CAAC,OAAD,EAAU4/E,UAAV,CAA7C,GAAuE,IAAxF;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,gBAAT,CAA0BlgF,IAA1B,EAAgC;EAC5B;EACA,IAAIigF,UAAU,GAAG5/E,8DAAQ,CAAC,YAAD,EAAeL,IAAf,CAAzB;EACA,OAAOigF,UAAU,GAAK5/E,8DAAQ,CAAC,MAAD,EAAS4/E,UAAT,CAAR,IAAgC5/E,8DAAQ,CAAC,eAAD,EAAkB4/E,UAAlB,CAA7C,GAA+E,IAAhG;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,eAAT,CAAyBngF,IAAzB,EAA+B;EAC3B;EACA,IAAIigF,UAAU,GAAG5/E,8DAAQ,CAAC,YAAD,EAAeL,IAAf,CAAzB;EACA,OAAOigF,UAAU,GAAK5/E,8DAAQ,CAAC,MAAD,EAAS4/E,UAAT,CAAR,IAAgC5/E,8DAAQ,CAAC,QAAD,EAAW4/E,UAAX,CAA7C,GAAwE,IAAzF;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASP,iBAAT,CAA2B1/E,IAA3B,EAAiC;EAC7B;EACA,IAAIigF,UAAU,GAAG5/E,8DAAQ,CAAC,YAAD,EAAeL,IAAf,CAAzB;EACA,OAAOigF,UAAU,GAAK5/E,8DAAQ,CAAC,MAAD,EAAS4/E,UAAT,CAAR,IAAgC5/E,8DAAQ,CAAC,UAAD,EAAa4/E,UAAb,CAA7C,GAA0E,IAA3F;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASG,eAAT,CAAyBl7E,MAAzB,EAAiC;EAC7B;EACA,IAAIm7E,OAAO,GAAGn7E,MAAM,CAACmxE,QAAP,CAAgB,CAAhB,CAAd;;EACA,IAAI,CAAC6J,gBAAgB,CAACG,OAAD,CAArB,EAAgC;IAC5B3I,kBAAkB,CAACxyE,MAAD,EAASm7E,OAAT,EAAkBlN,sBAAlB,CAAlB;EACH,CAFD,MAGK;IACDiJ,YAAY,CAACl3E,MAAD,EAAS,WAAT,CAAZ;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASo7E,UAAT,CAAoBp7E,MAApB,EAA4B;EACxB;EACA,IAAIm7E,OAAO,GAAGn7E,MAAM,CAACmxE,QAAP,CAAgB,CAAhB,CAAd;;EACA,IAAI,CAAC8J,eAAe,CAACE,OAAD,CAApB,EAA+B;IAC3B3I,kBAAkB,CAACxyE,MAAD,EAASm7E,OAAT,EAAkBhN,gBAAlB,CAAlB;EACH,CAFD,MAGK;IACD,IAAIvoC,KAAK,GAAG,MAAM5lC,MAAM,CAACU,OAAP,CAAeoI,EAArB,GAA0B87D,SAAtC;IACA,IAAIyW,SAAS,GAAGn7E,QAAQ,CAAC6C,aAAT,CAAuB6iC,KAAvB,CAAhB;IACAy1C,SAAS,CAACC,KAAV;EACH;AACJ;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAStJ,IAAT,CAAchyE,MAAd,EAAsBpF,KAAtB,EAA6B2zE,IAA7B,EAAmC;EAC/B;EACA,IAAI4C,QAAQ,GAAGnxE,MAAM,CAACmxE,QAAtB;;EACA,KAAK,IAAIz1E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGy1E,QAAQ,CAACp2E,MAA7B,EAAqCW,CAAC,EAAtC,EAA0C;IACtC,IAAIS,uEAAiB,CAAChB,8DAAQ,CAAC,UAAD,EAAag2E,QAAQ,CAACz1E,CAAD,CAArB,CAAT,CAArB,EAA0D;MACtDI,8DAAQ,CAAC,UAAD,EAAa,KAAb,EAAoBq1E,QAAQ,CAACz1E,CAAD,CAA5B,CAAR;IACH;EACJ,CAP8B,CAQ/B;;;EACA,IAAIZ,IAAI,GAAG;IAAEg7B,MAAM,EAAE,MAAV;IAAkBy4C,IAAI,EAAEA,IAAxB;IAA8BgD,eAAe,EAAEvxE,MAAM,CAACuxE,eAAtD;IAAuEz2E,IAAI,EAAEq2E;EAA7E,CAAX;EACAoK,UAAU,CAACv7E,MAAD,EAASlF,IAAT,EAAe0gF,WAAf,EAA4B5gF,KAA5B,CAAV;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS6gF,YAAT,CAAsBz7E,MAAtB,EAA8B07E,QAA9B,EAAwC;EACpC;EACA,IAAI5gF,IAAI,GAAG;IAAEg7B,MAAM,EAAE,QAAV;IAAoBy4C,IAAI,EAAEvuE,MAAM,CAACuuE,IAAjC;IAAuCnzD,IAAI,EAAEsgE,QAA7C;IAAuD5gF,IAAI,EAAEkF,MAAM,CAACmxE;EAApE,CAAX;EACAoK,UAAU,CAACv7E,MAAD,EAASlF,IAAT,EAAe6gF,aAAf,EAA8BD,QAA9B,CAAV;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS1oD,MAAT,CAAgBhzB,MAAhB,EAAwBpF,KAAxB,EAA+B;EAC3B;EACA,IAAIE,IAAI,GAAG;IAAEg7B,MAAM,EAAE,QAAV;IAAoBy4C,IAAI,EAAEvuE,MAAM,CAACuuE,IAAjC;IAAuCgD,eAAe,EAAEvxE,MAAM,CAACuxE,eAA/D;IAAgFz2E,IAAI,EAAE,CAACs2E,aAAa,CAACpxE,MAAD,CAAd;EAAtF,CAAX,CAF2B,CAG3B;;EACA,IAAI47E,UAAJ,CAJ2B,CAK3B;;EACA,IAAIC,aAAa,GAAG77E,MAAM,CAAC47E,UAAP,GAAoBr+E,4DAAM,CAACq+E,UAAD,EAAa9gF,IAAb,EAAmBkF,MAAM,CAAC47E,UAA1B,CAA1B,GAAkE9gF,IAAtF;EACAygF,UAAU,CAACv7E,MAAD,EAAS67E,aAAT,EAAwBC,aAAxB,EAAuClhF,KAAvC,EAA8CO,8DAAQ,CAAC,QAAD,EAAW0gF,aAAX,CAAtD,CAAV;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASE,MAAT,CAAgB/7E,MAAhB,EAAwBuuE,IAAxB,EAA8ByN,WAA9B,EAA2C;EACvC,IAAI5gE,IAAJ;EACA,IAAI6gE,OAAJ;;EACA,IAAIj8E,MAAM,CAACwwE,mBAAP,CAA2BC,SAA3B,CAAqC/vE,OAArC,CAA6CpF,KAA7C,KAAuD,EAAvD,IAA6D,CAAC0E,MAAM,CAAC0wE,UAAzE,EAAqF;IACjFt1D,IAAI,GAAGpb,MAAM,CAACm6E,eAAd;IACA8B,OAAO,GAAGD,WAAV;EACH,CAHD,MAIK;IACD,IAAIpI,KAAK,GAAG5zE,MAAM,CAACo6E,UAAnB;;IACA,IAAIp6E,MAAM,CAACyuE,KAAX,EAAkB;MACdrzD,IAAI,GAAGpb,MAAM,CAACm6E,eAAd;MACA8B,OAAO,GAAGD,WAAV;IACH,CAHD,MAIK;MACDpI,KAAK,GAAGA,KAAK,CAACp4E,OAAN,CAAc,KAAd,EAAqB,GAArB,CAAR;MACA4f,IAAI,GAAGw4D,KAAK,CAACp4E,OAAN,CAAc+yE,IAAd,EAAoB,EAApB,IAA0BvuE,MAAM,CAACm6E,eAAxC;MACA8B,OAAO,GAAGrI,KAAK,CAACp4E,OAAN,CAAc+yE,IAAd,EAAoB,EAApB,IAA0ByN,WAApC;IACH;EACJ,CAlBsC,CAmBvC;;;EACA,IAAIlhF,IAAI,GAAG;IACPg7B,MAAM,EAAE,QADD;IACWy4C,IAAI,EAAEA,IADjB;IACuBnzD,IAAI,EAAEA,IAD7B;IACmC6gE,OAAO,EAAEA,OAD5C;IACqDnhF,IAAI,EAAEkF,MAAM,CAACmxE;EADlE,CAAX;EAGAoK,UAAU,CAACv7E,MAAD,EAASlF,IAAT,EAAeohF,aAAf,EAA8B3N,IAA9B,CAAV;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASwI,KAAT,CAAe/2E,MAAf,EAAuBuuE,IAAvB,EAA6BU,KAA7B,EAAoCkB,UAApC,EAAgDgM,cAAhD,EACA;AACAC,WAFA,EAEaxM,aAFb,EAE4B;EACxB;EACA,IAAI90E,IAAI,GAAG;IACPg7B,MAAM,EAAEqmD,cADD;IACiB5N,IAAI,EAAEA,IADvB;IAC6B8N,UAAU,EAAEr8E,MAAM,CAACmxE,QAAP,CAAgB,CAAhB,CADzC;IAEPhB,UAAU,EAAEA,UAFL;IAEiBlB,KAAK,EAAEA,KAFxB;IAE+BqN,WAAW,EAAEF,WAF5C;IAEyDthF,IAAI,EAAE80E;EAF/D,CAAX;EAIA5vE,MAAM,CAACu8E,eAAP,GAAyBpM,UAAzB;EACAoL,UAAU,CAACv7E,MAAD,EAASlF,IAAT,EAAe0hF,YAAf,EAA6BjO,IAA7B,EAAmC4N,cAAnC,EAAmDhM,UAAnD,CAAV;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASyK,MAAT,CAAgB56E,MAAhB,EAAwBypD,KAAxB,EAA+B8kB,IAA/B,EAAqCuJ,SAArC,EAAgD;EAC5C;EACA,IAAIh9E,IAAI,GAAG;IAAEg7B,MAAM,EAAEgiD,SAAV;IAAqBvJ,IAAI,EAAEA,IAA3B;IAAiCU,KAAK,EAAExlB,KAAxC;IAA+C3uD,IAAI,EAAEkF,MAAM,CAACmxE;EAA5D,CAAX;EACAoK,UAAU,CAACv7E,MAAD,EAASlF,IAAT,EAAe2hF,aAAf,EAA8BlO,IAA9B,CAAV;AACH;AACD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASmO,UAAT,CAAoB18E,MAApB,EAA4BivE,KAA5B,EAAmCV,IAAnC,EAAyCuJ,SAAzC,EAAoD;EAChD;EACA,IAAIh9E,IAAI,GAAG;IAAEg7B,MAAM,EAAEgiD,SAAV;IAAqBvJ,IAAI,EAAEA,IAA3B;IAAiCU,KAAK,EAAEA,KAAxC;IAA+Cn0E,IAAI,EAAEkF,MAAM,CAACmxE;EAA5D,CAAX;EACAoK,UAAU,CAACv7E,MAAD,EAASlF,IAAT,EAAe6hF,cAAf,EAA+BpO,IAA/B,EAAqCuJ,SAArC,CAAV;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASl7D,aAAT,CAAuB5c,MAAvB,EAA+B;EAC3B,IAAIm2E,OAAO,GAAGn2E,MAAM,CAACk2E,mBAAP,CAA2BC,OAAzC;EACA,IAAIlsE,UAAJ;;EACA,KAAK,IAAIvO,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGy6E,OAAO,CAACp7E,MAA5B,EAAoCW,CAAC,EAArC,EAAyC;IACrC,IAAIy6E,OAAO,CAACz6E,CAAD,CAAP,CAAW2nD,KAAX,KAAqB,cAAzB,EAAyC;MACrC,IAAI,CAAClnD,uEAAiB,CAACg6E,OAAO,CAACz6E,CAAD,CAAP,CAAWwP,MAAZ,CAAtB,EAA2C;QACvCjB,UAAU,GAAGksE,OAAO,CAACz6E,CAAD,CAAP,CAAWwP,MAAX,CAAkBrP,QAAlB,EAAb;MACH;;MACD;IACH;EACJ;;EACD,OAAOoO,UAAP;AACH;;AACD,SAASsxE,UAAT,EACA;AACAv7E,MAFA,EAEQlF,IAFR,EAEcsiD,EAFd,EAEkBxiD,KAFlB,EAEyBk9E,SAFzB,EAEoC3H,UAFpC,EAEgD;EAC5C;EACA,IAAIqD,YAAY,GAAG;IACfxvD,GAAG,EAAEhkB,MAAM,CAACwzE,YAAP,CAAoBxvD,GADV;IAEf3Y,IAAI,EAAE,MAFS;IAGfoT,IAAI,EAAE,IAHS;IAIfmH,QAAQ,EAAE,MAJK;IAKf9B,WAAW,EAAE,kBALE;IAMfhpB,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAe5sC,IAAf,CANS;IAOfyqB,SAAS,EAAE,IAPI;IAQfG,SAAS,EAAE,IARI;IASfJ,UAAU,EAAE;EATG,CAAnB;EAWA,IAAIpB,SAAS,GAAG;IAAE4R,MAAM,EAAE36B,8DAAQ,CAAC,QAAD,EAAWL,IAAX,CAAlB;IAAoC04E,YAAY,EAAEA,YAAlD;IAAgErvD,MAAM,EAAE;EAAxE,CAAhB;EACAnkB,MAAM,CAAC+rB,OAAP,CAAe,YAAf,EAA6B7H,SAA7B,EAAwC,UAAU04D,cAAV,EAA0B;IAC9D,IAAI,CAACA,cAAc,CAACz4D,MAApB,EAA4B;MACxBnkB,MAAM,CAACgb,MAAP,CAAcqwD,aAAd,EAA6B,EAA7B;MACA,IAAIwR,IAAI,GAAG,IAAIj5D,sDAAJ,CAAS;QAChBI,GAAG,EAAE7oB,8DAAQ,CAAC,KAAD,EAAQyhF,cAAc,CAACpJ,YAAvB,CADG;QAEhBnoE,IAAI,EAAElQ,8DAAQ,CAAC,MAAD,EAASyhF,cAAc,CAACpJ,YAAxB,CAFE;QAGhB/0D,IAAI,EAAEtjB,8DAAQ,CAAC,MAAD,EAASyhF,cAAc,CAACpJ,YAAxB,CAHE;QAIhB5tD,QAAQ,EAAEzqB,8DAAQ,CAAC,UAAD,EAAayhF,cAAc,CAACpJ,YAA5B,CAJF;QAKhB1vD,WAAW,EAAE3oB,8DAAQ,CAAC,aAAD,EAAgByhF,cAAc,CAACpJ,YAA/B,CALL;QAMhB14E,IAAI,EAAEK,8DAAQ,CAAC,MAAD,EAASyhF,cAAc,CAACpJ,YAAxB,CANE;QAOhBluD,UAAU,EAAEnqB,8DAAQ,CAAC,YAAD,EAAeyhF,cAAc,CAACpJ,YAA9B,CAPJ;QAQhBjuD,SAAS,EAAE,UAAU3nB,MAAV,EAAkB;UACzB,IAAIzB,uEAAiB,CAACyB,MAAD,CAArB,EAA+B;YAC3B,IAAIikC,QAAQ,GAAG;cACXhc,KAAK,EAAE;gBACHoxD,UAAU,EAAE,IADT;gBAEH52E,OAAO,EAAE00E,aAAa,CAAC/0E,MAAD,EAAS,cAAT,CAAb,GAAwC,GAAxC,GAA8CA,MAAM,CAACwzE,YAAP,CAAoBxvD,GAFxE;gBAGHgzD,IAAI,EAAE;cAHH,CADI;cAMXtF,KAAK,EAAE;YANI,CAAf;YAQAoL,kBAAkB,CAAC98E,MAAD,EAAS48E,cAAT,EAAyBx/B,EAAzB,EAA6Bvb,QAA7B,EAAuCjnC,KAAvC,EAA8Ck9E,SAA9C,EAAyD3H,UAAzD,CAAlB;YACA;UACH;;UACD,IAAI,OAAQvyE,MAAR,KAAoB,QAAxB,EAAkC;YAC9BA,MAAM,GAAGme,IAAI,CAACC,KAAL,CAAWpe,MAAX,CAAT;UACH;;UACDoC,MAAM,CAACgb,MAAP,CAAcuwD,YAAd,EAA4B;YAAEz1C,MAAM,EAAE;UAAV,CAA5B;UACA,IAAIhtB,EAAE,GAAG9I,MAAM,CAACw4E,UAAP,GAAoBx4E,MAAM,CAACw4E,UAA3B,GAAwCx4E,MAAM,CAAC0uE,MAAP,CAAc1uE,MAAM,CAAC0uE,MAAP,CAAc3zE,MAAd,GAAuB,CAArC,CAAjD;;UACA,IAAI,CAACoB,uEAAiB,CAACyB,MAAM,CAACg6E,GAAR,CAAlB,IAAmCz8E,8DAAQ,CAAC,QAAD,EAAWL,IAAX,CAAR,KAA6B,MAApE,EAA6E;YACzE8C,MAAM,CAACg6E,GAAP,CAAWx8D,IAAX,GAAmBpb,MAAM,CAAC0uE,MAAP,CAAc3zE,MAAd,KAAyB,CAA1B,GAAgCiF,MAAM,CAAC+8E,aAAP,IAAwBn/E,MAAM,CAACg6E,GAAP,CAAWx8D,IAAnE,GAA2Exd,MAAM,CAACg6E,GAAP,CAAWx8D,IAAxG;YACAtf,8DAAQ,CAAC,QAAD,EAAWgN,EAAX,EAAelL,MAAM,CAACg6E,GAAtB,CAAR;YACA97E,8DAAQ,CAACgN,EAAD,EAAKlL,MAAM,CAACg6E,GAAZ,EAAiB53E,MAAM,CAACuvE,QAAxB,CAAR;;YACA,IAAI,CAACpzE,uEAAiB,CAACyB,MAAM,CAAC8zE,KAAR,CAAlB,IAAoC9zE,MAAM,CAACioB,KAAP,CAAamxD,IAAb,KAAsB,KAA9D,EAAqE;cACjE,IAAI,CAACp8E,KAAK,KAAK,cAAV,IAA4BA,KAAK,KAAK,aAAvC,KAAyDoF,MAAM,CAAC4uE,SAAP,CAAiB7zE,MAAjB,KAA4B,CAAzF,EAA4F;gBACxF;gBACA,IAAI8kD,IAAI,GAAG1kD,8DAAQ,CAAC6E,MAAM,CAAC0uE,MAAP,CAAc,CAAd,CAAD,EAAmB1uE,MAAM,CAACuvE,QAA1B,CAAnB;gBACAvvE,MAAM,CAAC4uE,SAAP,CAAiB,CAAjB,IAAsBzzE,8DAAQ,CAAC,MAAD,EAAS0kD,IAAT,CAA9B;gBACA7/C,MAAM,CAACyuE,KAAP,GAAe,CAACtyE,uEAAiB,CAAChB,8DAAQ,CAAC,IAAD,EAAO0kD,IAAP,CAAT,CAAjC;cACH;;cACD,IAAIjlD,KAAK,KAAK,cAAd,EAA8B;gBAC1By0E,YAAY,CAACrvE,MAAD,CAAZ;cACH;YACJ;UACJ;;UACD,IAAIg9E,IAAI,GAAG,IAAItgE,sEAAJ,CAAyB1c,MAAM,CAACoe,MAAhC,CAAX;;UACA,IAAI,CAACjiB,uEAAiB,CAACyB,MAAM,CAAC8zE,KAAR,CAAtB,EAAsC;YAClC2D,aAAa,CAACz3E,MAAM,CAAC8zE,KAAR,EAAesL,IAAf,EAAqBpgE,aAAa,CAAC5c,MAAD,CAAlC,CAAb;;YACA,KAAK,IAAItE,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAGxD,MAAM,CAAC8zE,KAAP,CAAa32E,MAAnC,EAA2CW,CAAC,GAAG0F,GAA/C,EAAoD1F,CAAC,EAArD,EAAyD;cACrD;cACA,IAAIgmD,IAAI,GAAG9jD,MAAM,CAAC8zE,KAAP,CAAah2E,CAAb,CAAX;cACAI,8DAAQ,CAAC,eAAD,EAAkB+2E,QAAQ,CAACnxB,IAAD,CAA1B,EAAkCA,IAAlC,CAAR;YACH;;YACD,IAAIvmD,8DAAQ,CAAC,QAAD,EAAWL,IAAX,CAAR,KAA6B,MAAjC,EAAyC;cACrCo6E,SAAS,CAACt3E,MAAD,EAASkL,EAAT,CAAT;cACAhN,8DAAQ,CAACgN,EAAD,EAAKlL,MAAM,CAAC8zE,KAAZ,EAAmB1xE,MAAM,CAACu0E,OAA1B,CAAR;YACH;UACJ;;UACD,IAAI,CAACp4E,uEAAiB,CAACyB,MAAM,CAACu9E,OAAR,CAAlB,IAAsC,CAACh/E,uEAAiB,CAAC6D,MAAM,CAAC+8E,aAAR,CAA5D,EAAoF;YAChF,IAAIE,QAAQ,GAAGj9E,MAAM,CAAC+8E,aAAP,IAAwB5hF,8DAAQ,CAAC,MAAD,EAASyC,MAAM,CAACu9E,OAAhB,CAA/C;YACA,IAAI+B,UAAU,GAAG/hF,8DAAQ,CAAC,UAAD,EAAayC,MAAM,CAACu9E,OAApB,CAAR,CAAqC3/E,OAArC,CAA6C,IAAIiJ,MAAJ,CAAW,GAAX,EAAgB,GAAhB,CAA7C,EAAmE,IAAnE,CAAjB;;YACA,IAAKtJ,8DAAQ,CAAC,MAAD,EAASL,IAAT,CAAR,KAA2B,GAA5B,IAAqCkF,MAAM,CAACyuE,KAAP,IAAgBtzE,8DAAQ,CAAC,MAAD,EAASL,IAAT,CAAR,CAAuBqH,KAAvB,CAA6B,MAA7B,EAAqCpH,MAArC,KAAgD,CAAzG,EAA6G;cACzG,IAAII,8DAAQ,CAAC,OAAD,EAAUL,IAAV,CAAR,CAAwBC,MAAxB,KAAmC,CAAvC,EAA0C;gBACtCe,8DAAQ,CAAC,MAAD,EAASmhF,QAAT,EAAmBr/E,MAAM,CAACu9E,OAA1B,CAAR;gBACA+B,UAAU,GAAGD,QAAb;cACH,CAHD,MAIK;gBACDC,UAAU,GAAGA,UAAU,CAAC1hF,OAAX,CAAmB0hF,UAAU,CAAC9vE,SAAX,CAAqB,CAArB,EAAwB8vE,UAAU,CAAC9/E,OAAX,CAAmB,IAAnB,CAAxB,CAAnB,EAAsE6/E,QAAtE,CAAb;cACH;YACJ,CARD,MASK;cACDC,UAAU,GAAGA,UAAU,CAAC1hF,OAAX,CAAmB0hF,UAAU,CAAC9vE,SAAX,CAAqB,CAArB,EAAwB8vE,UAAU,CAAC9/E,OAAX,CAAmB,IAAnB,CAAxB,CAAnB,EAAsE6/E,QAAtE,CAAb;YACH;;YACDnhF,8DAAQ,CAAC,UAAD,EAAaohF,UAAb,EAAyBt/E,MAAM,CAACu9E,OAAhC,CAAR;UACH;;UACD/9B,EAAE,CAACp9C,MAAD,EAASpC,MAAT,EAAiBhD,KAAjB,EAAwBk9E,SAAxB,EAAmC3H,UAAnC,CAAF;;UACA,IAAI,CAACh0E,uEAAiB,CAACyB,MAAM,CAAC8zE,KAAR,CAAlB,KAAqC92E,KAAK,KAAK,cAAV,IAA4BA,KAAK,KAAK,cAAtC,IAAwDA,KAAK,KAAK,UAAvG,CAAJ,EAAwH;YACpHoF,MAAM,CAACgb,MAAP,CAAcqyD,gBAAd,EAAgCzvE,MAAhC;UACH;;UACD,IAAI,OAAOzC,8DAAQ,CAAC,WAAD,EAAcyhF,cAAc,CAACpJ,YAA7B,CAAf,KAA8D,UAAlE,EAA8E;YAC1Er4E,8DAAQ,CAAC,WAAD,EAAcyhF,cAAc,CAACpJ,YAA7B,CAAR;UACH;QACJ,CA/Ee;QAgFhB9tD,SAAS,EAAE,YAAY;UACnB,IAAI9nB,MAAM,GAAG;YACT8zE,KAAK,EAAE,IADE;YAET7rD,KAAK,EAAE;cACHmxD,IAAI,EAAE,KADH;cAEH32E,OAAO,EAAE00E,aAAa,CAAC/0E,MAAD,EAAS,eAAT,CAAb,GAAyC,GAAzC,GAA+CA,MAAM,CAACwzE,YAAP,CAAoBxvD,GAFzE;cAGHizD,UAAU,EAAE;YAHT;UAFE,CAAb;UAQA6F,kBAAkB,CAAC98E,MAAD,EAAS48E,cAAT,EAAyBx/B,EAAzB,EAA6Bx/C,MAA7B,EAAqChD,KAArC,EAA4Ck9E,SAA5C,EAAuD3H,UAAvD,CAAlB;QACH;MA1Fe,CAAT,CAAX;MA4FA0M,IAAI,CAAC54D,IAAL;IACH;EACJ,CAjGD;AAkGH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS64D,kBAAT,EACA;AACA98E,MAFA,EAEQ48E,cAFR,EAEwBx/B,EAFxB,EAE4Bx/C,MAF5B,EAEoChD,KAFpC,EAE2Ck9E,SAF3C,EAEsD3H,UAFtD,EAEkE;EAC9DnwE,MAAM,CAACgb,MAAP,CAAcuwD,YAAd,EAA4B;IAAEz1C,MAAM,EAAE;EAAV,CAA5B;EACAsnB,EAAE,CAACp9C,MAAD,EAASpC,MAAT,EAAiBhD,KAAjB,EAAwBk9E,SAAxB,EAAmC3H,UAAnC,CAAF;;EACA,IAAI,OAAOh1E,8DAAQ,CAAC,WAAD,EAAcyhF,cAAc,CAACpJ,YAA7B,CAAf,KAA8D,UAAlE,EAA8E;IAC1Er4E,8DAAQ,CAAC,WAAD,EAAcyhF,cAAc,CAACpJ,YAA7B,CAAR;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASgI,WAAT,CAAqBx7E,MAArB,EAA6BpC,MAA7B,EAAqChD,KAArC,EAA4C;EACxC,IAAI,CAACuB,uEAAiB,CAACyB,MAAM,CAAC8zE,KAAR,CAAtB,EAAsC;IAClC1xE,MAAM,CAACgb,MAAP,CAAcpgB,KAAd,EAAqBgD,MAArB;IACAoC,MAAM,CAACgb,MAAP,CAAc6wD,gBAAd,EAAgC,EAAhC;IACA,IAAI5sE,IAAI,GAAG;MAAE62B,MAAM,EAAE,MAAV;MAAkBl4B,MAAM,EAAEA;IAA1B,CAAX;IACAoC,MAAM,CAAC+rB,OAAP,CAAe,SAAf,EAA0B9sB,IAA1B;EACH,CALD,MAMK;IACD,IAAIrB,MAAM,CAACioB,KAAP,CAAamxD,IAAb,KAAsB,KAA1B,EAAiC;MAC7Bp5E,MAAM,CAAC8zE,KAAP,GAAe,EAAf;MACA1xE,MAAM,CAACgb,MAAP,CAAcpgB,KAAd,EAAqBgD,MAArB;MACAoC,MAAM,CAACgb,MAAP,CAAc6wD,gBAAd,EAAgC,EAAhC;IACH;;IACDnmD,SAAS,CAAC1lB,MAAD,EAASpC,MAAT,EAAiB,MAAjB,CAAT;IACAoC,MAAM,CAAC4xB,aAAP,CAAqB;MAAE28C,IAAI,EAAEvuE,MAAM,CAAC03E;IAAf,CAArB,EAA+C,IAA/C;IACA13E,MAAM,CAAC4uE,SAAP,CAAiBuO,GAAjB;EACH;;EACD,IAAIn9E,MAAM,CAAC22E,UAAP,IAAqB32E,MAAM,CAACo4E,SAAhC,EAA2C;IACvC,IAAIp4E,MAAM,CAACi4E,cAAP,CAAsBl9E,MAAtB,KAAiC,CAArC,EAAwC;MACpC,IAAIkE,IAAI,GAAG;QAAE60E,WAAW,EAAE9zE,MAAM,CAACi4E;MAAtB,CAAX;MACAj4E,MAAM,CAAC+rB,OAAP,CAAe,aAAf,EAA8B9sB,IAA9B;IACH;;IACDe,MAAM,CAACo4E,SAAP,GAAmBp4E,MAAM,CAAC22E,UAAP,GAAoB,KAAvC;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASmF,aAAT,CAAuB97E,MAAvB,EAA+BpC,MAA/B,EAAuChD,KAAvC,EAA8Ck7B,MAA9C,EAAsD;EAClD,IAAI,CAAC35B,uEAAiB,CAACyB,MAAM,CAAC8zE,KAAR,CAAtB,EAAsC;IAClC1xE,MAAM,CAACgb,MAAP,CAAcpgB,KAAd,EAAqBgD,MAArB;IACA,IAAIqB,IAAI,GAAG;MAAE62B,MAAM,EAAEA,MAAV;MAAkBl4B,MAAM,EAAEA;IAA1B,CAAX;IACAoC,MAAM,CAAC+rB,OAAP,CAAe,SAAf,EAA0B9sB,IAA1B;EACH,CAJD,MAKK;IACDymB,SAAS,CAAC1lB,MAAD,EAASpC,MAAT,EAAiBk4B,MAAjB,CAAT;EACH;AACJ;AACD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS6lD,aAAT,CAAuB37E,MAAvB,EAA+BpC,MAA/B,EAAuC89E,QAAvC,EAAiD;EAC7C,IAAI,CAACv/E,uEAAiB,CAACyB,MAAM,CAAC8zE,KAAR,CAAtB,EAAsC;IAClC,IAAI1xE,MAAM,CAACo9E,SAAP,IAAoBp9E,MAAM,CAACo9E,SAAP,CAAiBC,OAAzC,EAAkD;MAC9Cr9E,MAAM,CAACo9E,SAAP,CAAiBE,IAAjB;IACH;;IACDt9E,MAAM,CAACu9E,WAAP,GAAqB3/E,MAAM,CAAC8zE,KAAP,CAAa,CAAb,CAArB;IACA1xE,MAAM,CAACwwE,mBAAP,CAA2BC,SAA3B,CAAqCn1E,KAArC,GAA6C,EAA7C;IACA,IAAI2D,IAAI,GAAG;MAAE62B,MAAM,EAAE,QAAV;MAAoBl4B,MAAM,EAAEA;IAA5B,CAAX;IACAoC,MAAM,CAAC+rB,OAAP,CAAe,SAAf,EAA0B9sB,IAA1B;IACAe,MAAM,CAACmxE,QAAP,GAAkB,CAACC,aAAa,CAACpxE,MAAD,CAAd,CAAlB;IACAgyE,IAAI,CAAChyE,MAAD,EAAS2qE,SAAT,EAAoB3qE,MAAM,CAACuuE,IAA3B,CAAJ;EACH,CAVD,MAWK;IACD,IAAI3wE,MAAM,CAACioB,KAAP,CAAamxD,IAAb,KAAsB,KAA1B,EAAiC;MAC7B,IAAIh3E,MAAM,CAACo9E,SAAP,IAAoBp9E,MAAM,CAACo9E,SAAP,CAAiBC,OAAzC,EAAkD;QAC9C,IAAIpwD,GAAG,GAAG+B,4DAAM,CAAC,UAAD,EAAahvB,MAAM,CAACo9E,SAAP,CAAiB18E,OAA9B,CAAhB;QACA,IAAImlB,KAAK,GAAGkvD,aAAa,CAAC/0E,MAAD,EAAS,6BAAT,CAAb,CAAqDxE,OAArD,CAA6D,KAA7D,EAAoE,MAAMyxB,GAAG,CAAC3xB,KAAV,GAAkB,GAAtF,CAAZ;QACA2xB,GAAG,CAAC4mB,aAAJ,CAAkB2pC,kBAAlB,CAAqC77E,SAArC,GAAiDkkB,KAAjD;MACH,CAJD,MAKK;QACD,IAAI43D,QAAQ,GAAG;UACX/L,KAAK,EAAE,IADI;UAEX7rD,KAAK,EAAE;YACHmxD,IAAI,EAAE,KADH;YAEH32E,OAAO,EAAE00E,aAAa,CAAC/0E,MAAD,EAAS,6BAAT,CAAb,CAAqDxE,OAArD,CAA6D,KAA7D,EAAoE,MAAMkgF,QAAN,GAAiB,GAArF,CAFN;YAGHzE,UAAU,EAAE;UAHT;QAFI,CAAf;QAQAC,YAAY,CAACl3E,MAAD,EAAS,OAAT,EAAkBy9E,QAAlB,CAAZ;MACH;;MACD,IAAIx+E,IAAI,GAAG;QAAE62B,MAAM,EAAE,QAAV;QAAoBjQ,KAAK,EAAEjoB,MAAM,CAACioB;MAAlC,CAAX;MACA7lB,MAAM,CAAC+rB,OAAP,CAAe,SAAf,EAA0B9sB,IAA1B;IACH,CAnBD,MAoBK;MACD,IAAIe,MAAM,CAACo9E,SAAP,IAAoBp9E,MAAM,CAACo9E,SAAP,CAAiBC,OAAzC,EAAkD;QAC9Cr9E,MAAM,CAACo9E,SAAP,CAAiBE,IAAjB;MACH;;MACD53D,SAAS,CAAC1lB,MAAD,EAASpC,MAAT,EAAiB,QAAjB,CAAT;IACH;EACJ;AACJ;AACD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASs+E,aAAT,CAAuBl8E,MAAvB,EAA+BpC,MAA/B,EAAuC2wE,IAAvC,EAA6C;EACzC,IAAI,CAACpyE,uEAAiB,CAACyB,MAAM,CAAC8zE,KAAR,CAAtB,EAAsC;IAClC,IAAI,CAACv1E,uEAAiB,CAAC6D,MAAM,CAACo9E,SAAR,CAAtB,EAA0C;MACtCp9E,MAAM,CAACo9E,SAAP,CAAiBE,IAAjB;IACH;;IACD,IAAIr+E,IAAI,GAAG;MAAE62B,MAAM,EAAE,QAAV;MAAoBl4B,MAAM,EAAEA;IAA5B,CAAX;IACAoC,MAAM,CAAC+rB,OAAP,CAAe,SAAf,EAA0B9sB,IAA1B;IACAe,MAAM,CAAC09E,WAAP,GAAqBrgF,KAAK,CAACC,OAAN,CAAcM,MAAM,CAAC8zE,KAArB,IAA8B9zE,MAAM,CAAC8zE,KAAP,CAAa,CAAb,CAA9B,GAAgD9zE,MAAM,CAAC8zE,KAA5E;;IACA,IAAIv2E,8DAAQ,CAAC,YAAD,EAAe6E,MAAM,CAAC09E,WAAtB,CAAR,KAA+CviF,8DAAQ,CAAC,YAAD,EAAe6E,MAAM,CAACmxE,QAAP,CAAgB,CAAhB,CAAf,CAAvD,IAA6FnxE,MAAM,CAAC4uE,SAAP,CAAiB7zE,MAAjB,GAA0B,CAA3H,EAA8H;MAC1HiF,MAAM,CAAC4uE,SAAP,CAAiB5uE,MAAM,CAAC4uE,SAAP,CAAiB7zE,MAAjB,GAA0B,CAA3C,IAAgDiF,MAAM,CAAC29E,UAAvD;IACH;;IACD,IAAI39E,MAAM,CAACkwE,YAAP,KAAwB,gBAA5B,EAA8C;MAC1ClwE,MAAM,CAAC0uE,MAAP,CAAcyO,GAAd;MACAn9E,MAAM,CAACmxE,QAAP,GAAkB,CAACh2E,8DAAQ,CAAC6E,MAAM,CAAC0uE,MAAP,CAAc1uE,MAAM,CAAC0uE,MAAP,CAAc3zE,MAAd,GAAuB,CAArC,CAAD,EAA0CiF,MAAM,CAACuvE,QAAjD,CAAT,CAAlB;MACAyC,IAAI,CAAChyE,MAAD,EAASusE,eAAT,EAA0BpxE,8DAAQ,CAAC,YAAD,EAAe6E,MAAM,CAAC09E,WAAtB,CAAR,CAA2CliF,OAA3C,CAAmD,KAAnD,EAA0D,GAA1D,CAA1B,CAAJ;MACAwE,MAAM,CAACmxE,QAAP,CAAgB,CAAhB,IAAqBnxE,MAAM,CAAC09E,WAA5B;MACA1L,IAAI,CAAChyE,MAAD,EAASorE,WAAT,EAAsBprE,MAAM,CAACuuE,IAAP,KAAgB,GAAhB,GAAsBvuE,MAAM,CAACuuE,IAA7B,GAAoCpzE,8DAAQ,CAAC,YAAD,EAAe6E,MAAM,CAAC09E,WAAtB,CAAR,CAA2CliF,OAA3C,CAAmD,KAAnD,EAA0D,GAA1D,IAAiEwE,MAAM,CAAC09E,WAAP,CAAmBtiE,IAApF,GAA2F,GAArJ,CAAJ;IACH,CAND,MAOK;MACDpb,MAAM,CAACmxE,QAAP,GAAkB,CAACC,aAAa,CAACpxE,MAAD,CAAd,CAAlB;;MACA,IAAIA,MAAM,CAACwwE,mBAAP,CAA2BC,SAA3B,CAAqCn1E,KAArC,KAA+C,EAAnD,EAAuD;QACnDk2E,MAAM,CAACxxE,MAAD,EAASwsE,SAAT,EAAoBxsE,MAAM,CAACuuE,IAA3B,EAAiCvuE,MAAM,CAACgxE,UAAxC,EAAoDhxE,MAAM,CAACuxE,eAA3D,EAA4E,CAACvxE,MAAM,CAACixE,cAAP,CAAsBxsB,UAAnG,CAAN;MACH,CAFD,MAGK;QACD,IAAIzkD,MAAM,CAAC0wE,UAAX,EAAuB;UACnB19C,MAAM,CAAChzB,MAAD,EAASwsE,SAAT,CAAN;QACH,CAFD,MAGK;UACDwF,IAAI,CAAChyE,MAAD,EAASwsE,SAAT,EAAoBxsE,MAAM,CAACuuE,IAA3B,CAAJ;QACH;MACJ;IACJ;EACJ,CA/BD,MAgCK;IACD,IAAI3wE,MAAM,CAACioB,KAAP,CAAamxD,IAAb,KAAsB,KAAtB,IAA+Bh3E,MAAM,CAACo9E,SAAtC,IAAmDp9E,MAAM,CAACo9E,SAAP,CAAiBC,OAAxE,EAAiF;MAC7E,IAAIpwD,GAAG,GAAG+B,4DAAM,CAAC,SAAD,EAAYhvB,MAAM,CAACo9E,SAAP,CAAiB18E,OAA7B,CAAhB;MACA,IAAImlB,KAAK,GAAGkvD,aAAa,CAAC/0E,MAAD,EAAS,0BAAT,CAAb,CAAkDxE,OAAlD,CAA0D,KAA1D,EAAiE,MAAMwE,MAAM,CAACm6E,eAAb,GAA+B,GAAhG,CAAZ;MACAt0D,KAAK,GAAGA,KAAK,CAACrqB,OAAN,CAAc,KAAd,EAAqB,MAAMyxB,GAAG,CAAC3xB,KAAV,GAAkB,GAAvC,CAAR;MACA2xB,GAAG,CAAC4mB,aAAJ,CAAkB2pC,kBAAlB,CAAqC77E,SAArC,GAAiDkkB,KAAjD;MACA,IAAI5mB,IAAI,GAAG;QAAE62B,MAAM,EAAE,QAAV;QAAoBjQ,KAAK,EAAEjoB,MAAM,CAACioB;MAAlC,CAAX;MACA7lB,MAAM,CAAC+rB,OAAP,CAAe,SAAf,EAA0B9sB,IAA1B;IACH,CAPD,MAQK;MACD,IAAI,CAAC9C,uEAAiB,CAAC6D,MAAM,CAACo9E,SAAR,CAAtB,EAA0C;QACtCp9E,MAAM,CAACo9E,SAAP,CAAiBE,IAAjB;MACH;;MACD53D,SAAS,CAAC1lB,MAAD,EAASpC,MAAT,EAAiB,QAAjB,CAAT;IACH;EACJ;AACJ;AACD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4+E,YAAT,CAAsBx8E,MAAtB,EAA8BpC,MAA9B,EAAsC2wE,IAAtC,EAA4CuJ,SAA5C,EAAuD;EACnD,IAAIl6E,MAAM,CAACioB,KAAP,IAAgBjoB,MAAM,CAACioB,KAAP,CAAaoxD,UAAjC,EAA6C;IACzCj3E,MAAM,CAAC49E,UAAP,GAAoB,CAApB;;IACA,IAAI,CAACzhF,uEAAiB,CAACyB,MAAM,CAAC8zE,KAAR,CAAtB,EAAsC;MAClC1xE,MAAM,CAACm4E,YAAP,GAAsB,IAAtB;MACAN,aAAa,CAAC73E,MAAD,EAAS83E,SAAT,EAAoBl6E,MAApB,CAAb;IACH;;IACDigF,eAAe,CAAC79E,MAAD,EAAS,gBAAT,EAA2BpC,MAAM,CAACioB,KAAP,CAAaoxD,UAAxC,CAAf;;IACA,IAAIr5E,MAAM,CAACioB,KAAP,CAAamxD,IAAb,KAAsB,KAA1B,EAAiC;MAC7BE,YAAY,CAACl3E,MAAD,EAAS,OAAT,EAAkBpC,MAAlB,CAAZ;IACH;EACJ,CAVD,MAWK,IAAI,CAACA,MAAM,CAACioB,KAAR,IAAiB,CAAC1pB,uEAAiB,CAACyB,MAAM,CAAC8zE,KAAR,CAAvC,EAAuD;IACxD1xE,MAAM,CAACm4E,YAAP,GAAsB,KAAtB;IACAN,aAAa,CAAC73E,MAAD,EAAS83E,SAAT,EAAoBl6E,MAApB,CAAb;EACH,CAHI,MAIA,IAAIA,MAAM,CAACioB,KAAP,IAAgB,CAAC1pB,uEAAiB,CAACyB,MAAM,CAAC8zE,KAAR,CAAtC,EAAsD;IACvD1xE,MAAM,CAACm4E,YAAP,GAAsB,IAAtB;IACAN,aAAa,CAAC73E,MAAD,EAAS83E,SAAT,EAAoBl6E,MAApB,CAAb;IACAs5E,YAAY,CAACl3E,MAAD,EAAS,OAAT,EAAkBpC,MAAlB,CAAZ;EACH,CAJI,MAKA;IACD8nB,SAAS,CAAC1lB,MAAD,EAASpC,MAAT,EAAiBk6E,SAAjB,CAAT;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS2E,aAAT,CAAuBz8E,MAAvB,EAA+BpC,MAA/B,EAAuC2wE,IAAvC,EAA6C;EACzC,IAAI,CAACpyE,uEAAiB,CAACyB,MAAM,CAAC8zE,KAAR,CAAtB,EAAsC;IAClC1xE,MAAM,CAAC4xB,aAAP,CAAqB;MAAE28C,IAAI,EAAEA;IAAR,CAArB,EAAqC,IAArC;IACAvuE,MAAM,CAACmxE,QAAP,GAAkB,CAACC,aAAa,CAACpxE,MAAD,CAAd,CAAlB;IACAgyE,IAAI,CAAChyE,MAAD,EAASgrE,SAAT,EAAoBhrE,MAAM,CAACuuE,IAA3B,CAAJ;;IACA,IAAI3wE,MAAM,CAACioB,KAAX,EAAkB;MACdH,SAAS,CAAC1lB,MAAD,EAASpC,MAAT,EAAiB,QAAjB,CAAT;IACH,CAFD,MAGK;MACD,IAAIqB,IAAI,GAAG;QAAE62B,MAAM,EAAE,QAAV;QAAoBl4B,MAAM,EAAEA;MAA5B,CAAX;MACAoC,MAAM,CAAC+rB,OAAP,CAAe,SAAf,EAA0B9sB,IAA1B;IACH;EACJ,CAXD,MAYK;IACDymB,SAAS,CAAC1lB,MAAD,EAASpC,MAAT,EAAiB,QAAjB,CAAT;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS++E,cAAT,EACA;AACA38E,MAFA,EAEQpC,MAFR,EAEgB2wE,IAFhB,EAEsBuJ,SAFtB,EAEiC;EAC7B,IAAI,CAAC37E,uEAAiB,CAACyB,MAAM,CAACu9E,OAAR,CAAtB,EAAwC;IACpCjE,YAAY,CAACl3E,MAAD,EAAS83E,SAAT,EAAoB,IAApB,EAA0Bl6E,MAAM,CAACu9E,OAAjC,CAAZ;IACA,IAAIl8E,IAAI,GAAG;MAAE62B,MAAM,EAAE,SAAV;MAAqBl4B,MAAM,EAAEA;IAA7B,CAAX;IACAoC,MAAM,CAAC+rB,OAAP,CAAe,SAAf,EAA0B9sB,IAA1B;EACH,CAJD,MAKK;IACDymB,SAAS,CAAC1lB,MAAD,EAASpC,MAAT,EAAiB,SAAjB,CAAT;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS8nB,SAAT,CAAmB1lB,MAAnB,EAA2BpC,MAA3B,EAAmCk4B,MAAnC,EAA2C;EACvCohD,YAAY,CAACl3E,MAAD,EAAS,OAAT,EAAkBpC,MAAlB,CAAZ;EACA,IAAIqB,IAAI,GAAG;IAAE62B,MAAM,EAAEA,MAAV;IAAkBjQ,KAAK,EAAEjoB,MAAM,CAACioB;EAAhC,CAAX;EACA7lB,MAAM,CAAC+rB,OAAP,CAAe,SAAf,EAA0B9sB,IAA1B;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASuyE,MAAT,EACA;AACAxxE,MAFA,EAEQpF,KAFR,EAEe2zE,IAFf,EAEqBuP,YAFrB,EAEmCvM,eAFnC,EAEoDF,aAFpD,EAEmE;EAC/D;EACA,IAAIv2E,IAAI,GAAG;IACPg7B,MAAM,EAAE,QADD;IACWy4C,IAAI,EAAEA,IADjB;IACuBuP,YAAY,EAAEA,YADrC;IACmDvM,eAAe,EAAEA,eADpE;IACqFF,aAAa,EAAEA,aADpG;IAEPv2E,IAAI,EAAEkF,MAAM,CAACmxE;EAFN,CAAX;EAIAoK,UAAU,CAACv7E,MAAD,EAASlF,IAAT,EAAeijF,aAAf,EAA8BnjF,KAA9B,CAAV;AACH;AACD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASmjF,aAAT,CAAuB/9E,MAAvB,EAA+BpC,MAA/B,EAAuChD,KAAvC,EAA8C;EAC1C,IAAI,CAACuB,uEAAiB,CAACyB,MAAM,CAAC8zE,KAAR,CAAtB,EAAsC;IAClC1xE,MAAM,CAACgb,MAAP,CAAcpgB,KAAd,EAAqBgD,MAArB;IACA,IAAIqB,IAAI,GAAG;MAAE62B,MAAM,EAAE,QAAV;MAAoBl4B,MAAM,EAAEA;IAA5B,CAAX;IACAoC,MAAM,CAAC+rB,OAAP,CAAe,SAAf,EAA0B9sB,IAA1B;EACH,CAJD,MAKK;IACDymB,SAAS,CAAC1lB,MAAD,EAASpC,MAAT,EAAiB,QAAjB,CAAT;EACH;AACJ;AACD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS68E,QAAT,CAAkBz6E,MAAlB,EAA0BuuE,IAA1B,EAAgC9kB,KAAhC,EAAuC;EACnC,IAAIu0B,WAAW,GAAGh+E,MAAM,CAACwzE,YAAP,CAAoBwK,WAApB,GAAkCh+E,MAAM,CAACwzE,YAAP,CAAoBwK,WAAtD,GAAoEh+E,MAAM,CAACwzE,YAAP,CAAoBxvD,GAA1G,CADmC,CAEnC;;EACA,IAAIlpB,IAAI,GAAG;IAAE,UAAU,UAAZ;IAAwB,QAAQyzE,IAAhC;IAAsC,SAAS9kB,KAA/C;IAAsD,QAAQzpD,MAAM,CAACmxE;EAArE,CAAX;EACA,IAAIjtD,SAAS,GAAG;IAAEppB,IAAI,EAAEA,IAAR;IAAcqpB,MAAM,EAAE;EAAtB,CAAhB;EACAnkB,MAAM,CAAC+rB,OAAP,CAAe,gBAAf,EAAiC7H,SAAjC,EAA4C,UAAU+5D,YAAV,EAAwB;IAChE,IAAI,CAACA,YAAY,CAAC95D,MAAlB,EAA0B;MACtB,IAAI+5D,IAAI,GAAGr9E,mEAAa,CAAC,MAAD,EAAS;QAC7BiI,EAAE,EAAE9I,MAAM,CAACU,OAAP,CAAeoI,EAAf,GAAoB,eADK;QAE7B4jB,KAAK,EAAE;UAAEoJ,MAAM,EAAEkoD,WAAV;UAAuBt3D,MAAM,EAAE,MAA/B;UAAuCtL,IAAI,EAAE,cAA7C;UAA6D,YAAY;QAAzE;MAFsB,CAAT,CAAxB;MAIA,IAAI8sC,KAAK,GAAGrnD,mEAAa,CAAC,OAAD,EAAU;QAC/BiI,EAAE,EAAE9I,MAAM,CAACU,OAAP,CAAeoI,EAAf,GAAoB,aADO;QAE/B4jB,KAAK,EAAE;UAAEtR,IAAI,EAAE,eAAR;UAAyB9f,KAAK,EAAEygB,IAAI,CAAC2rB,SAAL,CAAeu2C,YAAY,CAACnjF,IAA5B,CAAhC;UAAmEuQ,IAAI,EAAE;QAAzE;MAFwB,CAAV,CAAzB;MAIA6yE,IAAI,CAAC38E,WAAL,CAAiB2mD,KAAjB;MACAloD,MAAM,CAACU,OAAP,CAAea,WAAf,CAA2B28E,IAA3B;MACAh+E,QAAQ,CAACi+E,KAAT,CAAeC,SAAf,CAAyB,cAAzB,EAAyCC,MAAzC;MACAr+E,MAAM,CAACU,OAAP,CAAeouB,WAAf,CAA2BovD,IAA3B;IACH;EACJ,CAfD;AAgBH,EAED;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAShH,YAAT,CAAsBl3E,MAAtB,EAA8B6S,IAA9B,EAAoCtS,CAApC,EAAuC46E,OAAvC,EAAgDmD,YAAhD,EAA8D;EAC1D,IAAI9xE,OAAO,GAAG+xE,UAAU,CAACv+E,MAAD,EAAS6S,IAAT,EAAetS,CAAf,EAAkB46E,OAAlB,EAA2BmD,YAA3B,CAAxB;;EACA,IAAIniF,uEAAiB,CAAC6D,MAAM,CAACo9E,SAAR,CAArB,EAAyC;IACrCp9E,MAAM,CAACo9E,SAAP,GAAmB,IAAInc,0DAAJ,CAAW;MAC1Bud,UAAU,EAAEC,aAAa,CAAC5kF,IAAd,CAAmB,IAAnB,EAAyBmG,MAAzB,EAAiCwM,OAAO,CAACkyE,UAAzC,CADc;MAE1BC,WAAW,EAAE,UAAU1/E,IAAV,EAAgB;QACzB2/E,uBAAuB,CAAC5+E,MAAD,EAASA,MAAM,CAACo9E,SAAhB,EAA2Bn+E,IAA3B,EAAiCuN,OAAO,CAACkyE,UAAzC,CAAvB;MACH,CAJyB;MAK1Bx4D,MAAM,EAAE1Z,OAAO,CAAC0Z,MALU;MAM1B24D,OAAO,EAAEryE,OAAO,CAACqyE,OANS;MAO1BC,OAAO,EAAEtyE,OAAO,CAACsyE,OAPS;MAQ1BC,iBAAiB,EAAE;QAAEC,MAAM,EAAE;MAAV,CARO;MAS1BC,aAAa,EAAE,IATW;MAU1BC,aAAa,EAAE,IAVW;MAW1B7B,OAAO,EAAE,IAXiB;MAY1B8B,aAAa,EAAE,IAZW;MAa1BC,OAAO,EAAE,IAbiB;MAc1BppD,MAAM,EAAEh2B,MAAM,CAACq/E,WAAP,GAAqBr/E,MAAM,CAACq/E,WAA5B,GAA0C,MAAMr/E,MAAM,CAACU,OAAP,CAAeoI,EAd7C;MAe1B8sE,QAAQ,EAAEF,WAAW,CAAC11E,MAAD,EAASA,MAAM,CAACg2E,QAAP,GAAkB5Q,SAAlB,GAA8BF,UAAvC,CAfK;MAgB1Bz2B,KAAK,EAAE,OAhBmB;MAiB1BntC,IAAI,EAAEkL,OAAO,CAAClL,IAjBY;MAkB1BM,KAAK,EAAE4K,OAAO,CAAC5K,KAlBW;MAmB1Bqc,SAAS,EAAEje,MAAM,CAACie,SAnBQ;MAoB1BqhE,mBAAmB,EAAEt/E,MAAM,CAACs/E,mBApBF;MAqB1BlhE,MAAM,EAAEpe,MAAM,CAACoe;IArBW,CAAX,CAAnB;IAuBApe,MAAM,CAACo9E,SAAP,CAAiB14C,gBAAjB,GAAoC,IAApC;IACA1kC,MAAM,CAACo9E,SAAP,CAAiBp4C,QAAjB,CAA0B,MAAMhlC,MAAM,CAACU,OAAP,CAAeoI,EAArB,GAA0Bk7D,SAApD;EACH,CA1BD,MA2BK;IACDub,aAAa,CAACv/E,MAAD,EAASwM,OAAT,CAAb;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASqxE,eAAT,CAAyB79E,MAAzB,EAAiC6S,IAAjC,EAAuCyrE,YAAvC,EAAqDhP,OAArD,EAA8D;EAC1D,IAAIkQ,UAAU,GAAGC,aAAa,CAACz/E,MAAD,EAAS6S,IAAT,EAAeyrE,YAAf,EAA6BhP,OAA7B,CAA9B;EACAtvE,MAAM,CAAC0/E,WAAP,GAAqB,KAArB;;EACA,IAAIvjF,uEAAiB,CAAC6D,MAAM,CAAC2/E,YAAR,CAArB,EAA4C;IACxC3/E,MAAM,CAAC2/E,YAAP,GAAsB,IAAI1e,0DAAJ,CAAW;MAC7Bud,UAAU,EAAEoB,aAAa,CAAC/lF,IAAd,CAAmB,IAAnB,EAAyBmG,MAAzB,EAAiCw/E,UAAU,CAACd,UAA5C,CADiB;MAE7BC,WAAW,EAAE,UAAU1/E,IAAV,EAAgB;QACzB2/E,uBAAuB,CAAC5+E,MAAD,EAASA,MAAM,CAAC2/E,YAAhB,EAA8B1gF,IAA9B,EAAoCugF,UAAU,CAACd,UAA/C,CAAvB;MACH,CAJ4B;MAK7BG,OAAO,EAAEW,UAAU,CAACX,OALS;MAM7B34D,MAAM,EAAEs5D,UAAU,CAACt5D,MANU;MAO7Bg5D,aAAa,EAAE,IAPc;MAQ7BC,aAAa,EAAE,IARc;MAS7BJ,iBAAiB,EAAE;QAAEC,MAAM,EAAE;MAAV,CATU;MAU7BhpD,MAAM,EAAEh2B,MAAM,CAACq/E,WAAP,GAAqBr/E,MAAM,CAACq/E,WAA5B,GAA0C,MAAMr/E,MAAM,CAACU,OAAP,CAAeoI,EAV1C;MAW7B8sE,QAAQ,EAAEF,WAAW,CAAC11E,MAAD,EAASA,MAAM,CAACg2E,QAAP,GAAkB5Q,SAAlB,GAA8BF,UAAvC,CAXQ;MAY7BjnD,SAAS,EAAEje,MAAM,CAACie,SAZW;MAa7BghE,aAAa,EAAE,IAbc;MAc7BG,OAAO,EAAE,IAdoB;MAe7B3wC,KAAK,EAAE,GAfsB;MAgB7BqwC,OAAO,EAAEU,UAAU,CAACV,OAhBS;MAiB7Bx9E,IAAI,EAAEk+E,UAAU,CAACl+E,IAjBY;MAkB7BM,KAAK,EAAE49E,UAAU,CAAC59E,KAlBW;MAmB7B09E,mBAAmB,EAAEt/E,MAAM,CAACs/E,mBAnBC;MAoB7BlhE,MAAM,EAAEpe,MAAM,CAACoe;IApBc,CAAX,CAAtB;IAsBApe,MAAM,CAAC2/E,YAAP,CAAoBj7C,gBAApB,GAAuC,IAAvC;IACA1kC,MAAM,CAAC2/E,YAAP,CAAoB36C,QAApB,CAA6B,MAAMhlC,MAAM,CAACU,OAAP,CAAeoI,EAArB,GAA0Bq7D,cAAvD;EACH,CAzBD,MA0BK;IACDnkE,MAAM,CAAC2/E,YAAP,CAAoBz5D,MAApB,GAA6Bs5D,UAAU,CAACt5D,MAAxC;IACAlmB,MAAM,CAAC2/E,YAAP,CAAoB/9E,KAApB,GAA4B49E,UAAU,CAAC59E,KAAvC;IACA5B,MAAM,CAAC2/E,YAAP,CAAoBr+E,IAApB,GAA2Bk+E,UAAU,CAACl+E,IAAtC;IACAtB,MAAM,CAAC2/E,YAAP,CAAoB/9E,KAApB,GAA4B49E,UAAU,CAAC59E,KAAvC;IACA5B,MAAM,CAAC2/E,YAAP,CAAoBd,OAApB,GAA8BW,UAAU,CAACX,OAAzC;IACA7+E,MAAM,CAAC2/E,YAAP,CAAoBb,OAApB,GAA8BU,UAAU,CAACV,OAAzC;IACA9+E,MAAM,CAAC2/E,YAAP,CAAoB1hE,SAApB,GAAgCje,MAAM,CAACie,SAAvC;IACAje,MAAM,CAAC2/E,YAAP,CAAoBvhE,MAApB,GAA6Bpe,MAAM,CAACoe,MAApC;IACApe,MAAM,CAAC2/E,YAAP,CAAoBnB,UAApB,GAAiCoB,aAAa,CAAC/lF,IAAd,CAAmB,IAAnB,EAAyBmG,MAAzB,EAAiCw/E,UAAU,CAACd,UAA5C,CAAjC;;IACA1+E,MAAM,CAAC2/E,YAAP,CAAoBhB,WAApB,GAAkC,UAAU1/E,IAAV,EAAgB;MAC9C2/E,uBAAuB,CAAC5+E,MAAD,EAASA,MAAM,CAAC2/E,YAAhB,EAA8B1gF,IAA9B,EAAoCugF,UAAU,CAACd,UAA/C,CAAvB;IACH,CAFD;;IAGA1+E,MAAM,CAAC2/E,YAAP,CAAoB3tD,QAApB;IACAhyB,MAAM,CAAC2/E,YAAP,CAAoBE,IAApB;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,sBAAT,CAAgC9/E,MAAhC,EAAwC+/E,SAAxC,EAAmD9gF,IAAnD,EAAyDy/E,UAAzD,EAAqE;EACjE,IAAIx6D,SAAS,GAAG;IACZC,MAAM,EAAEllB,IAAI,CAACklB,MADD;IACS67D,SAAS,EAAEtB,UADpB;IACgCuB,WAAW,EAAEF;EAD7C,CAAhB;EAGA//E,MAAM,CAAC+rB,OAAP,CAAe,iBAAf,EAAkC7H,SAAlC,EAA6C,UAAUg8D,SAAV,EAAqB;IAC9DjhF,IAAI,CAACklB,MAAL,GAAc+7D,SAAS,CAAC/7D,MAAxB;EACH,CAFD;AAGH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASy6D,uBAAT,CAAiC5+E,MAAjC,EAAyC+/E,SAAzC,EAAoD9gF,IAApD,EAA0Dy/E,UAA1D,EAAsE;EAClE,IAAIx6D,SAAS,GAAG;IACZC,MAAM,EAAEllB,IAAI,CAACklB,MADD;IACS87D,WAAW,EAAEF,SADtB;IACiCC,SAAS,EAAEtB;EAD5C,CAAhB;EAGA1+E,MAAM,CAAC+rB,OAAP,CAAe,kBAAf,EAAmC7H,SAAnC,EAA8C,UAAUg8D,SAAV,EAAqB;IAC/DjhF,IAAI,CAACklB,MAAL,GAAc+7D,SAAS,CAAC/7D,MAAxB;;IACA,IAAI,CAACllB,IAAI,CAACklB,MAAN,IAAgBllB,IAAI,CAACkhF,YAArB,KAAuCzB,UAAU,KAAK,QAAhB,IAA8BA,UAAU,KAAK,eAAnF,CAAJ,EAA0G;MACtG1+E,MAAM,CAAC+rB,OAAP,CAAe2/C,aAAf,EAA8B,EAA9B;IACH;EACJ,CALD;AAMH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS0U,gBAAT,CAA0BpgF,MAA1B,EAAkC+/E,SAAlC,EAA6CrB,UAA7C,EAAyD;EACrD,IAAIz/E,IAAI,GAAG;IAAEghF,WAAW,EAAEF,SAAf;IAA0Br/E,OAAO,EAAEq/E,SAAS,CAACr/E,OAA7C;IAAsDs/E,SAAS,EAAEtB;EAAjE,CAAX;EACA1+E,MAAM,CAAC+rB,OAAP,CAAe,WAAf,EAA4B9sB,IAA5B;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASohF,iBAAT,CAA2BrgF,MAA3B,EAAmC+/E,SAAnC,EAA8CrB,UAA9C,EAA0D;EACtD,IAAIz/E,IAAI,GAAG;IAAEghF,WAAW,EAAEF,SAAf;IAA0Br/E,OAAO,EAAEq/E,SAAS,CAACr/E,OAA7C;IAAsDs/E,SAAS,EAAEtB;EAAjE,CAAX;EACA1+E,MAAM,CAAC+rB,OAAP,CAAe,YAAf,EAA6B9sB,IAA7B;AACH,EACD;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASwgF,aAAT,CAAuBz/E,MAAvB,EAA+B6S,IAA/B,EAAqCyrE,YAArC,EAAmDhP,OAAnD,EAA4D;EACxD,IAAI9iE,OAAO,GAAG;IACV0Z,MAAM,EAAE,EADE;IACE24D,OAAO,EAAE,EADX;IACeC,OAAO,EAAE,EADxB;IAC4BJ,UAAU,EAAE;EADxC,CAAd;EAGA,IAAI4B,gBAAJ;EACA,IAAI5+B,IAAJ;EACA,IAAIjmC,KAAJ;;EACAjP,OAAO,CAAClL,IAAR,GAAe,YAAY;IAAE8+E,gBAAgB,CAACpgF,MAAD,EAASA,MAAM,CAAC2/E,YAAhB,EAA8BnzE,OAAO,CAACkyE,UAAtC,CAAhB;EAAoE,CAAjG;;EACAlyE,OAAO,CAAC5K,KAAR,GAAgB,YAAY;IAAEy+E,iBAAiB,CAACrgF,MAAD,EAASA,MAAM,CAAC2/E,YAAhB,EAA8BnzE,OAAO,CAACkyE,UAAtC,CAAjB;EAAqE,CAAnG;;EACA,QAAQ7rE,IAAR;IACI,KAAK,WAAL;MACIrG,OAAO,CAAC0Z,MAAR,GAAiB6uD,aAAa,CAAC/0E,MAAD,EAAS,4BAAT,CAA9B;MACAwM,OAAO,CAACqyE,OAAR,GAAkB,UAAU9J,aAAa,CAAC/0E,MAAD,EAAS,6BAAT,CAAvB,GAAiE,QAAnF;MACAwM,OAAO,CAACsyE,OAAR,GAAkB,CAAC;QACXyB,WAAW,EAAE;UAAEC,SAAS,EAAE,IAAb;UAAmB3B,OAAO,EAAE9J,aAAa,CAAC/0E,MAAD,EAAS,YAAT;QAAzC,CADF;QAEXs7E,KAAK,EAAE,YAAY;UACft7E,MAAM,CAAC2/E,YAAP,CAAoBrC,IAApB;UACAvB,MAAM,CAAC/7E,MAAD,EAASsvE,OAAT,EAAkBtvE,MAAM,CAAC29E,UAAzB,CAAN;QACH;MALU,CAAD,EAOd;QACI4C,WAAW,EAAE;UAAE1B,OAAO,EAAE9J,aAAa,CAAC/0E,MAAD,EAAS,WAAT;QAAxB,CADjB;QAEIs7E,KAAK,EAAE,YAAY;UACft7E,MAAM,CAAC2/E,YAAP,CAAoBrC,IAApB;UACAt9E,MAAM,CAACo9E,SAAP,CAAiBE,IAAjB;QACH;MALL,CAPc,CAAlB;MAcA9wE,OAAO,CAACkyE,UAAR,GAAqB,kBAArB;MACA;;IACJ,KAAK,gBAAL;MACIlyE,OAAO,CAACkyE,UAAR,GAAqB,iBAArB;MACA1+E,MAAM,CAACs+E,YAAP,GAAsBA,YAAtB;MACA58B,IAAI,GAAG1hD,MAAM,CAACs+E,YAAP,CAAoBt+E,MAAM,CAAC49E,UAA3B,CAAP;MACAniE,KAAK,GAAGimC,IAAI,CAAC1vC,WAAL,CAAiB,GAAjB,CAAR;MACA0vC,IAAI,GAAGjmC,KAAK,KAAK,CAAC,CAAX,GAAeimC,IAAf,GAAsBA,IAAI,CAACt0C,SAAL,CAAeqO,KAAf,CAA7B;MACAjP,OAAO,CAAC0Z,MAAR,GAAiB6uD,aAAa,CAAC/0E,MAAD,EAAS,kBAAT,CAA9B;MACAsgF,gBAAgB,GAAG,UAAUvL,aAAa,CAAC/0E,MAAD,EAAS,mBAAT,CAAvB,GAAuD,QAA1E;MACAwM,OAAO,CAACqyE,OAAR,GAAmByB,gBAAD,CAAmB9kF,OAAnB,CAA2B,KAA3B,EAAkCkmD,IAAlC,CAAlB;;MACAl1C,OAAO,CAAC5K,KAAR,GAAgB,YAAY;QACxB,IAAI,CAAC5B,MAAM,CAACo4E,SAAR,IAAqBp4E,MAAM,CAAC+3E,cAAP,CAAsBh9E,MAAtB,KAAiC,CAA1D,EAA6D;UACzD,IAAIkE,IAAI,GAAG;YAAE60E,WAAW,EAAE9zE,MAAM,CAACi4E;UAAtB,CAAX;UACAj4E,MAAM,CAAC+rB,OAAP,CAAe,aAAf,EAA8B9sB,IAA9B;UACAe,MAAM,CAACo4E,SAAP,GAAmBp4E,MAAM,CAAC22E,UAAP,GAAoB,KAAvC;QACH;;QACD0J,iBAAiB,CAACrgF,MAAD,EAASA,MAAM,CAAC2/E,YAAhB,EAA8BnzE,OAAO,CAACkyE,UAAtC,CAAjB;MACH,CAPD;;MAQAlyE,OAAO,CAACsyE,OAAR,GAAkB,CACd;QACIyB,WAAW,EAAE;UAAEC,SAAS,EAAE,IAAb;UAAmB3B,OAAO,EAAE9J,aAAa,CAAC/0E,MAAD,EAAS,YAAT;QAAzC,CADjB;QAEIs7E,KAAK,EAAE,YAAY;UACft7E,MAAM,CAAC+3E,cAAP,CAAsBv4E,IAAtB,CAA2BQ,MAAM,CAACs+E,YAAP,CAAoBt+E,MAAM,CAAC49E,UAA3B,CAA3B;UACA59E,MAAM,CAACk4E,gBAAP,CAAwB14E,IAAxB,CAA6Bo5E,gBAAgB,CAAC54E,MAAD,EAASA,MAAM,CAACs+E,YAAP,CAAoBt+E,MAAM,CAAC49E,UAA3B,CAAT,CAA7C;UACA59E,MAAM,CAAC49E,UAAP;;UACA,IAAIU,YAAY,CAACt+E,MAAM,CAAC49E,UAAR,CAAhB,EAAqC;YACjC,IAAI6C,MAAM,GAAGzgF,MAAM,CAACs+E,YAAP,CAAoBt+E,MAAM,CAAC49E,UAA3B,CAAb;YACA,IAAI8C,QAAQ,GAAGD,MAAM,CAACzuE,WAAP,CAAmB,GAAnB,CAAf;YACAyuE,MAAM,GAAGC,QAAQ,KAAK,CAAC,CAAd,GAAkBD,MAAlB,GAA2BA,MAAM,CAACrzE,SAAP,CAAiBszE,QAAjB,CAApC;YACA1gF,MAAM,CAAC2/E,YAAP,CAAoBd,OAApB,GAA+ByB,gBAAD,CAAmB9kF,OAAnB,CAA2B,KAA3B,EAAkCilF,MAAlC,CAA9B;YACAzgF,MAAM,CAAC2/E,YAAP,CAAoBE,IAApB;UACH,CAND,MAOK;YACD7/E,MAAM,CAAC2/E,YAAP,CAAoBrC,IAApB;YACA,IAAInN,UAAU,GAAGnwE,MAAM,CAAC22E,UAAP,GAAoB32E,MAAM,CAACo3E,QAA3B,GAAsCp3E,MAAM,CAACmwE,UAA9D;YACA,IAAI5B,IAAI,GAAGvuE,MAAM,CAAC22E,UAAP,GAAoB32E,MAAM,CAAC0tE,QAA3B,GAAwC1tE,MAAM,CAAC42E,UAAP,KAAsB,EAAvB,GAA6B52E,MAAM,CAACuuE,IAApC,GAC9CvuE,MAAM,CAAC42E,UADX;YAEA,IAAI9gD,MAAM,GAAG91B,MAAM,CAAC22E,UAAP,GAAoB,MAApB,GAA6B32E,MAAM,CAAC2yE,UAAjD;YACAoE,KAAK,CAAC/2E,MAAD,EAASmwE,UAAT,EAAqBnwE,MAAM,CAAC+3E,cAA5B,EAA4CxJ,IAA5C,EAAkDz4C,MAAlD,EAA0D91B,MAAM,CAAC+3E,cAAjE,EAAiF/3E,MAAM,CAACk4E,gBAAxF,CAAL;UACH;QACJ;MArBL,CADc,EAwBd;QACIqI,WAAW,EAAE;UAAE1B,OAAO,EAAE9J,aAAa,CAAC/0E,MAAD,EAAS,WAAT;QAAxB,CADjB;QAEIs7E,KAAK,EAAE,YAAY;UACft7E,MAAM,CAAC49E,UAAP;;UACA,IAAIU,YAAY,CAACt+E,MAAM,CAAC49E,UAAR,CAAhB,EAAqC;YACjC,IAAI+C,MAAM,GAAG3gF,MAAM,CAACs+E,YAAP,CAAoBt+E,MAAM,CAAC49E,UAA3B,CAAb;YACA,IAAIgD,GAAG,GAAGD,MAAM,CAAC3uE,WAAP,CAAmB,GAAnB,CAAV;YACA2uE,MAAM,GAAGC,GAAG,KAAK,CAAC,CAAT,GAAaD,MAAb,GAAsBA,MAAM,CAACvzE,SAAP,CAAiBwzE,GAAjB,CAA/B;YACA5gF,MAAM,CAAC2/E,YAAP,CAAoBd,OAApB,GAA+ByB,gBAAD,CAAmB9kF,OAAnB,CAA2B,KAA3B,EAAkCmlF,MAAlC,CAA9B;YACA3gF,MAAM,CAAC2/E,YAAP,CAAoBE,IAApB;UACH,CAND,MAOK;YACD7/E,MAAM,CAAC2/E,YAAP,CAAoBrC,IAApB;;YACA,IAAIt9E,MAAM,CAAC+3E,cAAP,CAAsBh9E,MAAtB,KAAiC,CAArC,EAAwC;cACpC,IAAI+6B,MAAM,GAAG91B,MAAM,CAAC22E,UAAP,GAAoB,MAApB,GAA6B32E,MAAM,CAAC2yE,UAAjD;cACA,IAAIxC,UAAU,GAAGnwE,MAAM,CAAC22E,UAAP,GAAoB32E,MAAM,CAACo3E,QAA3B,GAAsCp3E,MAAM,CAACmwE,UAA9D;cACA,IAAI5B,IAAI,GAAGvuE,MAAM,CAAC22E,UAAP,GAAoB32E,MAAM,CAAC0tE,QAA3B,GAAwC1tE,MAAM,CAAC42E,UAAP,KAAsB,EAAvB,GAA6B52E,MAAM,CAACuuE,IAApC,GAC9CvuE,MAAM,CAAC42E,UADX;cAEAG,KAAK,CAAC/2E,MAAD,EAASmwE,UAAT,EAAqBnwE,MAAM,CAAC+3E,cAA5B,EAA4CxJ,IAA5C,EAAkDz4C,MAAlD,EAA0D91B,MAAM,CAAC+3E,cAAjE,EAAiF/3E,MAAM,CAACk4E,gBAAxF,CAAL;YACH;UACJ;QACJ;MArBL,CAxBc,CAAlB;MAgDA;;IACJ,KAAK,aAAL;MACI1rE,OAAO,CAACkyE,UAAR,GAAqB,cAArB;MACAlyE,OAAO,CAAC0Z,MAAR,GAAiB6uD,aAAa,CAAC/0E,MAAD,EAAS,cAAT,CAA9B;MACAwM,OAAO,CAACqyE,OAAR,GAAkB7+E,MAAM,CAAC6gF,UAAP,CAAkB,CAAlB,EAAqBzlE,IAArB,GAA4B,iCAA5B,GACb25D,aAAa,CAAC/0E,MAAD,EAAS,eAAT,CADA,GAC6B,QAD/C;MAEAwM,OAAO,CAAClL,IAAR,GAAew/E,WAAW,CAACjnF,IAAZ,CAAiB,IAAjB,EAAuBmG,MAAvB,CAAf;;MACAwM,OAAO,CAAC5K,KAAR,GAAgB,YAAY;QACxB5B,MAAM,CAAC+gF,aAAP,GAAuB,KAAvB;QACAC,aAAa,CAAChhF,MAAD,CAAb;QACAqgF,iBAAiB,CAACrgF,MAAD,EAASA,MAAM,CAAC2/E,YAAhB,EAA8BnzE,OAAO,CAACkyE,UAAtC,CAAjB;MACH,CAJD;;MAKAlyE,OAAO,CAACsyE,OAAR,GAAkB,CACd;QACIyB,WAAW,EAAE;UAAEC,SAAS,EAAE,IAAb;UAAmB3B,OAAO,EAAE9J,aAAa,CAAC/0E,MAAD,EAAS,kBAAT;QAAzC,CADjB;QAEIs7E,KAAK,EAAE,YAAY;UACf2F,cAAc,CAACjhF,MAAD,EAAS,IAAT,CAAd;QACH;MAJL,CADc,EAOd;QACIugF,WAAW,EAAE;UAAEC,SAAS,EAAE,IAAb;UAAmB3B,OAAO,EAAE9J,aAAa,CAAC/0E,MAAD,EAAS,gBAAT;QAAzC,CADjB;QAEIs7E,KAAK,EAAE,YAAY;UACf2F,cAAc,CAACjhF,MAAD,EAAS,KAAT,CAAd;QACH;MAJL,CAPc,EAad;QACIugF,WAAW,EAAE;UAAEC,SAAS,EAAE,IAAb;UAAmB3B,OAAO,EAAE9J,aAAa,CAAC/0E,MAAD,EAAS,aAAT;QAAzC,CADjB;QAEIs7E,KAAK,EAAE,YAAY;UACf,IAAI5xB,KAAK,GAAG,CAAZ;;UACA,IAAI1pD,MAAM,CAAC0/E,WAAX,EAAwB;YACpBh2B,KAAK,GAAG1pD,MAAM,CAAC6gF,UAAP,CAAkB9lF,MAA1B;YACAiF,MAAM,CAAC6gF,UAAP,GAAoB,EAApB;YACAG,aAAa,CAAChhF,MAAD,CAAb;UACH,CAJD,MAKK;YACD0pD,KAAK,GAAG,CAAR;YACA1pD,MAAM,CAAC6gF,UAAP,CAAkB/lE,MAAlB,CAAyB,CAAzB,EAA4B,CAA5B;;YACA,IAAI9a,MAAM,CAAC6gF,UAAP,CAAkB9lF,MAAlB,KAA6B,CAAjC,EAAoC;cAChC8iF,eAAe,CAAC79E,MAAD,EAAS,aAAT,CAAf;YACH,CAFD,MAGK;cACDghF,aAAa,CAAChhF,MAAD,CAAb;YACH;UACJ;;UACDA,MAAM,CAACgb,MAAP,CAAcswD,UAAd,EAA0B;YAAE5hB,KAAK,EAAEA;UAAT,CAA1B;QACH;MApBL,CAbc,CAAlB;MAoCA;EArIR;;EAuIA,OAAOl9C,OAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASy0E,cAAT,CAAwBjhF,MAAxB,EAAgCkhF,UAAhC,EAA4C;EACxC,IAAIlhF,MAAM,CAAC0/E,WAAX,EAAwB;IACpB,IAAIwB,UAAJ,EAAgB;MACZC,aAAa,CAACnhF,MAAD,CAAb;IACH,CAFD,MAGK;MACDohF,YAAY,CAACphF,MAAD,CAAZ;IACH;;IACDghF,aAAa,CAAChhF,MAAD,CAAb;EACH,CARD,MASK;IACDA,MAAM,CAACqhF,SAAP,CAAiB7hF,IAAjB,CAAsB;MAClBs2B,MAAM,EAAEorD,UAAU,GAAG,UAAH,GAAgB,SADhB;MAElBpO,IAAI,EAAE9yE,MAAM,CAAC6gF,UAAP,CAAkB,CAAlB;IAFY,CAAtB;IAIA7gF,MAAM,CAACw5E,SAAP,CAAiB8H,KAAjB,CAAuBthF,MAAM,CAAC6gF,UAAP,CAAkB,CAAlB,CAAvB;IACA7gF,MAAM,CAAC6gF,UAAP,CAAkB/lE,MAAlB,CAAyB,CAAzB,EAA4B,CAA5B;;IACA,IAAI9a,MAAM,CAAC6gF,UAAP,CAAkB9lF,MAAlB,KAA6B,CAAjC,EAAoC;MAChC8iF,eAAe,CAAC79E,MAAD,EAAS,aAAT,CAAf;IACH,CAFD,MAGK;MACDghF,aAAa,CAAChhF,MAAD,CAAb;IACH;EACJ;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASghF,aAAT,CAAuBhhF,MAAvB,EAA+B;EAC3B,IAAIqU,IAAI,GAAG,IAAX;;EACA,IAAIrU,MAAM,CAAC+gF,aAAX,EAA0B;IACtB/gF,MAAM,CAAC+gF,aAAP,GAAuB,KAAvB;EACH,CAFD,MAGK;IACD1sE,IAAI,GAAG,KAAP;EACH;;EACD,IAAI4Y,GAAG,GAAG+B,4DAAM,CAAC,iBAAD,EAAoBhvB,MAAM,CAAC2/E,YAAP,CAAoBj/E,OAAxC,CAAhB;;EACA,IAAIusB,GAAJ,EAAS;IACLvB,4DAAM,CAACuB,GAAD,CAAN;EACH;;EACD,IAAI5Y,IAAJ,EAAU;IACNrU,MAAM,CAAC2/E,YAAP,CAAoBrC,IAApB;EACH,CAFD,MAGK;IACDt9E,MAAM,CAAC6gF,UAAP,GAAoB,EAApB;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,WAAT,CAAqB9gF,MAArB,EAA6Bf,IAA7B,EAAmC;EAC/Be,MAAM,CAAC+gF,aAAP,GAAuB,IAAvB;EACA,IAAIQ,SAAS,GAAGpmF,8DAAQ,CAAC,SAAD,EAAY8D,IAAZ,CAAxB;EACA,IAAIuiF,SAAS,GAAGxyD,4DAAM,CAAC,gBAAD,EAAmBuyD,SAAnB,CAAtB;EACA,IAAIE,cAAc,GAAGzhF,MAAM,CAACa,aAAP,CAAqB,KAArB,EAA4B;IAC7C0rB,SAAS,EAAE;EADkC,CAA5B,CAArB;EAGA,IAAIm1D,QAAQ,GAAG1hF,MAAM,CAACa,aAAP,CAAqB,OAArB,EAA8B;IACzCiI,EAAE,EAAE9I,MAAM,CAACU,OAAP,CAAeoI,EAAf,GAAoB;EADiB,CAA9B,CAAf;EAGA24E,cAAc,CAAClgF,WAAf,CAA2BmgF,QAA3B;EACAF,SAAS,CAACjgF,WAAV,CAAsBkgF,cAAtB;EACA,IAAIE,WAAW,GAAG,IAAIngB,6DAAJ,CAAa;IAC3BogB,KAAK,EAAE7M,aAAa,CAAC/0E,MAAD,EAAS,gBAAT,CADO;IAE3BoyC,MAAM,EAAE,UAAUnzC,IAAV,EAAgB;MACpBe,MAAM,CAAC0/E,WAAP,GAAqBzgF,IAAI,CAAC4iF,OAA1B;IACH;EAJ0B,CAAb,CAAlB;EAMAF,WAAW,CAAC38C,QAAZ,CAAqB,MAAMhlC,MAAM,CAACU,OAAP,CAAeoI,EAArB,GAA0B,WAA/C;EACAs3E,gBAAgB,CAACpgF,MAAD,EAASA,MAAM,CAAC2/E,YAAhB,EAA8B,cAA9B,CAAhB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASwB,aAAT,CAAuBnhF,MAAvB,EAA+B;EAC3B,OAAOA,MAAM,CAAC6gF,UAAP,CAAkB9lF,MAAlB,KAA6B,CAApC,EAAuC;IACnCiF,MAAM,CAACqhF,SAAP,CAAiB7hF,IAAjB,CAAsB;MAAEs2B,MAAM,EAAE,UAAV;MAAsBg9C,IAAI,EAAE9yE,MAAM,CAAC6gF,UAAP,CAAkB,CAAlB;IAA5B,CAAtB;IACA7gF,MAAM,CAACw5E,SAAP,CAAiB8H,KAAjB,CAAuBthF,MAAM,CAAC6gF,UAAP,CAAkB,CAAlB,CAAvB;IACA7gF,MAAM,CAAC6gF,UAAP,CAAkB/lE,MAAlB,CAAyB,CAAzB,EAA4B,CAA5B;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASsmE,YAAT,CAAsBphF,MAAtB,EAA8B;EAC1B,OAAOA,MAAM,CAAC6gF,UAAP,CAAkB9lF,MAAlB,KAA6B,CAApC,EAAuC;IACnCiF,MAAM,CAACqhF,SAAP,CAAiB7hF,IAAjB,CAAsB;MAAEs2B,MAAM,EAAE,SAAV;MAAqBg9C,IAAI,EAAE9yE,MAAM,CAAC6gF,UAAP,CAAkB,CAAlB;IAA3B,CAAtB;IACA7gF,MAAM,CAACw5E,SAAP,CAAiB8H,KAAjB,CAAuBthF,MAAM,CAAC6gF,UAAP,CAAkB,CAAlB,CAAvB;IACA7gF,MAAM,CAAC6gF,UAAP,CAAkB/lE,MAAlB,CAAyB,CAAzB,EAA4B,CAA5B;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASgnE,UAAT,CAAoB9hF,MAApB,EAA4B;EACxB,IAAIitB,GAAG,GAAG+B,4DAAM,CAAC,UAAD,EAAahvB,MAAM,CAACo9E,SAAP,CAAiB18E,OAA9B,CAAhB;EACAusB,GAAG,CAACprB,KAAJ;EACAorB,GAAG,CAAC3xB,KAAJ,GAAY,EAAZ;EACA,IAAI8F,GAAG,GAAG6rB,GAAG,CAAC3xB,KAAJ,CAAUP,MAApB;EACAkyB,GAAG,CAAC80D,iBAAJ,CAAsB,CAAtB,EAAyB3gF,GAAzB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4gF,kBAAT,CAA4BhiF,MAA5B,EAAoC;EAChC,IAAIitB,GAAG,GAAG+B,4DAAM,CAAC,UAAD,EAAahvB,MAAM,CAACo9E,SAAP,CAAiB18E,OAA9B,CAAhB;;EACA,IAAI,CAACusB,GAAG,CAAC4mB,aAAJ,CAAkB9mB,SAAlB,CAA4BM,QAA5B,CAAqC,mBAArC,CAAL,EAAgE;IAC5D40D,WAAW,CAACh1D,GAAD,EAAM8nD,aAAa,CAAC/0E,MAAD,EAAS,mBAAT,CAAnB,CAAX;EACH;;EACDitB,GAAG,CAAC4mB,aAAJ,CAAkB2pC,kBAAlB,CAAqC77E,SAArC,GAAiD,EAAjD;;EACAsrB,GAAG,CAACi1D,OAAJ,GAAc,YAAY;IACtBC,UAAU,CAACniF,MAAD,EAASitB,GAAT,CAAV;EACH,CAFD;;EAGAA,GAAG,CAACm1D,OAAJ,GAAc,UAAU7hF,CAAV,EAAa;IACvB,IAAIy2E,IAAI,GAAGvgC,UAAU,CAACl2C,CAAD,CAArB;;IACA,IAAIy2E,IAAI,KAAK,EAAb,EAAiB;MACbqL,QAAQ,CAACriF,MAAD,CAAR;IACH;EACJ,CALD;;EAMA8hF,UAAU,CAAC9hF,MAAD,CAAV;EACAogF,gBAAgB,CAACpgF,MAAD,EAASA,MAAM,CAACo9E,SAAhB,EAA2B,eAA3B,CAAhB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASkF,kBAAT,CAA4BtiF,MAA5B,EAAoC;EAChC,IAAIuiF,QAAQ,GAAGvzD,4DAAM,CAAC,SAAD,EAAYhvB,MAAM,CAACo9E,SAAP,CAAiB18E,OAA7B,CAArB;;EACA,IAAI,CAAC6hF,QAAQ,CAAC1uC,aAAT,CAAuB9mB,SAAvB,CAAiCM,QAAjC,CAA0C,mBAA1C,CAAL,EAAqE;IACjE40D,WAAW,CAACM,QAAD,EAAWxN,aAAa,CAAC/0E,MAAD,EAAS,gBAAT,CAAxB,CAAX;EACH;;EACDuiF,QAAQ,CAAC1uC,aAAT,CAAuB2pC,kBAAvB,CAA0C77E,SAA1C,GAAsD,EAAtD;;EACA4gF,QAAQ,CAACL,OAAT,GAAmB,YAAY;IAC3BC,UAAU,CAACniF,MAAD,EAASuiF,QAAT,CAAV;EACH,CAFD;;EAGAA,QAAQ,CAACH,OAAT,GAAmB,UAAU7hF,CAAV,EAAa;IAC5B,IAAIy2E,IAAI,GAAGvgC,UAAU,CAACl2C,CAAD,CAArB;;IACA,IAAIy2E,IAAI,KAAK,EAAb,EAAiB;MACbwL,UAAU,CAACxiF,MAAD,CAAV;IACH;EACJ,CALD;;EAMAyiF,kBAAkB,CAACziF,MAAD,EAASuiF,QAAT,CAAlB;EACAnC,gBAAgB,CAACpgF,MAAD,EAASA,MAAM,CAACo9E,SAAhB,EAA2B,QAA3B,CAAhB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASqF,kBAAT,CAA4BziF,MAA5B,EAAoCuiF,QAApC,EAA8C;EAC1CA,QAAQ,CAAC1gF,KAAT;EACA,IAAI6gF,GAAG,GAAG,EAAV;;EACA,IAAI1iF,MAAM,CAACuqE,MAAP,IAAiB,CAACvqE,MAAM,CAAC2iF,iBAA7B,EAAgD;IAC5C,IAAIlnE,KAAK,GAAGzb,MAAM,CAACm6E,eAAP,CAAuBnoE,WAAvB,CAAmC,GAAnC,CAAZ;IACA0wE,GAAG,GAAIjnE,KAAK,KAAK,CAAC,CAAZ,GAAiBzb,MAAM,CAACm6E,eAAxB,GAA0Cn6E,MAAM,CAACm6E,eAAP,CAAuB/sE,SAAvB,CAAiC,CAAjC,EAAoCqO,KAApC,CAAhD;EACH,CAHD,MAIK;IACDinE,GAAG,GAAG1iF,MAAM,CAACm6E,eAAb;EACH;;EACDoI,QAAQ,CAACjnF,KAAT,GAAiBonF,GAAjB;;EACA,IAAI1iF,MAAM,CAACuqE,MAAP,IAAiBvqE,MAAM,CAAC2iF,iBAAxB,IAA8CJ,QAAQ,CAACjnF,KAAT,CAAe8B,OAAf,CAAuB,GAAvB,MAAgC,CAAC,CAAnF,EAAuF;IACnFmlF,QAAQ,CAACR,iBAAT,CAA2B,CAA3B,EAA8BQ,QAAQ,CAACjnF,KAAT,CAAe0W,WAAf,CAA2B,GAA3B,CAA9B;EACH,CAFD,MAGK;IACDuwE,QAAQ,CAACR,iBAAT,CAA2B,CAA3B,EAA8BQ,QAAQ,CAACjnF,KAAT,CAAeP,MAA7C;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASknF,WAAT,CAAqBh1D,GAArB,EAA0B21D,WAA1B,EAAuC;EACnCvhB,qEAAA,CAAkB;IACd3gE,OAAO,EAAEusB,GADK;IAEdZ,UAAU,EAAE;MACRu2D,WAAW,EAAEA;IADL;EAFE,CAAlB;AAMH;AACD;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASrE,UAAT,CAAoBv+E,MAApB,EAA4B6S,IAA5B,EAAkCtS,CAAlC,EAAqC46E,OAArC,EAA8CmD,YAA9C,EAA4D;EACxD,IAAI9xE,OAAO,GAAG;IACV0Z,MAAM,EAAE,EADE;IACE24D,OAAO,EAAE,EADX;IACeC,OAAO,EAAE,EADxB;IAC4BJ,UAAU,EAAE;EADxC,CAAd;EAGA,IAAI3D,UAAJ;EACA,IAAI8H,eAAJ;EACA,IAAI7F,IAAJ;EACA,IAAI8F,MAAJ;EACA,IAAIC,WAAJ;EACA,IAAI57C,QAAJ;;EACA36B,OAAO,CAAClL,IAAR,GAAe,YAAY;IAAE8+E,gBAAgB,CAACpgF,MAAD,EAASA,MAAM,CAACo9E,SAAhB,EAA2B5wE,OAAO,CAACkyE,UAAnC,CAAhB;EAAiE,CAA9F;;EACAlyE,OAAO,CAAC5K,KAAR,GAAgB,YAAY;IAAEy+E,iBAAiB,CAACrgF,MAAD,EAASA,MAAM,CAACo9E,SAAhB,EAA2B5wE,OAAO,CAACkyE,UAAnC,CAAjB;EAAkE,CAAhG;;EACA7rE,IAAI,GAAIsoE,OAAO,IAAIA,OAAO,CAAC6H,aAAR,KAA0B,IAAtC,GAA8C,qBAA9C,GAAsEnwE,IAA7E;;EACA,QAAQA,IAAR;IACI,KAAK,WAAL;MACIrG,OAAO,CAACkyE,UAAR,GAAqB,eAArB;MACAlyE,OAAO,CAAC0Z,MAAR,GAAiB6uD,aAAa,CAAC/0E,MAAD,EAAS,kBAAT,CAA9B;MACAwM,OAAO,CAACqyE,OAAR,GAAkB,mFAAlB;MACAryE,OAAO,CAACsyE,OAAR,GAAkB,CACd;QACIyB,WAAW,EAAE;UAAEC,SAAS,EAAE,IAAb;UAAmB3B,OAAO,EAAE9J,aAAa,CAAC/0E,MAAD,EAAS,eAAT;QAAzC,CADjB;QAEIs7E,KAAK,EAAE,UAAU/6E,CAAV,EAAa;UAChB,IAAIA,CAAC,CAAC8K,IAAF,KAAW,SAAf,EAA0B;YACtB;UACH;;UACDg3E,QAAQ,CAACriF,MAAD,CAAR;QACH;MAPL,CADc,CAAlB;MAWAwM,OAAO,CAAClL,IAAR,GAAe0gF,kBAAkB,CAACnoF,IAAnB,CAAwB,IAAxB,EAA8BmG,MAA9B,CAAf;MACA;;IACJ,KAAK,QAAL;MACIwM,OAAO,CAACkyE,UAAR,GAAqB,QAArB;;MACA,IAAI1+E,MAAM,CAAC4wE,aAAP,CAAqB71E,MAArB,GAA8B,CAAlC,EAAqC;QACjCyR,OAAO,CAACqyE,OAAR,GAAkB,CAAC,UAAU9J,aAAa,CAAC/0E,MAAD,EAAS,yBAAT,CAAvB,GAA6D,QAA9D,EACbxE,OADa,CACL,KADK,EACEwE,MAAM,CAAC4wE,aAAP,CAAqB71E,MAArB,CAA4Bc,QAA5B,EADF,CAAlB;QAEA2Q,OAAO,CAAC0Z,MAAR,GAAiB6uD,aAAa,CAAC/0E,MAAD,EAAS,wBAAT,CAA9B;MACH,CAJD,MAKK;QACDwM,OAAO,CAACqyE,OAAR,GAAkB,UAAU9J,aAAa,CAAC/0E,MAAD,EAASA,MAAM,CAACuqE,MAAP,GAAgB,gBAAhB,GAAmC,uBAA5C,CAAvB,GAA8F,QAAhH;QACA/9D,OAAO,CAAC0Z,MAAR,GAAiB6uD,aAAa,CAAC/0E,MAAD,EAASA,MAAM,CAACuqE,MAAP,GAAgB,eAAhB,GAAkC,sBAA3C,CAA9B;MACH;;MACD/9D,OAAO,CAACsyE,OAAR,GAAkB,CACd;QACIyB,WAAW,EAAE;UAAEC,SAAS,EAAE,IAAb;UAAmB3B,OAAO,EAAE9J,aAAa,CAAC/0E,MAAD,EAAS,YAAT;QAAzC,CADjB;QAEIs7E,KAAK,EAAE,UAAU/6E,CAAV,EAAa;UAChB0iF,cAAc,CAACjjF,MAAD,CAAd;QACH;MAJL,CADc,EAOd;QACIugF,WAAW,EAAE;UAAE1B,OAAO,EAAE9J,aAAa,CAAC/0E,MAAD,EAAS,WAAT;QAAxB,CADjB;QAEIs7E,KAAK,EAAE,YAAY;UACft7E,MAAM,CAACo9E,SAAP,CAAiBE,IAAjB;QACH;MAJL,CAPc,CAAlB;MAcA;;IACJ,KAAK,QAAL;MACI9wE,OAAO,CAACkyE,UAAR,GAAqB,QAArB;MACAlyE,OAAO,CAAC0Z,MAAR,GAAiB6uD,aAAa,CAAC/0E,MAAD,EAAS,eAAT,CAA9B;MACAwM,OAAO,CAACqyE,OAAR,GAAkB,+EAAlB;MACAryE,OAAO,CAACsyE,OAAR,GAAkB,CACd;QACIyB,WAAW,EAAE;UAAEC,SAAS,EAAE,IAAb;UAAmB3B,OAAO,EAAE9J,aAAa,CAAC/0E,MAAD,EAAS,aAAT;QAAzC,CADjB;QAEIs7E,KAAK,EAAE,UAAU/6E,CAAV,EAAa;UAChB,IAAIA,CAAC,CAAC8K,IAAF,KAAW,SAAf,EAA0B;YACtB;UACH;;UACDm3E,UAAU,CAACxiF,MAAD,CAAV;QACH;MAPL,CADc,CAAlB;MAWAwM,OAAO,CAAClL,IAAR,GAAeghF,kBAAkB,CAACzoF,IAAnB,CAAwB,IAAxB,EAA8BmG,MAA9B,CAAf;MACA;;IACJ,KAAK,SAAL;MACIwM,OAAO,CAACkyE,UAAR,GAAqB,cAArB;MACA1B,IAAI,GAAG,IAAItgE,sEAAJ,CAAyB1c,MAAM,CAACoe,MAAhC,CAAP;MACAykE,eAAe,GAAG7F,IAAI,CAAC9/D,UAAL,CAAgB,IAAI7T,IAAJ,CAAS8xE,OAAO,CAAC+H,QAAjB,CAAhB,EAA4C;QAAEh4E,MAAM,EAAE;MAAV,CAA5C,CAAlB;MACA6vE,UAAU,GAAG,EAAb;;MACA,IAAI,CAAC5+E,uEAAiB,CAACg/E,OAAO,CAACJ,UAAT,CAAtB,EAA4C;QACxCA,UAAU,GAAG,aAAahG,aAAa,CAAC/0E,MAAD,EAAS,YAAT,CAA1B,GAAmD,kBAAnD,GAAwEsqE,KAAxE,GAAgF,KAAhF,GACP2P,cAAc,CAACkB,OAAO,CAACJ,UAAT,CADP,GAC8B,YAD3C;MAEH;;MACDvuE,OAAO,CAAC0Z,MAAR,GAAiBi1D,OAAO,CAAC//D,IAAzB;MACA5O,OAAO,CAACqyE,OAAR,GAAkB,YACd,UADc,GACD9J,aAAa,CAAC/0E,MAAD,EAAS,MAAT,CADZ,GAC+B,kBAD/B,GACoDsqE,KADpD,GAC4D,WAD5D,IAEb6Q,OAAO,CAAC5Q,MAAR,GAAiB,MAAjB,GAA0B,QAFb,IAEyB,IAFzB,IAEiC4Q,OAAO,CAAC5Q,MAAR,GAAiB,MAAjB,GAA0B,QAF3D,IAEuE,YAFvE,GAGd,UAHc,GAGDwK,aAAa,CAAC/0E,MAAD,EAAS,MAAT,CAHZ,GAG+B,wBAH/B,GAG0DsqE,KAH1D,GAGkE,YAHlE,GAId6Q,OAAO,CAAC9nB,IAJM,GAIC,IAJD,GAIQ8nB,OAAO,CAAC9nB,IAJhB,GAIuB,mBAJvB,GAKd,UALc,GAKD0hB,aAAa,CAAC/0E,MAAD,EAAS,UAAT,CALZ,GAKmC,kBALnC,GAKwDsqE,KALxD,GAKgE,WALhE,GAMd6Q,OAAO,CAACh0C,QANM,GAMK,IANL,GAMYg0C,OAAO,CAACh0C,QANpB,GAM+B,YAN/B,GAOd,UAPc,GAOD4tC,aAAa,CAAC/0E,MAAD,EAAS,UAAT,CAPZ,GAOmC,kBAPnC,GAOwDsqE,KAPxD,GAOgE,KAPhE,GAQZuY,eARY,GAQM,YARN,GASZ9H,UATY,GASC,UATnB;MAUAvuE,OAAO,CAACsyE,OAAR,GAAkB,CACd;QACIyB,WAAW,EAAE;UAAEC,SAAS,EAAE,IAAb;UAAmB3B,OAAO,EAAE9J,aAAa,CAAC/0E,MAAD,EAAS,WAAT;QAAzC,CADjB;QAEIs7E,KAAK,EAAE,UAAU/6E,CAAV,EAAa;UAChBP,MAAM,CAACo9E,SAAP,CAAiBE,IAAjB;QACH;MAJL,CADc,CAAlB;MAQA;;IACJ,KAAK,qBAAL;MACI,IAAI6F,OAAJ;MACA32E,OAAO,CAACkyE,UAAR,GAAqB,cAArB;MACAoE,MAAM,GAAG9iF,MAAM,CAACmxE,QAAP,CAAgB7sE,GAAhB,CAAoB,UAAUQ,GAAV,EAAe;QACxCq+E,OAAO,GAAGr+E,GAAG,CAACsW,IAAJ,CAAShe,OAAT,CAAiB,GAAjB,IAAwB,CAAlC;QACA,OAAQ+lF,OAAO,KAAK,CAAZ,IAAkB,CAACr+E,GAAG,CAACylE,MAAxB,GAAmC,QAAnC,GAAgD4Y,OAAO,KAAK,CAAb,GAAkBr+E,GAAG,CAACsW,IAAJ,CAAS9N,MAAT,CAAgB61E,OAAhB,EAAyB3nF,OAAzB,CAAiC,GAAjC,EAAsC,EAAtC,CAAlB,GAA8D,cAApH;MACH,CAHQ,CAAT;;MAIA,IAAIsnF,MAAM,CAAC,CAAD,CAAN,IAAappF,SAAjB,EAA4B;QACxBopF,MAAM,GAAG3H,OAAO,CAAC//D,IAAR,CAAa3f,KAAb,CAAmB,GAAnB,EAAwB6I,GAAxB,CAA4B,UAAUQ,GAAV,EAAe;UAChDq+E,OAAO,GAAGr+E,GAAG,CAAC1H,OAAJ,CAAY,GAAZ,IAAmB,CAA7B;UACA,OAAQ+lF,OAAO,KAAK,CAAb,GAAkB,QAAlB,GAA6Br+E,GAAG,CAACwI,MAAJ,CAAW61E,OAAX,EAAoB3nF,OAApB,CAA4B,GAA5B,EAAiC,EAAjC,CAApC;QACH,CAHQ,CAAT;MAIH;;MACDunF,WAAW,GAAGD,MAAM,CAACM,KAAP,CAAa,UAAUt+E,GAAV,EAAepJ,CAAf,EAAkB6nC,GAAlB,EAAuB;QAAE,OAAOz+B,GAAG,KAAKy+B,GAAG,CAAC,CAAD,CAAlB;MAAwB,CAA9D,IACRu/C,MAAM,CAAC,CAAD,CAAN,KAAc,QAAf,GAA2B,QAA3B,GAAsCA,MAAM,CAAC,CAAD,CAAN,CAAUO,iBAAV,KAAgC,OAD7D,GACwE,gBADtF;MAEAl8C,QAAQ,GAAGg0C,OAAO,CAACh0C,QAAnB;MACA36B,OAAO,CAAC0Z,MAAR,GAAiBi1D,OAAO,CAAC//D,IAAzB;MACA5O,OAAO,CAACqyE,OAAR,GAAkB,oBAAoB9J,aAAa,CAAC/0E,MAAD,EAAS,MAAT,CAAjC,GACZ,mBADY,GACUsqE,KADV,GACkB,IADlB,GACyByY,WADzB,GACuC,YADvC,GAEd,UAFc,GAEDhO,aAAa,CAAC/0E,MAAD,EAAS,MAAT,CAFZ,GAE+B,YAF/B,GAGdm7E,OAAO,CAAC9nB,IAHM,GAGC,eAHD,GAGmBiX,KAHnB,GAG2B,YAH3B,GAG0C6Q,OAAO,CAAC9nB,IAHlD,GAIZ,qBAJY,GAIY,UAJZ,GAIyB0hB,aAAa,CAAC/0E,MAAD,EAAS,UAAT,CAJtC,GAKd,mBALc,GAKQsqE,KALR,GAKgB,WALhB,GAK8BnjC,QAL9B,GAKyC,IALzC,GAMZA,QANY,GAMD,YANC,GAMc,UANhC;MAOA36B,OAAO,CAACsyE,OAAR,GAAkB,CACd;QACIyB,WAAW,EAAE;UAAEC,SAAS,EAAE,IAAb;UAAmB3B,OAAO,EAAE9J,aAAa,CAAC/0E,MAAD,EAAS,WAAT;QAAzC,CADjB;QAEIs7E,KAAK,EAAE,UAAU/6E,CAAV,EAAa;UAChB,IAAIA,CAAC,CAAC8K,IAAF,KAAW,SAAf,EAA0B;YACtB;UACH;;UACDrL,MAAM,CAACo9E,SAAP,CAAiBE,IAAjB;QACH;MAPL,CADc,CAAlB;MAWA;;IACJ,KAAK,OAAL;MACIt9E,MAAM,CAACgb,MAAP,CAAc0wD,aAAd,EAA6B,EAA7B;MACAl/D,OAAO,CAACkyE,UAAR,GAAqB,OAArB;;MACA,IAAIn+E,CAAC,CAACslB,KAAF,CAAQmxD,IAAR,KAAiB,KAArB,EAA4B;QACxBxqE,OAAO,CAAC0Z,MAAR,GAAiB,sFACb6uD,aAAa,CAAC/0E,MAAD,EAAS,eAAT,CADA,GAC4B,QAD7C;MAEH,CAHD,MAIK;QACDwM,OAAO,CAAC0Z,MAAR,GAAiB6uD,aAAa,CAAC/0E,MAAD,EAAS,OAAT,CAA9B;MACH;;MACDwM,OAAO,CAACqyE,OAAR,GAAkB,iBAAiBlV,aAAjB,GAAiC,IAAjC,GAAwCppE,CAAC,CAACslB,KAAF,CAAQxlB,OAAhD,GAA0D,QAA5E;MACAmM,OAAO,CAACsyE,OAAR,GAAkB,CACd;QACIyB,WAAW,EAAE;UAAEC,SAAS,EAAE,IAAb;UAAmB3B,OAAO,EAAE9J,aAAa,CAAC/0E,MAAD,EAAS,WAAT;QAAzC,CADjB;QAEIs7E,KAAK,EAAE,UAAU/6E,CAAV,EAAa;UAChBP,MAAM,CAACo9E,SAAP,CAAiBE,IAAjB;QACH;MAJL,CADc,CAAlB;MAQA;EAjJR;;EAmJA,OAAO9wE,OAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASiyE,aAAT,CAAuBz+E,MAAvB,EAA+B0+E,UAA/B,EAA2Cz/E,IAA3C,EAAiD;EAC7C,IAAIqkF,UAAU,GAAGl0D,+DAAS,CAAC,QAAD,EAAWpvB,MAAM,CAACo9E,SAAP,CAAiB18E,OAA5B,CAA1B;EACA6iF,cAAc,CAACD,UAAD,CAAd;EACAxD,sBAAsB,CAAC9/E,MAAD,EAASA,MAAM,CAACo9E,SAAhB,EAA2Bn+E,IAA3B,EAAiCy/E,UAAjC,CAAtB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASkB,aAAT,CAAuB5/E,MAAvB,EAA+BwjF,OAA/B,EAAwCvkF,IAAxC,EAA8C;EAC1C,IAAIqkF,UAAU,GAAGl0D,+DAAS,CAAC,QAAD,EAAWpvB,MAAM,CAAC2/E,YAAP,CAAoBj/E,OAA/B,CAA1B;EACA6iF,cAAc,CAACD,UAAD,CAAd;EACAxD,sBAAsB,CAAC9/E,MAAD,EAASA,MAAM,CAAC2/E,YAAhB,EAA8B1gF,IAA9B,EAAoCukF,OAApC,CAAtB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASD,cAAT,CAAwBD,UAAxB,EAAoC;EAChC,IAAIxlF,OAAO,GAAG,UAAU2lF,QAAV,EAAoB;IAC9BH,UAAU,CAACG,QAAD,CAAV,CAAqBC,SAArB,GAAiC,UAAUnjF,CAAV,EAAa;MAC1C,IAAIA,CAAC,CAACy0C,OAAF,KAAc,EAAlB,EAAsB;QAClBz0C,CAAC,CAAC6qC,cAAF;MACH;IACJ,CAJD;;IAKAk4C,UAAU,CAACG,QAAD,CAAV,CAAqBrB,OAArB,GAA+B,UAAU7hF,CAAV,EAAa;MACxC,IAAIA,CAAC,CAACy0C,OAAF,KAAc,EAAlB,EAAsB;QAClBsuC,UAAU,CAACG,QAAD,CAAV,CAAqBnI,KAArB;MACH;IACJ,CAJD;EAKH,CAXD;;EAYA,KAAK,IAAImI,QAAQ,GAAG,CAApB,EAAuBA,QAAQ,GAAGH,UAAU,CAACvoF,MAA7C,EAAqD0oF,QAAQ,EAA7D,EAAiE;IAC7D3lF,OAAO,CAAC2lF,QAAD,CAAP;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASlE,aAAT,CAAuBv/E,MAAvB,EAA+BwM,OAA/B,EAAwC;EACpCxM,MAAM,CAACo9E,SAAP,CAAiBl3D,MAAjB,GAA0B1Z,OAAO,CAAC0Z,MAAlC;EACAlmB,MAAM,CAACo9E,SAAP,CAAiByB,OAAjB,GAA2BryE,OAAO,CAACqyE,OAAnC;EACA7+E,MAAM,CAACo9E,SAAP,CAAiB0B,OAAjB,GAA2BtyE,OAAO,CAACsyE,OAAnC;EACA9+E,MAAM,CAACo9E,SAAP,CAAiBn/D,SAAjB,GAA6Bje,MAAM,CAACie,SAApC;EACAje,MAAM,CAACo9E,SAAP,CAAiB97E,IAAjB,GAAwBkL,OAAO,CAAClL,IAAhC;EACAtB,MAAM,CAACo9E,SAAP,CAAiBx7E,KAAjB,GAAyB4K,OAAO,CAAC5K,KAAjC;EACA5B,MAAM,CAACo9E,SAAP,CAAiBoB,UAAjB,GAA8BC,aAAa,CAAC5kF,IAAd,CAAmB,IAAnB,EAAyBmG,MAAzB,EAAiCwM,OAAO,CAACkyE,UAAzC,CAA9B;;EACA1+E,MAAM,CAACo9E,SAAP,CAAiBuB,WAAjB,GAA+B,UAAU1/E,IAAV,EAAgB;IAC3C2/E,uBAAuB,CAAC5+E,MAAD,EAASA,MAAM,CAACo9E,SAAhB,EAA2Bn+E,IAA3B,EAAiCuN,OAAO,CAACkyE,UAAzC,CAAvB;EACH,CAFD;;EAGA1+E,MAAM,CAACo9E,SAAP,CAAiBprD,QAAjB;EACAhyB,MAAM,CAACo9E,SAAP,CAAiByC,IAAjB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASwC,QAAT,CAAkBriF,MAAlB,EAA0B;EACtB,IAAIitB,GAAG,GAAG+B,4DAAM,CAAC,UAAD,EAAahvB,MAAM,CAACo9E,SAAP,CAAiB18E,OAA9B,CAAhB;EACAijF,gBAAgB,CAAC3jF,MAAD,EAASitB,GAAT,CAAhB;;EACA,IAAIA,GAAG,CAAC4mB,aAAJ,CAAkB2pC,kBAAlB,CAAqC77E,SAArC,KAAmD,EAAvD,EAA2D;IACvD;EACH;;EACD85E,YAAY,CAACz7E,MAAD,EAASitB,GAAG,CAAC3xB,KAAb,CAAZ;AACH;AACD;;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASknF,UAAT,CAAoBxiF,MAApB,EAA4B;EACxB,IAAIitB,GAAG,GAAG+B,4DAAM,CAAC,SAAD,EAAYhvB,MAAM,CAACo9E,SAAP,CAAiB18E,OAA7B,CAAhB;EACAijF,gBAAgB,CAAC3jF,MAAD,EAASitB,GAAT,CAAhB;;EACA,IAAIA,GAAG,CAAC4mB,aAAJ,CAAkB2pC,kBAAlB,CAAqC77E,SAArC,KAAmD,EAAvD,EAA2D;IACvD;EACH;;EACD,IAAIkR,IAAI,GAAGoa,GAAG,CAAC3xB,KAAf;EACA,IAAIsoF,MAAM,GAAG5jF,MAAM,CAACm6E,eAAP,CAAuBnoE,WAAvB,CAAmC,GAAnC,CAAb;;EACA,IAAIhS,MAAM,CAACuqE,MAAP,IAAiB,CAACvqE,MAAM,CAAC2iF,iBAA7B,EAAgD;IAC5C,IAAIkB,IAAI,GAAID,MAAM,KAAK,CAAC,CAAb,GAAkB,EAAlB,GAAuB5jF,MAAM,CAACm6E,eAAP,CAAuB7sE,MAAvB,CAA8Bs2E,MAA9B,CAAlC;IACA/wE,IAAI,IAAIgxE,IAAR;EACH;;EACD7jF,MAAM,CAAC29E,UAAP,GAAoB9qE,IAApB;;EACA,IAAI7S,MAAM,CAACm6E,eAAP,KAA2BtnE,IAA/B,EAAqC;IACjC7S,MAAM,CAACo9E,SAAP,CAAiBE,IAAjB;IACA;EACH;;EACD,IAAIhO,OAAO,GAAItvE,MAAM,CAACkwE,YAAP,KAAwB,gBAAzB,GAA6C/0E,8DAAQ,CAAC,YAAD,EAAe6E,MAAM,CAACmxE,QAAP,CAAgB,CAAhB,CAAf,CAAR,CAA2C31E,OAA3C,CAAmD,KAAnD,EAA0D,GAA1D,CAA7C,GAA8GwE,MAAM,CAACuuE,IAAnI;EACAvuE,MAAM,CAAC8jF,SAAP,GAAmB3oF,8DAAQ,CAAC,IAAD,EAAO6E,MAAM,CAACmxE,QAAP,CAAgB,CAAhB,CAAP,CAA3B;;EACA,IAAInxE,MAAM,CAACuqE,MAAX,EAAmB;IACf,IAAIwZ,YAAY,GAAIH,MAAM,KAAK,CAAC,CAAb,GAAkB,EAAlB,GAAuB5jF,MAAM,CAACm6E,eAAP,CAAuB7sE,MAAvB,CAA8Bs2E,MAA9B,CAA1C;IACA,IAAII,MAAM,GAAGnxE,IAAI,CAACb,WAAL,CAAiB,GAAjB,CAAb;IACA,IAAIiyE,YAAY,GAAID,MAAM,KAAK,CAAC,CAAb,GAAkB,EAAlB,GAAuBnxE,IAAI,CAACvF,MAAL,CAAY02E,MAAZ,CAA1C;;IACA,IAAIhkF,MAAM,CAAC2iF,iBAAP,IAA4BoB,YAAY,KAAKE,YAAjD,EAA+D;MAC3DpG,eAAe,CAAC79E,MAAD,EAAS,WAAT,EAAsB,IAAtB,EAA4BsvE,OAA5B,CAAf;IACH,CAFD,MAGK;MACDyM,MAAM,CAAC/7E,MAAD,EAASsvE,OAAT,EAAkBz8D,IAAlB,CAAN;IACH;EACJ,CAVD,MAWK;IACDkpE,MAAM,CAAC/7E,MAAD,EAASsvE,OAAT,EAAkBz8D,IAAlB,CAAN;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASowE,cAAT,CAAwBjjF,MAAxB,EAAgC;EAC5BA,MAAM,CAACo9E,SAAP,CAAiBE,IAAjB;EACAt9E,MAAM,CAACgb,MAAP,CAAc+vD,UAAd,EAA0B,EAA1B;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASoX,UAAT,CAAoBniF,MAApB,EAA4BitB,GAA5B,EAAiC;EAC7B,IAAI,eAAeniB,IAAf,CAAoBmiB,GAAG,CAAC3xB,KAAxB,CAAJ,EAAoC;IAChC4oF,UAAU,CAAClkF,MAAD,EAASitB,GAAT,CAAV;EACH,CAFD,MAGK,IAAIA,GAAG,CAAC3xB,KAAJ,KAAc,EAAlB,EAAsB;IACvB2xB,GAAG,CAAC4mB,aAAJ,CAAkB2pC,kBAAlB,CAAqC77E,SAArC,GAAiDozE,aAAa,CAAC/0E,MAAD,EAAS,kBAAT,CAA9D;EACH,CAFI,MAGA;IACDitB,GAAG,CAAC4mB,aAAJ,CAAkB2pC,kBAAlB,CAAqC77E,SAArC,GAAiD,EAAjD;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASgiF,gBAAT,CAA0B3jF,MAA1B,EAAkCitB,GAAlC,EAAuC;EACnCk1D,UAAU,CAACniF,MAAD,EAASitB,GAAT,CAAV;EACA,IAAI7rB,GAAG,GAAG6rB,GAAG,CAAC3xB,KAAJ,CAAUP,MAAV,GAAmB,CAA7B;;EACA,IAAIkyB,GAAG,CAAC3xB,KAAJ,KAAc,EAAd,KAAsB2xB,GAAG,CAAC3xB,KAAJ,CAAU0W,WAAV,CAAsB,GAAtB,MAA+B5Q,GAAhC,IAAyC6rB,GAAG,CAAC3xB,KAAJ,CAAU0W,WAAV,CAAsB,GAAtB,MAA+B5Q,GAA7F,MACCpB,MAAM,CAAC2iF,iBAAP,IAA6B11D,GAAG,CAAC3xB,KAAJ,CAAU0W,WAAV,CAAsB,GAAtB,MAA+B,CAAC,CAAhC,IAAqCib,GAAG,CAAC3xB,KAAJ,CAAU8R,SAAV,CAAoB6f,GAAG,CAAC3xB,KAAJ,CAAU8B,OAAV,CAAkB,GAAlB,IAAyB,CAA7C,EAAgDrC,MAAhD,KAA2D,CAD9H,CAAJ,EACuI;IACnImpF,UAAU,CAAClkF,MAAD,EAASitB,GAAT,CAAV;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASi3D,UAAT,CAAoBlkF,MAApB,EAA4BitB,GAA5B,EAAiC;EAC7B,IAAIpH,KAAK,GAAGkvD,aAAa,CAAC/0E,MAAD,EAAS,oBAAT,CAAb,CAA4CxE,OAA5C,CAAoD,KAApD,EAA2D,MAAMyxB,GAAG,CAAC3xB,KAAV,GAAkB,GAA7E,CAAZ;;EACA,IAAI0E,MAAM,CAACs/E,mBAAX,EAAgC;IAC5BryD,GAAG,CAAC4mB,aAAJ,CAAkB2pC,kBAAlB,CAAqCpO,WAArC,GAAmDvpD,KAAnD;EACH,CAFD,MAGK;IACDoH,GAAG,CAAC4mB,aAAJ,CAAkB2pC,kBAAlB,CAAqC77E,SAArC,GAAiDkkB,KAAjD;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS4wB,UAAT,CAAoBl2C,CAApB,EAAuB;EACnB,IAAIy2E,IAAJ;;EACA,IAAIz2E,CAAC,CAACy0C,OAAN,EAAe;IACXgiC,IAAI,GAAGz2E,CAAC,CAACy0C,OAAT;EACH,CAFD,MAGK,IAAIz0C,CAAC,CAACm1C,KAAN,EAAa;IACdshC,IAAI,GAAGz2E,CAAC,CAACm1C,KAAT;EACH,CAFI,MAGA;IACDshC,IAAI,GAAGz2E,CAAC,CAAC4jF,QAAT;EACH;;EACD,OAAOnN,IAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASoN,iBAAT,CAA2BpkF,MAA3B,EAAmCkmB,MAAnC,EAA2C6tD,QAA3C,EAAqD;EACjD,IAAI8K,OAAO,GAAGh+E,mEAAa,CAAC,KAAD,EAAQ;IAAE0rB,SAAS,EAAE;EAAb,CAAR,CAA3B;EACA,IAAI83D,KAAK,GAAGxjF,mEAAa,CAAC,KAAD,EAAQ;IAAE0rB,SAAS,EAAE,SAAb;IAAwBG,KAAK,EAAE;MAAExuB,GAAG,EAAE61E,QAAP;MAAiBuQ,GAAG,EAAEp+D;IAAtB;EAA/B,CAAR,CAAzB;EACA24D,OAAO,CAACt9E,WAAR,CAAoB8iF,KAApB;;EACA,IAAIloF,uEAAiB,CAAC6D,MAAM,CAACukF,SAAR,CAArB,EAAyC;IACrCvkF,MAAM,CAACukF,SAAP,GAAmB,IAAItjB,0DAAJ,CAAW;MAC1B/6C,MAAM,EAAEA,MADkB;MAE1B24D,OAAO,EAAEA,OAFiB;MAG1BE,iBAAiB,EAAE;QAAEC,MAAM,EAAE;MAAV,CAHO;MAI1BC,aAAa,EAAE,IAJW;MAK1BC,aAAa,EAAE,IALW;MAM1B7B,OAAO,EAAE,IANiB;MAO1B+B,OAAO,EAAE,IAPiB;MAQ1B3wC,KAAK,EAAE,OARmB;MAS1BC,MAAM,EAAE,OATkB;MAU1B1Y,MAAM,EAAEh2B,MAAM,CAACq/E,WAAP,GAAqBr/E,MAAM,CAACq/E,WAA5B,GAA0C,MAAMr/E,MAAM,CAACU,OAAP,CAAeoI,EAV7C;MAW1B8sE,QAAQ,EAAEF,WAAW,CAAC11E,MAAD,EAASA,MAAM,CAACg2E,QAAP,GAAkB5Q,SAAlB,GAA8BF,UAAvC,CAXK;MAY1B9mD,MAAM,EAAEpe,MAAM,CAACoe,MAZW;MAa1BomE,YAAY,EAAE,IAbY;MAc1BrF,aAAa,EAAE,IAdW;MAe1BG,mBAAmB,EAAEt/E,MAAM,CAACs/E,mBAfF;MAgB1BzyC,QAAQ,EAAE;QAAE43C,CAAC,EAAE,QAAL;QAAeC,CAAC,EAAE;MAAlB,CAhBgB;MAiB1BzmE,SAAS,EAAEje,MAAM,CAACie,SAjBQ;MAkB1B3c,IAAI,EAAEqjF,SAAS,CAAC9qF,IAAV,CAAe,IAAf,EAAqBmG,MAArB,CAlBoB;MAmB1B4B,KAAK,EAAE,YAAY;QAAEy+E,iBAAiB,CAACrgF,MAAD,EAASA,MAAM,CAACukF,SAAhB,EAA2B,eAA3B,CAAjB;MAA+D,CAnB1D;MAoB1B/F,UAAU,EAAE,UAAUv/E,IAAV,EAAgB;QACxB6gF,sBAAsB,CAAC9/E,MAAD,EAASA,MAAM,CAACukF,SAAhB,EAA2BtlF,IAA3B,EAAiC,eAAjC,CAAtB;MACH,CAtByB;MAuB1B0/E,WAAW,EAAE,UAAU1/E,IAAV,EAAgB;QACzB2/E,uBAAuB,CAAC5+E,MAAD,EAASA,MAAM,CAACukF,SAAhB,EAA2BtlF,IAA3B,EAAiC,eAAjC,CAAvB;MACH,CAzByB;MA0B1B2lF,QAAQ,EAAEC,WAAW,CAAChrF,IAAZ,CAAiB,IAAjB,EAAuBmG,MAAvB,CA1BgB;MA2B1B8kF,UAAU,EAAED,WAAW,CAAChrF,IAAZ,CAAiB,IAAjB,EAAuBmG,MAAvB;IA3Bc,CAAX,CAAnB;IA6BAA,MAAM,CAACukF,SAAP,CAAiB7/C,gBAAjB,GAAoC,IAApC;IACA1kC,MAAM,CAACukF,SAAP,CAAiBv/C,QAAjB,CAA0B,MAAMhlC,MAAM,CAACU,OAAP,CAAeoI,EAArB,GAA0Bo7D,aAApD;EACH,CAhCD,MAiCK;IACDlkE,MAAM,CAACukF,SAAP,CAAiBp/C,OAAjB;IACAnlC,MAAM,CAACukF,SAAP,CAAiBr+D,MAAjB,GAA0BA,MAA1B;IACAlmB,MAAM,CAACukF,SAAP,CAAiB1F,OAAjB,GAA2BA,OAA3B;IACA7+E,MAAM,CAACukF,SAAP,CAAiBtmE,SAAjB,GAA6Bje,MAAM,CAACie,SAApC;IACAje,MAAM,CAACukF,SAAP,CAAiBvyD,QAAjB;IACAhyB,MAAM,CAACukF,SAAP,CAAiB1E,IAAjB;EACH;AACJ;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS8E,SAAT,CAAmB3kF,MAAnB,EAA2B;EACvBZ,UAAU,CAAC,YAAY;IACnB,IAAIY,MAAM,CAACukF,SAAX,EAAsB;MAClBvkF,MAAM,CAACukF,SAAP,CAAiB7jF,OAAjB,CAAyBmB,KAAzB;IACH;EACJ,CAJS,CAAV;EAKAgjF,WAAW,CAAC7kF,MAAD,CAAX;EACAogF,gBAAgB,CAACpgF,MAAD,EAASA,MAAM,CAACukF,SAAhB,EAA2B,eAA3B,CAAhB;AACH;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASM,WAAT,CAAqB7kF,MAArB,EAA6B;EACzB,IAAI6+E,OAAO,GAAG7vD,4DAAM,CAAC,gBAAD,EAAmBhvB,MAAM,CAACukF,SAAP,CAAiB7jF,OAApC,CAApB;EACA,IAAIqkF,OAAO,GAAG/1D,4DAAM,CAAC,eAAD,EAAkBhvB,MAAM,CAACukF,SAAP,CAAiB7jF,OAAnC,CAApB;EACA,IAAIskF,MAAM,GAAG3qF,MAAM,CAAC4iC,gBAAP,CAAwB4hD,OAAxB,EAAiC,IAAjC,CAAb;EACA,IAAIoG,YAAY,GAAGD,MAAM,GAAI,IAAI/qE,UAAU,CAAC+qE,MAAM,CAACE,YAAR,CAAlB,GAA2C,EAApE;EACA,IAAIC,aAAa,GAAGH,MAAM,GAAI,IAAI/qE,UAAU,CAAC+qE,MAAM,CAACI,aAAR,CAAlB,GAA4C,EAAtE;EACAL,OAAO,CAACn3D,KAAR,CAAc6gB,KAAd,GAAuBowC,OAAO,CAAC/wD,WAAR,GAAsBm3D,YAAvB,GAAuC,IAA7D;EACAF,OAAO,CAACn3D,KAAR,CAAc8gB,MAAd,GAAwBmwC,OAAO,CAAClwC,YAAR,GAAuBw2C,aAAxB,GAAyC,IAAhE;AACH;AAED;AACA;AACA;;AAEA;AACA;AACA;;;AACA,IAAIE,cAAc;AAAG;AAAyB,YAAY;EACtD;AACJ;AACA;AACA;AACA;AACA;EACI,SAASA,cAAT,CAAwBrlF,MAAxB,EAAgC;IAC5B,KAAKslF,aAAL,GAAqB,IAArB;IACA,KAAKC,eAAL,GAAuB,KAAvB;IACA,KAAK77B,KAAL,GAAa,CAAb;IACA,KAAK14B,UAAL,GAAkB,IAAlB;IACA,KAAK2mB,QAAL,GAAgB,CAAhB;IACA,KAAK6tC,iBAAL,GAAyB,KAAzB;IACA,KAAKC,gBAAL,GAAwB,KAAxB;IACA,KAAKtF,YAAL,GAAoB,IAApB;IACA,KAAKngF,MAAL,GAAcA,MAAd;IACA,KAAKU,OAAL,GAAesuB,4DAAM,CAAC,MAAM,KAAKhvB,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+Bi7D,YAAhC,EAA8C,KAAK/jE,MAAL,CAAYU,OAA1D,CAArB;IACAksB,8DAAQ,CAAC,CAAC,KAAKlsB,OAAN,CAAD,EAAiBglE,WAAjB,CAAR;IACA,KAAK1qE,gBAAL;IACA,KAAK26C,UAAL,GAAkB;MACd97B,GAAG,EAAE,KADS;MAEd6rE,IAAI,EAAE,MAFQ;MAGdC,GAAG,EAAE,KAHS;MAIdC,QAAQ,EAAE,WAJI;MAKdC,QAAQ,EAAE,WALI;MAMdC,SAAS,EAAE,YANG;MAOdC,MAAM,EAAE,SAPM;MAQdC,OAAO,EAAE,UARK;MASdC,QAAQ,EAAE,WATI;MAUdC,QAAQ,EAAE,gBAVI;MAWdC,QAAQ,EAAE,gBAXI;MAYdC,SAAS,EAAE,iBAZG;MAadC,MAAM,EAAE,cAbM;MAcdC,QAAQ,EAAE,WAdI;MAedC,SAAS,EAAE,YAfG;MAgBdC,SAAS,EAAE,iBAhBG;MAiBdC,SAAS,EAAE,iBAjBG;MAkBdC,UAAU,EAAE,kBAlBE;MAmBdC,OAAO,EAAE,eAnBK;MAoBdC,KAAK,EAAE,gBApBO;MAqBdC,MAAM,EAAE,iBArBM;MAsBdC,MAAM,EAAE,sBAtBM;MAuBdC,MAAM,EAAE,sBAvBM;MAwBdC,OAAO,EAAE,uBAxBK;MAyBdC,IAAI,EAAE,oBAzBQ;MA0BdC,KAAK,EAAE,OA1BO;MA2BdC,SAAS,EAAE,YA3BG;MA4BdC,UAAU,EAAE,aA5BE;MA6BdC,OAAO,EAAE,kBA7BK;MA8BdC,KAAK,EAAE,QA9BO;MA+BdC,KAAK,EAAE,OA/BO;MAgCdC,QAAQ,EAAE,WAhCI;MAiCdC,GAAG,EAAE,QAjCS;MAkCdC,GAAG,EAAE,QAlCS;MAmCdC,KAAK,EAAE,KAAK3nF,MAAL,CAAY4nF,KAAZ,GAAoB,OAApB,GAA8B,QAnCvB;MAoCdC,KAAK,EAAE,KAAK7nF,MAAL,CAAY4nF,KAAZ,GAAoB,OAApB,GAA8B,QApCvB;MAqCdE,KAAK,EAAE,KAAK9nF,MAAL,CAAY4nF,KAAZ,GAAoB,OAApB,GAA8B,QArCvB;MAsCdG,EAAE,EAAE,IAtCU;MAuCdC,QAAQ,EAAE,cAvCI;MAwCdC,IAAI,EAAE,WAxCQ;MAyCdC,KAAK,EAAE;IAzCO,CAAlB;EA2CH;;EACD7C,cAAc,CAACzrF,SAAf,CAAyB0rC,MAAzB,GAAkC,UAAUrmC,IAAV,EAAgB;IAC9C,KAAKe,MAAL,CAAYmoF,WAAZ,GAA0B,IAA1B;IACA,KAAKC,SAAL,GAAiB,IAAjB;IACAhnB,mEAAW,CAAC,KAAKphE,MAAL,CAAYU,OAAb,CAAX;;IACA,IAAI,KAAKV,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;MACnC,KAAKmW,gBAAL;MACA,KAAK3nF,OAAL,CAAa+rB,YAAb,CAA0B,UAA1B,EAAsC,GAAtC;;MACA,IAAI,KAAK67D,OAAT,EAAkB;QACd,KAAKC,YAAL;QACA,KAAKrtF,mBAAL;MACH;;MACD,KAAK8E,MAAL,CAAYgb,MAAZ,CAAmBgyD,UAAnB,EAA+B,EAA/B;MACA,IAAIwb,SAAS,GAAGx5D,4DAAM,CAAC,MAAM,KAAKhvB,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+Bi7D,YAAhC,EAA8C,KAAK/jE,MAAL,CAAYU,OAA1D,CAAtB;MACA,IAAI+nF,EAAE,GAAGz5D,4DAAM,CAAC,IAAD,EAAOw5D,SAAP,CAAf;;MACA,IAAIC,EAAJ,EAAQ;QACJ/8D,4DAAM,CAAC+8D,EAAD,CAAN;MACH;;MACD,KAAKH,OAAL,GAAe;QACXI,cAAc,EAAE;UACZC,QAAQ,EAAE,QADE;UACQC,QAAQ,EAAE,SADlB;UAC6BC,QAAQ,EAAE,EADvC;UAEZC,aAAa,EAAE,OAFH;UAEYC,WAAW,EAAE;QAFzB,CADL;QAKXC,QAAQ,EAAE,IALC;QAMX7kC,MAAM,EAAE;UAAEtxC,IAAI,EAAE,MAAR;UAAgBo2E,OAAO,EAAE,UAAzB;UAAqClV,QAAQ,EAAE,cAA/C;UAA+DmV,cAAc,EAAE;QAA/E,CANG;QAOX9U,SAAS,EAAE,KAAKp0E,MAAL,CAAYo0E,SAPZ;QAQX+U,WAAW,EAAE,KAAKC,aAAL,CAAmBvvF,IAAnB,CAAwB,IAAxB,CARF;QASXylF,mBAAmB,EAAE,KAAKt/E,MAAL,CAAYs/E;MATtB,CAAf;MAWA,KAAK71B,KAAL,GAAa,EAAb;MACA,KAAKA,KAAL,GAAa,KAAK4/B,UAAL,CAAgBpqF,IAAhB,CAAb;MACA,KAAKwqD,KAAL,GAAa,KAAKsoB,QAAL,GAAgBoC,aAAa,CAAC,KAAKn0E,MAAN,EAAc,KAAKypD,KAAnB,CAA1C;MACA++B,SAAS,CAACz7D,SAAV,CAAoBrB,MAApB,CAA2Bq+C,YAA3B;;MACA,IAAI,KAAK/pE,MAAL,CAAYspF,oBAAZ,IAAoC,KAAKvX,QAAL,CAAch3E,MAAd,GAAuB,CAA/D,EAAkE;QAC9D,IAAI,CAAC,KAAK2F,OAAL,CAAaktB,KAAb,CAAmB8gB,MAAxB,EAAgC;UAC5B,KAAK66C,YAAL;QACH;;QACD,KAAKvpF,MAAL,CAAYwpF,oBAAZ,CAAiCC,mBAAjC;MACH,CAjCkC,CAkCnC;;;MACA,KAAKC,YAAL,GAAoBhoB,8EAAA,CAA4B7gE,+DAA5B,EAA2C,KAAK4oD,KAAhD,EAAuD,KAAK6+B,OAA5D,CAApB;MACA,KAAKsB,QAAL,GAAgBvsF,KAAK,CAACzD,SAAN,CAAgBmH,KAAhB,CAAsBlB,IAAtB,CAA2BuvB,+DAAS,CAAC,MAAMw2C,SAAP,EAAkB,KAAK8jB,YAAvB,CAApC,CAAhB;MACA,KAAKhpF,OAAL,CAAaa,WAAb,CAAyB,KAAKmoF,YAA9B;MACA,KAAKG,cAAL;MACA,KAAKC,aAAL;;MACA,IAAI,KAAKF,QAAL,CAAc7uF,MAAd,KAAyB,CAA7B,EAAgC;QAC5B,IAAIgvF,SAAS,GAAG,KAAKrpF,OAAL,CAAaqC,aAAb,CAA2B,MAAM+iE,WAAjC,CAAhB;QACA,KAAKplE,OAAL,CAAaouB,WAAb,CAAyBi7D,SAAzB;QACAvV,kBAAkB,CAAC,KAAKx0E,MAAN,EAAc,KAAKU,OAAnB,EAA4BzB,IAA5B,CAAlB;MACH,CAJD,MAKK,IAAI,KAAK2qF,QAAL,CAAc7uF,MAAd,KAAyB,CAAzB,IAA8B,KAAK2F,OAAL,CAAaqC,aAAb,CAA2B,MAAM4jE,KAAjC,CAAlC,EAA2E;QAC5E,KAAKjmE,OAAL,CAAaouB,WAAb,CAAyB,KAAKpuB,OAAL,CAAaqC,aAAb,CAA2B,MAAM4jE,KAAjC,CAAzB;MACH;;MACD,IAAI,KAAK8e,gBAAL,KAA0B,IAA9B,EAAoC;QAChC,KAAKuE,WAAL,CAAiB,KAAKhqF,MAAL,CAAYg4E,UAA7B;QACA,KAAKyN,gBAAL,GAAwB,KAAxB;MACH;MACD;;;MACA,IAAI,KAAKF,eAAL,KAAyB,IAA7B,EAAmC;QAC/B,KAAKyE,WAAL,CAAiB,KAAKhqF,MAAL,CAAYo7E,UAA7B;QACA,KAAKp7E,MAAL,CAAY4xB,aAAZ,CAA0B;UAAEg/C,aAAa,EAAE;QAAjB,CAA1B,EAAiD,IAAjD;QACA,KAAKlnB,KAAL;;QACA,IAAI,KAAKA,KAAL,KAAe,KAAK1pD,MAAL,CAAYo7E,UAAZ,CAAuBrgF,MAA1C,EAAkD;UAC9C,KAAKwqF,eAAL,GAAuB,KAAvB;UACA,KAAKvlF,MAAL,CAAYo7E,UAAZ,GAAyB,EAAzB;QACH;MACJ;;MACD,IAAI6O,SAAS,GAAG,KAAKvpF,OAAL,CAAaO,gBAAb,CAA8B,MAAMilE,MAApC,CAAhB;;MACA,IAAI+jB,SAAS,CAAClvF,MAAV,KAAqB,CAAzB,EAA4B;QACxB,KAAKiF,MAAL,CAAYkwE,YAAZ,GAA2B,gBAA3B;MACH;;MACD,KAAK,IAAIx0E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuuF,SAAS,CAAClvF,MAA9B,EAAsCW,CAAC,EAAvC,EAA2C;QACvCuuF,SAAS,CAACvuF,CAAD,CAAT,CAAa+wB,YAAb,CAA0B,eAA1B,EAA2C,MAA3C;MACH;;MACD,KAAK88D,YAAL;MACA,KAAK7oF,OAAL,CAAaktB,KAAb,CAAmBs8D,SAAnB,GAA+B,MAA/B;MACA,KAAKC,YAAL;MACA,KAAKnvF,gBAAL;MACA,KAAKq5C,UAAL;;MACA,IAAI,KAAKr0C,MAAL,CAAYspF,oBAAZ,IAAoC,KAAKvX,QAAL,CAAch3E,MAAd,GAAuB,CAA/D,EAAkE;QAC9D,KAAKiF,MAAL,CAAYwpF,oBAAZ,CAAiCY,kBAAjC;QACA,KAAKpqF,MAAL,CAAYwpF,oBAAZ,CAAiCa,eAAjC,CAAiD,KAAjD;MACH;;MACD,KAAKr5D,UAAL,GAAkB,IAAlB;MACAmwC,mEAAW,CAAC,KAAKnhE,MAAL,CAAYU,OAAb,CAAX;;MACA,IAAI,KAAKV,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA9B,EAAsC;QAClC,KAAKuvF,SAAL;MACH;IACJ;EACJ,CAxFD;;EAyFAjF,cAAc,CAACzrF,SAAf,CAAyBiwF,cAAzB,GAA0C,YAAY;IAClD,IAAInuF,CAAC,GAAG,CAAR;;IACA,OAAOA,CAAC,GAAG,KAAKkuF,QAAL,CAAc7uF,MAAzB,EAAiC;MAC7B,IAAI,KAAK6uF,QAAL,CAAcluF,CAAd,EAAiBqH,aAAjB,CAA+B,KAA/B,CAAJ,EAA2C;QACvC;QACA,KAAK6mF,QAAL,CAAcluF,CAAd,EAAiB6uF,WAAjB,GAA+B,YAAY;UAAE,OAAO,KAAP;QAAe,CAA5D;MACH;;MACD7uF,CAAC;IACJ;EACJ,CATD;;EAUA2pF,cAAc,CAACzrF,SAAf,CAAyBkwF,aAAzB,GAAyC,YAAY;IACjD,IAAI9qF,KAAK,GAAG,IAAZ;;IACA,IAAI,CAAC,KAAKgB,MAAL,CAAYg2E,QAAb,IAAyB,KAAKsS,OAAlC,EAA2C;MACvC,IAAI,KAAKtoF,MAAL,CAAY65E,gBAAhB,EAAkC;QAC9B,IAAI,KAAKD,OAAT,EAAkB;UACd,KAAKA,OAAL,CAAax9D,OAAb;QACH;;QACD,KAAKw9D,OAAL,GAAe,IAAIrxC,2DAAJ,CAAc,KAAKmhD,YAAnB,EAAiC;UAC5C77C,cAAc,EAAE,IAD4B;UAE5Cb,QAAQ,EAAE,CAFkC;UAG5CmD,gBAAgB,EAAE,IAH0B;UAI5C3D,UAAU,EAAE,MAAM66B,UAJ0B;UAK5Cz3B,MAAM,EAAE,KAAK+9B,UAAL,CAAgB9zE,IAAhB,CAAqB,IAArB,CALoC;UAM5Cy5C,QAAQ,EAAE,KAAKtzC,MAAL,CAAYwqF,kBANsB;UAO5C78C,QAAQ,EAAE,KAAK3tC,MAAL,CAAYU,OAPsB;UAQ5CuxC,QAAQ,EAAEmnC,eAAe,CAACv/E,IAAhB,CAAqB,IAArB,EAA2B,KAAKmG,MAAhC,CARkC;UAS5CqvC,IAAI,EAAE2qC,eAAe,CAACngF,IAAhB,CAAqB,IAArB,EAA2B,KAAKmG,MAAhC,CATsC;UAU5C5B,KAAK,EAAE,IAVqC;UAW5CkvC,SAAS,EAAE,UAAUruC,IAAV,EAAgB;YACvB06E,gBAAgB,CAAC36E,KAAK,CAACgB,MAAP,EAAef,IAAf,EAAqBD,KAAK,CAAC46E,OAA3B,CAAhB;UACH;QAb2C,CAAjC,CAAf;MAeH,CAnBD,MAoBK,IAAI,KAAKA,OAAL,IAAgB,CAAC,KAAK55E,MAAL,CAAY65E,gBAAjC,EAAmD;QACpD,KAAKD,OAAL,CAAax9D,OAAb;MACH;IACJ;EACJ,CA3BD;;EA4BAipE,cAAc,CAACzrF,SAAf,CAAyB+zE,UAAzB,GAAsC,UAAU1uE,IAAV,EAAgB;IAClD,IAAIutC,UAAU,GAAGvtC,IAAI,CAACs0C,MAAL,CAAYvd,MAA7B;IACA,IAAIy0D,MAAM,GAAG96D,6DAAO,CAAC6c,UAAD,EAAa,cAAb,CAApB;;IACA,IAAI,CAACi+C,MAAL,EAAa;MACT,OAAO,IAAP;IACH;;IACD,IAAIA,MAAM,IAAI,CAACA,MAAM,CAAC19D,SAAP,CAAiBM,QAAjB,CAA0B,UAA1B,CAAf,EAAsD;MAClD,KAAKq9D,QAAL,CAAcD,MAAd;IACH;;IACD,IAAIR,SAAS,GAAG,KAAKvpF,OAAL,CAAaO,gBAAb,CAA8B,MAAMilE,MAApC,CAAhB;IACA,KAAKlmE,MAAL,CAAYgwE,cAAZ,GAA6B,EAA7B;IACA,KAAKhwE,MAAL,CAAY0vC,QAAZ,GAAuB,EAAvB;;IACA,KAAK,IAAIh0C,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuuF,SAAS,CAAClvF,MAA9B,EAAsCW,CAAC,EAAvC,EAA2C;MACvC;MACA,KAAKsE,MAAL,CAAY0vC,QAAZ,CAAqBlwC,IAArB,CAA0B,KAAKmrF,aAAL,CAAmBV,SAAS,CAACvuF,CAAD,CAA5B,CAA1B;MACA,KAAKsE,MAAL,CAAYgwE,cAAZ,CAA2BxwE,IAA3B,CAAgCyqF,SAAS,CAACvuF,CAAD,CAAzC;IACH;;IACD20E,SAAS,CAAC,KAAKrwE,MAAN,EAAcyqF,MAAd,CAAT;IACA,KAAKzqF,MAAL,CAAYo3E,QAAZ,GAAuB,KAAKp3E,MAAL,CAAYuuE,IAAnC;IACAsK,wBAAwB,CAAC,KAAK74E,MAAN,CAAxB;IACA,OAAO,KAAKA,MAAL,CAAYm5E,kBAAnB;EACH,CArBD;;EAsBAkM,cAAc,CAACzrF,SAAf,CAAyBgxF,UAAzB,GAAsC,UAAU3rF,IAAV,EAAgB;IAClD,IAAI,KAAKe,MAAL,CAAYsyE,YAAZ,KAA6B,KAAKx/C,aAAL,EAAjC,EAAuD;MACnD,IAAI+3D,MAAM,GAAGl7D,6DAAO,CAAC1wB,IAAI,CAAC+2B,MAAN,EAAc,cAAd,CAApB,CADmD,CAEnD;;MACA,IAAI80D,OAAO,GAAG3vF,8DAAQ,CAAC,KAAK6E,MAAL,CAAY0uE,MAAZ,CAAmB,KAAK1uE,MAAL,CAAY0uE,MAAZ,CAAmB3zE,MAAnB,GAA4B,CAA/C,CAAD,EAAoD,KAAKiF,MAAL,CAAYuvE,QAAhE,CAAtB;;MACA,IAAIsb,MAAJ,EAAY;QACR;QACA,IAAI1gE,IAAI,GAAG,KAAKwgE,aAAL,CAAmBE,MAAnB,CAAX;QACA,KAAK7qF,MAAL,CAAY0tE,QAAZ,GAAuBvjD,IAAI,CAACogD,MAAL,GAAc,KAAKvqE,MAAL,CAAYuuE,IAA1B,GAAiCyF,WAAW,CAAC,KAAKh0E,MAAN,EAAcmqB,IAAd,EAAoB,KAAKnqB,MAAL,CAAYuuE,IAAhC,CAAnE;QACA,KAAKvuE,MAAL,CAAYy3E,QAAZ,GAAuBttD,IAAI,CAACogD,MAAL,GAAcugB,OAAd,GAAwB3gE,IAA/C;MACH,CALD,MAMK;QACD,KAAKnqB,MAAL,CAAY0tE,QAAZ,GAAuB,KAAK1tE,MAAL,CAAYuuE,IAAnC;QACA,KAAKvuE,MAAL,CAAYy3E,QAAZ,GAAuBqT,OAAvB;MACH;IACJ;EACJ,CAhBD;EAiBA;AACJ;AACA;AACA;AACA;AACA;;;EACIzF,cAAc,CAACzrF,SAAf,CAAyBk5B,aAAzB,GAAyC,YAAY;IACjD,OAAO,gBAAP;EACH,CAFD;;EAGAuyD,cAAc,CAACzrF,SAAf,CAAyB2vF,YAAzB,GAAwC,YAAY;IAChD,IAAIwB,IAAI,GAAG/7D,4DAAM,CAAC,MAAM,KAAKhvB,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+B47D,UAAhC,EAA4C,KAAK1kE,MAAL,CAAYU,OAAxD,CAAjB;IACA,IAAIsqF,GAAG,GAAGh8D,4DAAM,CAAC,MAAM,KAAKhvB,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+B67D,gBAAhC,EAAkD,KAAK3kE,MAAL,CAAYU,OAA9D,CAAhB;IACA,KAAKA,OAAL,CAAaktB,KAAb,CAAmB8gB,MAAnB,GAA6Bq8C,IAAI,CAACp8C,YAAL,GAAoBq8C,GAAG,CAACr8C,YAAzB,GAAyC,IAArE;EACH,CAJD;;EAKA02C,cAAc,CAACzrF,SAAf,CAAyBwvF,aAAzB,GAAyC,UAAUnqF,IAAV,EAAgB;IACrDA,IAAI,CAACyiD,IAAL,CAAUznB,eAAV,CAA0B,YAA1B;;IACA,IAAI,CAAC,KAAKj6B,MAAL,CAAY2iF,iBAAb,IAAkCxnF,8DAAQ,CAAC,QAAD,EAAW8D,IAAI,CAAC8T,OAAhB,CAA9C,EAAwE;MACpE,IAAIk4E,OAAO,GAAGhsF,IAAI,CAACyiD,IAAL,CAAU3+C,aAAV,CAAwB,MAAM8iE,SAA9B,CAAd;MACA,IAAI6c,GAAG,GAAGvnF,8DAAQ,CAAC,MAAD,EAAS8D,IAAI,CAAC8T,OAAd,CAAlB;MACA,IAAI1H,IAAI,GAAGlQ,8DAAQ,CAAC,MAAD,EAAS8D,IAAI,CAAC8T,OAAd,CAAnB;MACAk4E,OAAO,CAACtpF,SAAR,GAAoB+gF,GAAG,CAACp1E,MAAJ,CAAW,CAAX,EAAco1E,GAAG,CAAC3nF,MAAJ,GAAasQ,IAAI,CAACtQ,MAAhC,CAApB;IACH;;IACD,KAAKmwF,cAAL,CAAoBjsF,IAApB;IACA,IAAIilB,SAAS,GAAG;MACZxjB,OAAO,EAAEzB,IAAI,CAACyiD,IADF;MAEZoyB,WAAW,EAAE70E,IAAI,CAAC8T,OAFN;MAGZsrB,MAAM,EAAE;IAHI,CAAhB;IAKA,KAAKr+B,MAAL,CAAY+rB,OAAZ,CAAoB,UAApB,EAAgC7H,SAAhC;EACH,CAfD;;EAgBAmhE,cAAc,CAACzrF,SAAf,CAAyBsxF,cAAzB,GAA0C,UAAUjsF,IAAV,EAAgB;IACtD,IAAI,CAAC,KAAKe,MAAL,CAAYmrF,kBAAjB,EAAqC;MACjC;IACH;;IACD,IAAIC,YAAY,GAAG3pB,uEAAc,CAAC5gE,+DAAD,EAAgB,KAAhB,EAAuB;MACpDghF,OAAO,EAAE,KAD2C;MAEpDjM,QAAQ,EAAE;IAF0C,CAAvB,CAAjC;IAIAwV,YAAY,CAAC3+D,YAAb,CAA0B,MAA1B,EAAkC,UAAlC;IACA2+D,YAAY,CAAC3+D,YAAb,CAA0B,cAA1B,EAA0C,OAA1C;IACAxtB,IAAI,CAACyiD,IAAL,CAAUpzB,iBAAV,CAA4BD,YAA5B,CAAyC+8D,YAAzC,EAAuDnsF,IAAI,CAACyiD,IAAL,CAAUpzB,iBAAV,CAA4ByB,UAA5B,CAAuC,CAAvC,CAAvD;EACH,CAXD;;EAYAs1D,cAAc,CAACzrF,SAAf,CAAyByxF,cAAzB,GAA0C,UAAUpsF,IAAV,EAAgB;IACtD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;MACnC,KAAK91D,OAAL;;MACA,IAAI,KAAKpc,MAAL,CAAYspF,oBAAhB,EAAsC;QAClC,KAAKtpF,MAAL,CAAY4xB,aAAZ,CAA0B;UAAEg/C,aAAa,EAAE;QAAjB,CAA1B,EAAiD,IAAjD;MACH;;MACD,KAAKtrC,MAAL,CAAYrmC,IAAZ;MACA;;MACA,IAAI9D,8DAAQ,CAAC,MAAD,EAAS8D,IAAT,CAAR,KAA2B,eAA3B,IAA8C,KAAKe,MAAL,CAAY2yE,UAAZ,KAA2B,MAAzE,IACA,KAAK3yE,MAAL,CAAYyvE,KADZ,IACqB,KAAKzvE,MAAL,CAAY2vE,aADjC,IACkD,KAAK3vE,MAAL,CAAY2vE,aAAZ,CAA0B50E,MAA1B,KAAqC,CAD3F,EAC8F;QAC1F,IAAIuwF,OAAO,GAAG,KAAKC,UAAL,CAAgB,KAAKvrF,MAAL,CAAY2vE,aAA5B,CAAd;QACA,IAAI7iE,QAAQ,GAAG,CAAf;;QACA,OAAOA,QAAQ,GAAGw+E,OAAO,CAACvwF,MAA1B,EAAkC;UAC9Bu1E,OAAO,CAAC,KAAKsZ,QAAL,CAAc0B,OAAO,CAACx+E,QAAD,CAArB,CAAD,CAAP;UACAA,QAAQ;QACX;MACJ;;MACD,IAAIm9E,SAAS,GAAG,KAAKvpF,OAAL,CAAaO,gBAAb,CAA8B,MAAMilE,MAApC,CAAhB;;MACA,IAAI+jB,SAAS,CAAClvF,MAAV,KAAqB,CAAzB,EAA4B;QACxB,KAAK2F,OAAL,CAAamB,KAAb;MACH;;MACD,KAAKyoF,SAAL;MACA,KAAKtqF,MAAL,CAAY+wE,cAAZ,GAA6B,KAA7B;IACH,CAtBD,MAuBK;MACD,KAAKrwE,OAAL,CAAa+rB,YAAb,CAA0B,UAA1B,EAAsC,IAAtC;IACH;EACJ,CA3BD;;EA4BA44D,cAAc,CAACzrF,SAAf,CAAyB0wF,SAAzB,GAAqC,YAAY;IAC7C,IAAIkB,QAAQ,GAAG,KAAK9qF,OAAL,CAAaO,gBAAb,CAA8B,MAAMilE,MAApC,CAAf;;IACA,IAAIslB,QAAJ,EAAc;MACV,IAAIC,WAAW,GAAG,CAAlB;;MACA,OAAOA,WAAW,GAAGD,QAAQ,CAACzwF,MAA9B,EAAsC;QAClC,KAAK2wF,UAAL,CAAgBF,QAAQ,CAACC,WAAD,CAAxB,EAAuC,IAAvC;QACAA,WAAW;MACd;IACJ;EACJ,CATD,CA5SsD,CAsTtD;;;EACApG,cAAc,CAACzrF,SAAf,CAAyByvF,UAAzB,GAAsC,UAAUpqF,IAAV,EAAgB;IAClD,IAAIvD,CAAC,GAAG,CAAR,CADkD,CAElD;;IACA,IAAI+tD,KAAK,GAAG1tC,IAAI,CAACC,KAAL,CAAWD,IAAI,CAAC2rB,SAAL,CAAezoC,IAAI,CAACyyE,KAApB,CAAX,CAAZ;;IACA,OAAOh2E,CAAC,GAAG+tD,KAAK,CAAC1uD,MAAjB,EAAyB;MACrB,IAAI4wF,IAAI,GAAG9Y,QAAQ,CAACppB,KAAK,CAAC/tD,CAAD,CAAN,CAAnB;MACA,IAAIkwF,MAAM,GAAGzwF,8DAAQ,CAAC,MAAD,EAASsuD,KAAK,CAAC/tD,CAAD,CAAd,CAArB;MACA,IAAIk+D,QAAQ,GAAGkf,WAAW,CAAC,KAAK94E,MAAN,EAAcypD,KAAK,CAAC/tD,CAAD,CAAnB,CAA1B;MACA,IAAI6wB,SAAS,GAAK,KAAKvsB,MAAL,CAAY4wE,aAAZ,IACd,KAAK5wE,MAAL,CAAY4wE,aAAZ,CAA0BxzE,OAA1B,CAAkCw8D,QAAlC,MAAgD,CAAC,CADrC,GAEZyN,UAAU,GAAG,WAFD,GAEeA,UAF/B;;MAGA,IAAI,CAACiT,aAAa,CAAC7wB,KAAK,CAAC/tD,CAAD,CAAN,CAAlB,EAA8B;QAC1B6wB,SAAS,IAAI,MAAMuuD,cAAc,CAACrxB,KAAK,CAAC/tD,CAAD,CAAN,CAAjC;MACH;;MACD,IAAIiwF,IAAI,KAAKzkB,UAAT,IAAuB,KAAKlnE,MAAL,CAAY6rF,aAAnC,IAAoDtZ,aAAa,CAAC9oB,KAAK,CAAC/tD,CAAD,CAAN,CAArE,EAAiF;QAC7E,IAAIg4E,MAAM,GAAGJ,WAAW,CAAC,KAAKtzE,MAAN,EAAcypD,KAAK,CAAC/tD,CAAD,CAAnB,CAAxB;QACAI,8DAAQ,CAAC,cAAD,EAAiB43E,MAAjB,EAAyBjqB,KAAK,CAAC/tD,CAAD,CAA9B,CAAR;QACAI,8DAAQ,CAAC,eAAD,EAAkB;UAAEwoF,GAAG,EAAEsH;QAAP,CAAlB,EAAmCniC,KAAK,CAAC/tD,CAAD,CAAxC,CAAR;MACH,CAJD,MAKK;QACDI,8DAAQ,CAAC,UAAD,EAAa6vF,IAAb,EAAmBliC,KAAK,CAAC/tD,CAAD,CAAxB,CAAR;MACH;;MACDI,8DAAQ,CAAC,cAAD,EAAiB;QAAE+mE,KAAK,EAAEt2C,SAAT;QAAoBu/D,KAAK,EAAEF;MAA3B,CAAjB,EAAsDniC,KAAK,CAAC/tD,CAAD,CAA3D,CAAR;MACAA,CAAC;IACJ;;IACD,OAAO+tD,KAAP;EACH,CA1BD;;EA2BA47B,cAAc,CAACzrF,SAAf,CAAyBmyF,aAAzB,GAAyC,UAAU9sF,IAAV,EAAgB;IACrD,KAAKqmC,MAAL,CAAYrmC,IAAZ;EACH,CAFD;;EAGAomF,cAAc,CAACzrF,SAAf,CAAyBoyF,WAAzB,GAAuC,UAAU/sF,IAAV,EAAgB;IACnD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;MACnC;IACH;;IACD,KAAKmZ,cAAL,CAAoBpsF,IAApB;IACA,KAAKgtF,WAAL;IACA,KAAKjC,WAAL,CAAiB,CAAC7uF,8DAAQ,CAAC,KAAK6E,MAAL,CAAYyuE,KAAZ,GAAoB,IAApB,GAA2B,MAA5B,EAAoC,KAAKzuE,MAAL,CAAYu9E,WAAhD,CAAT,CAAjB;IACA,KAAKv9E,MAAL,CAAYu9E,WAAZ,GAA0B,IAA1B;IACA,KAAKv9E,MAAL,CAAY8xE,oBAAZ,CAAiCpxE,OAAjC,CAAyCmB,KAAzC;EACH,CATD;;EAUAwjF,cAAc,CAACzrF,SAAf,CAAyBsyF,cAAzB,GAA0C,YAAY;IAClD,IAAI,KAAKlsF,MAAL,CAAYkwE,YAAZ,KAA6B,gBAAjC,EAAmD;MAC/C,KAAKic,kBAAL;IACH;EACJ,CAJD;;EAKA9G,cAAc,CAACzrF,SAAf,CAAyBwyF,YAAzB,GAAwC,YAAY;IAChD,IAAI,KAAKpsF,MAAL,CAAYkwE,YAAZ,KAA6B,gBAAjC,EAAmD;MAC/C0K,MAAM,CAAC,KAAK56E,MAAN,EAAc,KAAKA,MAAL,CAAY4wE,aAA1B,EAAyC,KAAK5wE,MAAL,CAAYuuE,IAArD,EAA2D,QAA3D,CAAN;IACH;EACJ,CAJD;EAKA;;;EACA8W,cAAc,CAACzrF,SAAf,CAAyByyF,WAAzB,GAAuC,UAAUptF,IAAV,EAAgB;IACnD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;MACnC;IACH;;IACD,KAAKmZ,cAAL,CAAoBpsF,IAApB;IACA,KAAKe,MAAL,CAAY4xB,aAAZ,CAA0B;MAAEg/C,aAAa,EAAE;IAAjB,CAA1B,EAAiD,IAAjD;IACA,KAAKqb,WAAL;EACH,CAPD;;EAQA5G,cAAc,CAACzrF,SAAf,CAAyB0yF,YAAzB,GAAwC,UAAUrtF,IAAV,EAAgB;IACpD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;MACnC;IACH;;IACD,KAAKmZ,cAAL,CAAoBpsF,IAApB;EACH,CALD;;EAMAomF,cAAc,CAACzrF,SAAf,CAAyB2yF,YAAzB,GAAwC,YAAY;IAChD,IAAI,KAAKvsF,MAAL,CAAYkwE,YAAZ,KAA6B,gBAA7B,IAAiD,KAAKlwE,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAA1F,EAA6F;MACzF,KAAKyxF,gBAAL;IACH;EACJ,CAJD;;EAKAnH,cAAc,CAACzrF,SAAf,CAAyB6yF,aAAzB,GAAyC,UAAUxtF,IAAV,EAAgB;IACrD,KAAKe,MAAL,CAAYyvE,KAAZ,GAAoB,KAApB;IACA;;IACA,IAAI,KAAKzvE,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAhC,CAA0C/vE,OAA1C,CAAkDpF,KAAlD,KAA4D,EAAhE,EAAoE;MAChE,KAAK0E,MAAL,CAAY0sF,aAAZ,GAA4B,EAA5B;IACH;;IACD,IAAI,KAAK1sF,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;MACnCxC,UAAU,CAAC,KAAK1vE,MAAN,CAAV;MACA,KAAKA,MAAL,CAAY4xB,aAAZ,CAA0B;QAAEg/C,aAAa,EAAE;MAAjB,CAA1B,EAAiD,IAAjD;MACA,KAAKya,cAAL,CAAoBpsF,IAApB;;MACA,IAAI,KAAKe,MAAL,CAAY09E,WAAhB,EAA6B;QACzB,KAAKuO,WAAL;QACA,KAAKU,YAAL,CAAkB,KAAK3sF,MAAL,CAAY09E,WAA9B;QACA,KAAK19E,MAAL,CAAY09E,WAAZ,GAA0B,IAA1B;MACH;IACJ;EACJ,CAhBD;;EAiBA2H,cAAc,CAACzrF,SAAf,CAAyBgzF,UAAzB,GAAsC,UAAU3tF,IAAV,EAAgB;IAClD,IAAI,KAAKe,MAAL,CAAYkwE,YAAZ,KAA6B,gBAAjC,EAAmD;MAC/C,KAAK2c,YAAL,CAAkB5tF,IAAI,CAAC+2B,MAAvB;IACH;EACJ,CAJD;;EAKAqvD,cAAc,CAACzrF,SAAf,CAAyBkzF,YAAzB,GAAwC,YAAY;IAChD,IAAI,KAAK9sF,MAAL,CAAYkyE,IAAZ,KAAqB,YAArB,IAAqC,KAAKxxE,OAA9C,EAAuD;MACnD,KAAKA,OAAL,CAAaqsB,SAAb,CAAuB9B,GAAvB,CAA2B8+C,YAA3B;IACH;EACJ,CAJD;;EAKAsb,cAAc,CAACzrF,SAAf,CAAyBmzF,eAAzB,GAA2C,YAAY;IACnD,IAAI,KAAK/sF,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;MACnC,KAAKkW,SAAL,GAAiB,KAAK4E,YAAL,EAAjB;MACA,IAAIC,QAAQ,GAAG,KAAKC,WAAL,EAAf;MACA,IAAIC,OAAO,GAAG;QAAE73C,OAAO,EAAE,IAAX;QAAiBE,QAAQ,EAAE;MAA3B,CAAd;MACA,KAAK43C,WAAL,CAAiBH,QAAjB,EAA2BE,OAA3B;MACA,KAAK7H,aAAL,GAAqB,IAArB;MACA,KAAKnF,YAAL,GAAoB,IAApB;IACH;EACJ,CATD;;EAUAkF,cAAc,CAACzrF,SAAf,CAAyByzF,cAAzB,GAA0C,YAAY;IAClD,IAAI,KAAKrtF,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;MACnC,KAAKob,cAAL;MACA,KAAKhI,aAAL,GAAqB,IAArB;MACA,KAAKnF,YAAL,GAAoB,IAApB;IACH;EACJ,CAND;;EAOAkF,cAAc,CAACzrF,SAAf,CAAyB2zF,eAAzB,GAA2C,YAAY;IACnD,KAAKv8D,UAAL,GAAkB,KAAlB;EACH,CAFD;;EAGAq0D,cAAc,CAACzrF,SAAf,CAAyB4zF,cAAzB,GAA0C,YAAY;IAClD,KAAKx8D,UAAL,GAAkB,IAAlB;EACH,CAFD;EAGA;;;EACAq0D,cAAc,CAACzrF,SAAf,CAAyBq5D,QAAzB,GAAoC,UAAUh0D,IAAV,EAAgB;IAChD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;MACnC,KAAKlyE,MAAL,CAAY4xB,aAAZ,CAA0B;QAAEg/C,aAAa,EAAE;MAAjB,CAA1B,EAAiD,IAAjD;MACA,KAAK5wE,MAAL,CAAYgb,MAAZ,CAAmB6wD,gBAAnB,EAAqC,EAArC;MACA,KAAK7rE,MAAL,CAAY0sF,aAAZ,GAA4BztF,IAAI,CAACyyE,KAAjC;MACA,KAAK2Z,cAAL,CAAoBpsF,IAApB;IACH;EACJ,CAPD;;EAQAomF,cAAc,CAACzrF,SAAf,CAAyB6zF,eAAzB,GAA2C,YAAY;IACnD,IAAI,KAAKztF,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;MACnC;IACH;;IACD,KAAKqX,YAAL;EACH,CALD;;EAMAlE,cAAc,CAACzrF,SAAf,CAAyB8zF,qBAAzB,GAAiD,YAAY;IACzD,IAAI,KAAK1tF,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;MACnC;IACH;;IACD,KAAKia,kBAAL;EACH,CALD;;EAMA9G,cAAc,CAACzrF,SAAf,CAAyB+zF,YAAzB,GAAwC,YAAY;IAChD,IAAI,KAAK3tF,MAAL,CAAYkyE,IAAZ,KAAqB,YAArB,IAAqC,CAAC/1E,uEAAiB,CAAC,KAAKmsF,OAAN,CAAvD,IACA,KAAKtoF,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAhC,CAA0C/vE,OAA1C,CAAkDpF,KAAlD,KAA4D,EAD5D,IACkE,CAAC,KAAK0E,MAAL,CAAY0wE,UAD/E,IAEG,KAAK1wE,MAAL,CAAYmlD,MAAZ,KAAuB,YAF9B,EAE4C;MACxC,KAAKnlD,MAAL,CAAYmlD,MAAZ,GAAqB,MAArB;MACA,KAAKnlD,MAAL,CAAYgb,MAAZ,CAAmBkxD,YAAnB,EAAiC,EAAjC;IACH;EACJ,CAPD;;EAQAmZ,cAAc,CAACzrF,SAAf,CAAyBsB,mBAAzB,GAA+C,YAAY;IACvD,IAAI,KAAK8E,MAAL,CAAY6xB,WAAhB,EAA6B;MACzB;IACH;;IACD,KAAK7xB,MAAL,CAAY6a,GAAZ,CAAgBuyD,UAAhB,EAA4B,KAAKugB,YAAjC;IACA,KAAK3tF,MAAL,CAAY6a,GAAZ,CAAgB6vD,WAAhB,EAA6B,KAAKqhB,aAAlC;IACA,KAAK/rF,MAAL,CAAY6a,GAAZ,CAAgB8vD,SAAhB,EAA2B,KAAKqhB,WAAhC;IACA,KAAKhsF,MAAL,CAAY6a,GAAZ,CAAgB8xD,YAAhB,EAA8B,KAAKuf,cAAnC;IACA,KAAKlsF,MAAL,CAAY6a,GAAZ,CAAgBkwD,UAAhB,EAA4B,KAAKqhB,YAAjC;IACA,KAAKpsF,MAAL,CAAY6a,GAAZ,CAAgBmwD,SAAhB,EAA2B,KAAKqhB,WAAhC;IACA,KAAKrsF,MAAL,CAAY6a,GAAZ,CAAgBowD,UAAhB,EAA4B,KAAKqhB,YAAjC;IACA,KAAKtsF,MAAL,CAAY6a,GAAZ,CAAgBuwD,WAAhB,EAA6B,KAAKqhB,aAAlC;IACA,KAAKzsF,MAAL,CAAY6a,GAAZ,CAAgBoxD,YAAhB,EAA8B,KAAKof,cAAnC;IACA,KAAKrrF,MAAL,CAAY6a,GAAZ,CAAgBiqC,MAAhB,EAAwB,KAAKmO,QAA7B;IACA,KAAKjzD,MAAL,CAAY6a,GAAZ,CAAgB8wD,QAAhB,EAA0B,KAAKihB,UAA/B;IACA,KAAK5sF,MAAL,CAAY6a,GAAZ,CAAgB+wD,OAAhB,EAAyB,KAAK6gB,aAA9B;IACA,KAAKzsF,MAAL,CAAY6a,GAAZ,CAAgB2vD,YAAhB,EAA8B,KAAKj4C,iBAAnC;IACA,KAAKvyB,MAAL,CAAY6a,GAAZ,CAAgBizD,UAAhB,EAA4B,KAAK8f,YAAjC;IACA,KAAK5tF,MAAL,CAAY6a,GAAZ,CAAgB6wD,aAAhB,EAA+B,KAAKmiB,eAApC;IACA,KAAK7tF,MAAL,CAAY6a,GAAZ,CAAgByxD,UAAhB,EAA4B,KAAKigB,YAAjC;IACA,KAAKvsF,MAAL,CAAY6a,GAAZ,CAAgB2xD,SAAhB,EAA2B,KAAKigB,aAAhC;IACA,KAAKzsF,MAAL,CAAY6a,GAAZ,CAAgBmyD,UAAhB,EAA4B,KAAK8f,YAAjC;IACA,KAAK9sF,MAAL,CAAY6a,GAAZ,CAAgBixD,aAAhB,EAA+B,KAAKihB,eAApC;IACA,KAAK/sF,MAAL,CAAY6a,GAAZ,CAAgBkxD,YAAhB,EAA8B,KAAKshB,cAAnC;IACA,KAAKrtF,MAAL,CAAY6a,GAAZ,CAAgBwxD,YAAhB,EAA8B,KAAKyhB,cAAnC;IACA,KAAK9tF,MAAL,CAAY6a,GAAZ,CAAgBwwD,aAAhB,EAA+B,KAAKkiB,eAApC;IACA,KAAKvtF,MAAL,CAAY6a,GAAZ,CAAgB0wD,YAAhB,EAA8B,KAAKiiB,cAAnC;IACA,KAAKxtF,MAAL,CAAY6a,GAAZ,CAAgBswD,cAAhB,EAAgC,KAAK4iB,qBAArC;IACA,KAAK/tF,MAAL,CAAY6a,GAAZ,CAAgBqwD,SAAhB,EAA2B,KAAK8iB,aAAhC;IACA,KAAKhuF,MAAL,CAAY6a,GAAZ,CAAgBgyD,SAAhB,EAA2B,KAAKohB,WAAhC;IACA,KAAKjuF,MAAL,CAAY6a,GAAZ,CAAgBiyD,QAAhB,EAA0B,KAAKohB,UAA/B;IACA,KAAKluF,MAAL,CAAY6a,GAAZ,CAAgB+xD,WAAhB,EAA6B,KAAKuhB,aAAlC;IACA,KAAKnuF,MAAL,CAAY6a,GAAZ,CAAgB2yD,QAAhB,EAA0B,KAAKod,UAA/B;IACA,KAAK5qF,MAAL,CAAY6a,GAAZ,CAAgBuxD,WAAhB,EAA6B,KAAKgiB,aAAlC;IACA,KAAKpuF,MAAL,CAAY6a,GAAZ,CAAgB4wD,aAAhB,EAA+B,KAAKgiB,eAApC;IACA,KAAKztF,MAAL,CAAY6a,GAAZ,CAAgB6yD,QAAhB,EAA0B,KAAK2gB,UAA/B;IACA,KAAKruF,MAAL,CAAY6a,GAAZ,CAAgBgzD,mBAAhB,EAAqC,KAAK6f,qBAA1C;IACA,KAAK1tF,MAAL,CAAY6a,GAAZ,CAAgB+vD,SAAhB,EAA2B,KAAK6hB,aAAhC;EACH,CAtCD;;EAuCApH,cAAc,CAACzrF,SAAf,CAAyBoB,gBAAzB,GAA4C,YAAY;IACpD,KAAKgF,MAAL,CAAYwa,EAAZ,CAAe4yD,UAAf,EAA2B,KAAKugB,YAAhC,EAA8C,IAA9C;IACA,KAAK3tF,MAAL,CAAYwa,EAAZ,CAAekwD,WAAf,EAA4B,KAAKqhB,aAAjC,EAAgD,IAAhD;IACA,KAAK/rF,MAAL,CAAYwa,EAAZ,CAAemwD,SAAf,EAA0B,KAAKqhB,WAA/B,EAA4C,IAA5C;IACA,KAAKhsF,MAAL,CAAYwa,EAAZ,CAAeywD,UAAf,EAA2B,KAAKqhB,YAAhC,EAA8C,IAA9C;IACA,KAAKtsF,MAAL,CAAYwa,EAAZ,CAAemyD,YAAf,EAA6B,KAAKuf,cAAlC,EAAkD,IAAlD;IACA,KAAKlsF,MAAL,CAAYwa,EAAZ,CAAe4wD,WAAf,EAA4B,KAAKqhB,aAAjC,EAAgD,IAAhD;IACA,KAAKzsF,MAAL,CAAYwa,EAAZ,CAAeuwD,UAAf,EAA2B,KAAKqhB,YAAhC,EAA8C,IAA9C;IACA,KAAKpsF,MAAL,CAAYwa,EAAZ,CAAeqyD,SAAf,EAA0B,KAAKohB,WAA/B,EAA4C,IAA5C;IACA,KAAKjuF,MAAL,CAAYwa,EAAZ,CAAewwD,SAAf,EAA0B,KAAKqhB,WAA/B,EAA4C,IAA5C;IACA,KAAKrsF,MAAL,CAAYwa,EAAZ,CAAeyxD,YAAf,EAA6B,KAAKof,cAAlC,EAAkD,IAAlD;IACA,KAAKrrF,MAAL,CAAYwa,EAAZ,CAAesqC,MAAf,EAAuB,KAAKmO,QAA5B,EAAsC,IAAtC;IACA,KAAKjzD,MAAL,CAAYwa,EAAZ,CAAemxD,QAAf,EAAyB,KAAKihB,UAA9B,EAA0C,IAA1C;IACA,KAAK5sF,MAAL,CAAYwa,EAAZ,CAAe8xD,UAAf,EAA2B,KAAKigB,YAAhC,EAA8C,IAA9C;IACA,KAAKvsF,MAAL,CAAYwa,EAAZ,CAAegyD,SAAf,EAA0B,KAAKigB,aAA/B,EAA8C,IAA9C;IACA,KAAKzsF,MAAL,CAAYwa,EAAZ,CAAeoxD,OAAf,EAAwB,KAAK6gB,aAA7B,EAA4C,IAA5C;IACA,KAAKzsF,MAAL,CAAYwa,EAAZ,CAAegwD,YAAf,EAA6B,KAAKj4C,iBAAlC,EAAqD,IAArD;IACA,KAAKvyB,MAAL,CAAYwa,EAAZ,CAAeszD,UAAf,EAA2B,KAAK8f,YAAhC,EAA8C,IAA9C;IACA,KAAK5tF,MAAL,CAAYwa,EAAZ,CAAekxD,aAAf,EAA8B,KAAKmiB,eAAnC,EAAoD,IAApD;IACA,KAAK7tF,MAAL,CAAYwa,EAAZ,CAAewyD,UAAf,EAA2B,KAAK8f,YAAhC,EAA8C,IAA9C;IACA,KAAK9sF,MAAL,CAAYwa,EAAZ,CAAesxD,aAAf,EAA8B,KAAKihB,eAAnC,EAAoD,IAApD;IACA,KAAK/sF,MAAL,CAAYwa,EAAZ,CAAeuxD,YAAf,EAA6B,KAAKshB,cAAlC,EAAkD,IAAlD;IACA,KAAKrtF,MAAL,CAAYwa,EAAZ,CAAe6xD,YAAf,EAA6B,KAAKyhB,cAAlC,EAAkD,IAAlD;IACA,KAAK9tF,MAAL,CAAYwa,EAAZ,CAAe6wD,aAAf,EAA8B,KAAKkiB,eAAnC,EAAoD,IAApD;IACA,KAAKvtF,MAAL,CAAYwa,EAAZ,CAAe+wD,YAAf,EAA6B,KAAKiiB,cAAlC,EAAkD,IAAlD;IACA,KAAKxtF,MAAL,CAAYwa,EAAZ,CAAegzD,QAAf,EAAyB,KAAKod,UAA9B,EAA0C,IAA1C;IACA,KAAK5qF,MAAL,CAAYwa,EAAZ,CAAe4xD,WAAf,EAA4B,KAAKgiB,aAAjC,EAAgD,IAAhD;IACA,KAAKpuF,MAAL,CAAYwa,EAAZ,CAAe2wD,cAAf,EAA+B,KAAK4iB,qBAApC,EAA2D,IAA3D;IACA,KAAK/tF,MAAL,CAAYwa,EAAZ,CAAe0wD,SAAf,EAA0B,KAAK8iB,aAA/B,EAA8C,IAA9C;IACA,KAAKhuF,MAAL,CAAYwa,EAAZ,CAAesyD,QAAf,EAAyB,KAAKohB,UAA9B,EAA0C,IAA1C;IACA,KAAKluF,MAAL,CAAYwa,EAAZ,CAAeoyD,WAAf,EAA4B,KAAKuhB,aAAjC,EAAgD,IAAhD;IACA,KAAKnuF,MAAL,CAAYwa,EAAZ,CAAeixD,aAAf,EAA8B,KAAKgiB,eAAnC,EAAoD,IAApD;IACA,KAAKztF,MAAL,CAAYwa,EAAZ,CAAekzD,QAAf,EAAyB,KAAK2gB,UAA9B,EAA0C,IAA1C;IACA,KAAKruF,MAAL,CAAYwa,EAAZ,CAAeqzD,mBAAf,EAAoC,KAAK6f,qBAAzC,EAAgE,IAAhE;IACA,KAAK1tF,MAAL,CAAYwa,EAAZ,CAAeowD,SAAf,EAA0B,KAAK6hB,aAA/B,EAA8C,IAA9C;EACH,CAnCD;;EAoCApH,cAAc,CAACzrF,SAAf,CAAyBi0F,eAAzB,GAA2C,YAAY;IAAE,KAAKvI,aAAL,GAAqB,IAArB;IAA2B,KAAKnF,YAAL,GAAoB,IAApB;EAA2B,CAA/G,CAvhBsD,CAwhBtD;;;EACAkF,cAAc,CAACzrF,SAAf,CAAyBk0F,cAAzB,GAA0C,UAAU7uF,IAAV,EAAgB;IACtD,IAAI,KAAKe,MAAL,CAAYkwE,YAAZ,KAA6B,KAAKp9C,aAAL,EAAjC,EAAuD;MACnD,IAAI7F,GAAG,GAAG0C,6DAAO,CAAC1wB,IAAI,CAAC+2B,MAAN,EAAc,IAAd,CAAjB;MACA,KAAKh2B,MAAL,CAAYmxE,QAAZ,GAAuB,CAAC,KAAKwZ,aAAL,CAAmB19D,GAAnB,CAAD,CAAvB;IACH;EACJ,CALD;;EAMAo4D,cAAc,CAACzrF,SAAf,CAAyBw0F,aAAzB,GAAyC,YAAY;IACjD,IAAI,KAAKpuF,MAAL,CAAYkwE,YAAZ,KAA6B,KAAKp9C,aAAL,EAAjC,EAAuD;MACnD,IAAI,KAAK9yB,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAzC,EAA4C;QACxC,KAAKoxF,kBAAL;MACH,CAFD,MAGK;QACD,KAAKnsF,MAAL,CAAYmxE,QAAZ,GAAuB,CAACh2E,8DAAQ,CAAC,KAAK6E,MAAL,CAAY0uE,MAAZ,CAAmB,KAAK1uE,MAAL,CAAY0uE,MAAZ,CAAmB3zE,MAAnB,GAA4B,CAA/C,CAAD,EAAoD,KAAKiF,MAAL,CAAYuvE,QAAhE,CAAT,CAAvB;MACH;IACJ;EACJ,CATD;;EAUA8V,cAAc,CAACzrF,SAAf,CAAyBq0F,WAAzB,GAAuC,YAAY;IAC/C,IAAI,KAAKjuF,MAAL,CAAYkwE,YAAZ,KAA6B,KAAKp9C,aAAL,EAAjC,EAAuD;MACnD,KAAK9yB,MAAL,CAAYmxE,QAAZ,GAAwB,KAAKnxE,MAAL,CAAY42E,UAAZ,KAA2B,EAA5B,GAAkC,CAACxF,aAAa,CAAC,KAAKpxE,MAAN,CAAd,CAAlC,GACnB,CAAC,KAAK2qF,aAAL,CAAmB37D,4DAAM,CAAC,WAAD,EAAc,KAAKtuB,OAAnB,CAAzB,CAAD,CADJ;IAEH;EACJ,CALD;;EAMA2kF,cAAc,CAACzrF,SAAf,CAAyBu0F,aAAzB,GAAyC,YAAY;IACjD,IAAI,KAAKnuF,MAAL,CAAYkwE,YAAZ,KAA6B,KAAKp9C,aAAL,EAAjC,EAAuD;MACnD,IAAIm3D,SAAS,GAAG,KAAKvpF,OAAL,CAAaO,gBAAb,CAA8B,MAAMilE,MAApC,CAAhB;MACA,KAAKlmE,MAAL,CAAYuwE,aAAZ,GAA4B,EAA5B;MACA,KAAKvwE,MAAL,CAAYgwE,cAAZ,GAA6B,EAA7B;;MACA,KAAK,IAAIt0E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGuuF,SAAS,CAAClvF,MAA9B,EAAsCW,CAAC,EAAvC,EAA2C;QACvC,KAAKsE,MAAL,CAAYgwE,cAAZ,CAA2BxwE,IAA3B,CAAgCyqF,SAAS,CAACvuF,CAAD,CAAzC;QACA,KAAKsE,MAAL,CAAYuwE,aAAZ,CAA0B/wE,IAA1B,CAA+B,KAAKmrF,aAAL,CAAmBV,SAAS,CAACvuF,CAAD,CAA5B,CAA/B;MACH;IACJ;EACJ,CAVD;;EAWA2pF,cAAc,CAACzrF,SAAf,CAAyBs0F,UAAzB,GAAsC,UAAUjvF,IAAV,EAAgB;IAClD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;MACnC,KAAKuT,gBAAL,GAAwB,IAAxB;;MACA,IAAI,KAAKzlF,MAAL,CAAYuuE,IAAZ,KAAqB,KAAKvuE,MAAL,CAAYu8E,eAAjC,IAAoD,KAAKv8E,MAAL,CAAYuuE,IAAZ,KAAqBoJ,gBAAgB,CAAC,KAAK33E,MAAN,EAAcf,IAAd,CAA7F,EAAkH;QAC9G,KAAKwtF,aAAL,CAAmBxtF,IAAnB;MACH;IACJ;EACJ,CAPD;;EAQAomF,cAAc,CAACzrF,SAAf,CAAyBy0F,UAAzB,GAAsC,UAAUpvF,IAAV,EAAgB;IAClD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;MACnC,KAAKuT,gBAAL,GAAwB,IAAxB;MACA,KAAKgH,aAAL,CAAmBxtF,IAAnB;IACH;EACJ,CALD;;EAMAomF,cAAc,CAACzrF,SAAf,CAAyB24B,iBAAzB,GAA6C,UAAUhyB,CAAV,EAAa;IACtD,IAAI+tF,eAAJ;;IACA,IAAI/tF,CAAC,CAAC89B,MAAF,KAAa,KAAKvL,aAAL,EAAb,IAAqCvyB,CAAC,CAAC89B,MAAF,KAAa,QAAtD,EAAgE;MAC5D;IACH;;IACD,KAAK,IAAInhC,EAAE,GAAG,CAAT,EAAY8F,EAAE,GAAGhG,MAAM,CAACjB,IAAP,CAAYwE,CAAC,CAAC46B,OAAd,CAAtB,EAA8Cj+B,EAAE,GAAG8F,EAAE,CAACjI,MAAtD,EAA8DmC,EAAE,EAAhE,EAAoE;MAChE,IAAI6G,IAAI,GAAGf,EAAE,CAAC9F,EAAD,CAAb;;MACA,QAAQ6G,IAAR;QACI,KAAK,kBAAL;UACI,KAAK+lF,aAAL;UACA;;QACJ,KAAK,QAAL;UACI,KAAKP,YAAL;UACA;;QACJ,KAAK,eAAL;UACI,KAAKjE,aAAL,GAAqB,KAArB;UACA,KAAKnF,YAAL,GAAoB,KAApB;UACAmO,eAAe,GAAGnyF,uEAAiB,CAAC,KAAK6D,MAAL,CAAY4wE,aAAb,CAAjB,GAA+C,EAA/C,GAAoD,KAAK5wE,MAAL,CAAY4wE,aAAZ,CAA0B7vE,KAA1B,CAAgC,CAAhC,CAAtE;UACAutF,eAAe,GAAG,KAAKtuF,MAAL,CAAYuuF,mBAAZ,GAAkCD,eAAlC,GACdA,eAAe,CAACvtF,KAAhB,CAAsButF,eAAe,CAACvzF,MAAhB,GAAyB,CAA/C,CADJ;UAEA,KAAKiF,MAAL,CAAY4xB,aAAZ,CAA0B;YAAEg/C,aAAa,EAAE;UAAjB,CAA1B,EAAiD,IAAjD;UACA,KAAKyc,cAAL;;UACA,IAAIiB,eAAe,CAACvzF,MAApB,EAA4B;YACxB,KAAKivF,WAAL,CAAiBsE,eAAjB;UACH;;UACD,KAAKtuF,MAAL,CAAY4xB,aAAZ,CAA0B;YAAEg/C,aAAa,EAAE,KAAK5wE,MAAL,CAAY4wE;UAA7B,CAA1B,EAAwE,IAAxE;UACA,KAAK0U,aAAL,GAAqB,IAArB;UACA,KAAKnF,YAAL,GAAoB,IAApB;UACA;;QACJ,KAAK,eAAL;UACIh7C,OAAO,CAAC,KAAKnlC,MAAN,CAAP;UACA;;QACJ,KAAK,mBAAL;UACIgyE,IAAI,CAAC,KAAKhyE,MAAN,EAAcorE,WAAd,EAA2B,KAAKprE,MAAL,CAAYuuE,IAAvC,CAAJ;UACA;;QACJ,KAAK,iBAAL;UACIyD,IAAI,CAAC,KAAKhyE,MAAN,EAAcorE,WAAd,EAA2B,KAAKprE,MAAL,CAAYuuE,IAAvC,CAAJ;UACA;;QACJ,KAAK,qBAAL;UACI,IAAI,KAAKvuE,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;YACnC;UACH;;UACD/sC,OAAO,CAAC,KAAKnlC,MAAN,CAAP;UACA;;QACJ,KAAK,MAAL;UACIiyE,YAAY,CAAC,KAAKjyE,MAAN,EAAc,YAAd,CAAZ;UACA;MAvCR;IAyCH;EACJ,CAjDD;;EAkDAqlF,cAAc,CAACzrF,SAAf,CAAyBwiB,OAAzB,GAAmC,YAAY;IAC3C,IAAI,KAAKpc,MAAL,CAAY6xB,WAAhB,EAA6B;MACzB;IACH;;IACD,KAAK32B,mBAAL;;IACA,IAAI,KAAKotF,OAAT,EAAkB;MACd,KAAKC,YAAL;IACH;EACJ,CARD;;EASAlD,cAAc,CAACzrF,SAAf,CAAyBy6C,UAAzB,GAAsC,YAAY;IAC9C,KAAKm6C,cAAL,CAAoB,IAApB;IACA,KAAKC,cAAL,GAAsB,IAAIx5C,gEAAJ,CAAmB,KAAKv0C,OAAxB,EAAiC;MACnDy1C,SAAS,EAAE,KAAKu4C,gBAAL,CAAsB70F,IAAtB,CAA2B,IAA3B,CADwC;MAEnD87C,UAAU,EAAE,KAAKA,UAFkC;MAGnDzqB,SAAS,EAAE;IAHwC,CAAjC,CAAtB;IAKA,KAAKyjE,kBAAL,GAA0B,IAAI15C,gEAAJ,CAAmB,KAAKv0C,OAAxB,EAAiC;MACvDy1C,SAAS,EAAE,KAAKy4C,oBAAL,CAA0B/0F,IAA1B,CAA+B,IAA/B,CAD4C;MAEvD87C,UAAU,EAAE,KAAKA,UAFsC;MAGvDzqB,SAAS,EAAE;IAH4C,CAAjC,CAA1B;IAKAJ,kEAAA,CAAiB,KAAKpqB,OAAtB,EAA+B,WAA/B,EAA4C,KAAKmuF,WAAjD,EAA8D,IAA9D;EACH,CAbD;;EAcAxJ,cAAc,CAACzrF,SAAf,CAAyB2uF,YAAzB,GAAwC,YAAY;IAChD,KAAKiG,cAAL,CAAoB,KAApB;IACA1jE,qEAAA,CAAoB,KAAKpqB,OAAzB,EAAkC,WAAlC,EAA+C,KAAKmuF,WAApD;IACA,KAAKJ,cAAL,CAAoBryE,OAApB;IACA,KAAKuyE,kBAAL,CAAwBvyE,OAAxB;EACH,CALD;EAMA;;;EACAipE,cAAc,CAACzrF,SAAf,CAAyBi1F,WAAzB,GAAuC,UAAUtuF,CAAV,EAAa;IAChD,IAAIuuF,SAAS,GAAGn/D,6DAAO,CAACpvB,CAAC,CAACy1B,MAAH,EAAW,cAAX,CAAvB;IACA05C,UAAU,CAAC,KAAK1vE,MAAN,EAAc,OAAd,CAAV;;IACA,IAAI8uF,SAAS,KAAK,IAAlB,EAAwB;MACpBA,SAAS,CAAC/hE,SAAV,CAAoB9B,GAApB,CAAwBk7C,KAAxB;IACH;EACJ,CAND;;EAOAkf,cAAc,CAACzrF,SAAf,CAAyB40F,cAAzB,GAA0C,UAAUO,MAAV,EAAkB;IACxD,IAAIA,MAAJ,EAAY;MACR;MACA,IAAIC,OAAO,GAAG,IAAd;MACA,KAAKC,QAAL,GAAgB,IAAIx3C,uDAAJ,CAAU,KAAK/2C,OAAf,EAAwB;QACpCk5C,GAAG,EAAE,UAAUs1C,GAAV,EAAe;UAChBA,GAAG,CAACh2C,aAAJ,CAAkB9N,cAAlB;;UACA,IAAI4jD,OAAO,CAAChvF,MAAR,CAAempB,QAAnB,EAA6B;YACzB6lE,OAAO,CAACr3C,QAAR,GAAmBu3C,GAAG,CAACv3C,QAAvB;YACAq3C,OAAO,CAACG,QAAR,GAAmBD,GAAnB;YACA9vF,UAAU,CAAC,YAAY;cACnB,IAAI4vF,OAAO,CAACr3C,QAAR,GAAmB,CAAvB,EAA0B;gBACtBq3C,OAAO,CAACI,WAAR,CAAoBJ,OAAO,CAACG,QAA5B;cACH;;cACDH,OAAO,CAACr3C,QAAR,GAAmB,CAAnB;YACH,CALS,EAKP,GALO,CAAV;UAMH,CATD,MAUK;YACD,IAAIu3C,GAAG,CAACv3C,QAAJ,KAAiB,CAAjB,IAAsBu3C,GAAG,CAACh2C,aAAJ,CAAkBxD,KAAlB,KAA4B,CAAtD,EAAyD;cACrDs5C,OAAO,CAACK,eAAR,CAAwBH,GAAxB;YACH,CAFD,MAGK;cACDF,OAAO,CAACM,YAAR,CAAqBJ,GAArB;YACH;UACJ;QACJ,CArBmC;QAsBpCK,OAAO,EAAE,UAAUhvF,CAAV,EAAa;UAClB,IAAIyuF,OAAO,CAAChvF,MAAR,CAAempB,QAAnB,EAA6B;YACzB6lE,OAAO,CAACQ,WAAR,GAAsBR,OAAO,CAAChvF,MAAR,CAAeuuF,mBAAf,GAAqC,IAArC,GAA4C,KAAlE;;YACA,IAAIS,OAAO,CAAChvF,MAAR,CAAeuuF,mBAAnB,EAAwC;cACpC3hE,8DAAQ,CAAC,CAACoiE,OAAO,CAAChvF,MAAR,CAAeU,OAAhB,CAAD,EAA2B2kE,YAA3B,CAAR;YACH;;YACD2pB,OAAO,CAACM,YAAR,CAAqB/uF,CAArB;UACH;QACJ;MA9BmC,CAAxB,CAAhB;IAgCH,CAnCD,MAoCK;MACD,IAAI,KAAK0uF,QAAT,EAAmB;QACf,KAAKA,QAAL,CAAc7yE,OAAd;MACH;IACJ;EACJ,CA1CD;;EA2CAipE,cAAc,CAACzrF,SAAf,CAAyBw1F,WAAzB,GAAuC,UAAUF,GAAV,EAAe;IAClD,IAAIl5D,MAAM,GAAGk5D,GAAG,CAACh2C,aAAJ,CAAkBljB,MAA/B;IACA,IAAI0rB,IAAI,GAAG/xB,6DAAO,CAACqG,MAAD,EAAS,MAAM4vC,SAAf,CAAlB;;IACA,IAAI,KAAK4pB,WAAL,IAAoBx5D,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0By4C,WAA1B,CAApB,IAA8D3pE,uEAAiB,CAACulD,IAAD,CAAnF,EAA2F;MACvF,KAAK4tC,YAAL,CAAkBJ,GAAlB;IACH,CAFD,MAGK;MACD,KAAKlvF,MAAL,CAAYuqE,MAAZ,GAAqB,KAArB;MACA,KAAK7T,UAAL,CAAgBhV,IAAhB;;MACA,IAAI,CAAC,KAAK1hD,MAAL,CAAYuqE,MAAjB,EAAyB;QACrB,KAAK8kB,eAAL,CAAqBH,GAArB;MACH,CAFD,MAGK,IAAIA,GAAG,CAACv3C,QAAJ,KAAiB,CAArB,EAAwB;QACzB,KAAK23C,YAAL,CAAkBJ,GAAlB;QACA,KAAKG,eAAL,CAAqBH,GAArB;MACH,CAHI,MAIA;QACD,KAAKI,YAAL,CAAkBJ,GAAlB;MACH;IACJ;EACJ,CApBD;;EAqBA7J,cAAc,CAACzrF,SAAf,CAAyB01F,YAAzB,GAAwC,UAAU/uF,CAAV,EAAa;IACjD,IAAIy1B,MAAM,GAAGz1B,CAAC,CAAC24C,aAAF,CAAgBljB,MAA7B;IACA05C,UAAU,CAAC,KAAK1vE,MAAN,EAAc,OAAd,CAAV;IACA,KAAKotF,WAAL,CAAiBp3D,MAAjB,EAAyBz1B,CAAC,CAAC24C,aAA3B;IACA,KAAKl5C,MAAL,CAAYkwE,YAAZ,GAA2B,gBAA3B;EACH,CALD;EAMA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACImV,cAAc,CAACzrF,SAAf,CAAyBwzF,WAAzB,GAAuC,UAAUp3D,MAAV,EAAkBz1B,CAAlB,EAAqB;IACxD,IAAImhD,IAAI,GAAG/xB,6DAAO,CAACqG,MAAD,EAAS,MAAM4vC,SAAf,CAAlB;IACA,IAAI6pB,KAAK,GAAGz5D,MAAM,CAACjJ,SAAnB;IACA,KAAK/sB,MAAL,CAAYuqE,MAAZ,GAAqB,KAArB;IACA,IAAIz0C,MAAM,GAAG,QAAb;;IACA,IAAIv1B,CAAC,CAACm1C,KAAF,KAAY,CAAZ,IAAiB,CAACv5C,uEAAiB,CAACulD,IAAD,CAAnC,IAA6CA,IAAI,CAAC30B,SAAL,CAAeM,QAAf,CAAwB64C,MAAxB,CAAjD,EAAkF;MAC9E,KAAKxP,UAAL,CAAgBhV,IAAhB;MACA;IACH,CAHD,MAIK,IAAI,CAACvlD,uEAAiB,CAACulD,IAAD,CAAtB,EAA8B;MAC/B,IAAI,KAAK1hD,MAAL,CAAYuuF,mBAAZ,IAAmC7sC,IAAI,CAAC30B,SAAL,CAAeM,QAAf,CAAwB64C,MAAxB,CAAnC,KACI3lE,CAAC,CAAC+0C,OAAF,IAAatf,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0Bi5C,KAA1B,CADjB,CAAJ,EACwD;QACpDxwC,MAAM,GAAG,UAAT;MACH;;MACD,IAAIv1B,CAAC,CAAC+0C,OAAF,IAAa/0C,CAAC,CAACi1C,QAAnB,EAA6B;QACzB,KAAKgwC,iBAAL,GAAyB,IAAzB;MACH;;MACD,IAAIkK,iBAAiB,GAAG,KAAKC,gBAAL,CAAsB75D,MAAtB,EAA8B4rB,IAA9B,CAAxB;;MACA,IAAIguC,iBAAiB,CAACvrE,MAAlB,KAA6B,IAAjC,EAAuC;QACnC,IAAI,CAAC,CAAC,KAAKnkB,MAAL,CAAYuuF,mBAAb,IAAqC,CAAC,KAAKiB,WAAN,IAAsBjvF,CAAC,IAAI,CAACA,CAAC,CAAC+0C,OAApE,KACG,CAACm6C,KAAK,CAACpiE,QAAN,CAAek5C,KAAf,CADR,EAC+B;UAC3B,KAAK7P,UAAL,CAAgBhV,IAAhB;UACA,KAAKuqC,WAAL;QACH;;QACD,IAAI,KAAKjsF,MAAL,CAAYuuF,mBAAZ,IAAmChuF,CAAC,CAACi1C,QAAzC,EAAmD;UAC/C,IAAI,EAAEj1C,CAAC,IAAIA,CAAC,CAAC+0C,OAAT,CAAJ,EAAuB;YACnB,KAAK22C,WAAL;UACH;;UACD,IAAI,CAAC,KAAK7D,SAAV,EAAqB;YACjB,KAAKA,SAAL,GAAiB1mC,IAAjB;UACH;;UACD,IAAIkuC,UAAU,GAAG,KAAKhG,QAAL,CAAcxsF,OAAd,CAAsB,KAAKgrF,SAA3B,CAAjB;UACA,IAAIyH,QAAQ,GAAG,KAAKjG,QAAL,CAAcxsF,OAAd,CAAsBskD,IAAtB,CAAf;;UACA,IAAIkuC,UAAU,GAAGC,QAAjB,EAA2B;YACvB,KAAK,IAAIn0F,CAAC,GAAGk0F,UAAb,EAAyBl0F,CAAC,IAAIm0F,QAA9B,EAAwCn0F,CAAC,EAAzC,EAA6C;cACzC,KAAKo0F,SAAL,CAAe,KAAKlG,QAAL,CAAcluF,CAAd,CAAf;YACH;UACJ,CAJD,MAKK;YACD,KAAK,IAAIA,CAAC,GAAGk0F,UAAb,EAAyBl0F,CAAC,IAAIm0F,QAA9B,EAAwCn0F,CAAC,EAAzC,EAA6C;cACzC,KAAKo0F,SAAL,CAAe,KAAKlG,QAAL,CAAcluF,CAAd,CAAf;YACH;UACJ;;UACD,KAAKq0F,QAAL,CAAc,KAAKnG,QAAL,CAAciG,QAAd,CAAd;QACH,CApBD,MAqBK;UACD,KAAKzH,SAAL,GAAiB1mC,IAAjB;;UACA,IAAI,KAAK1hD,MAAL,CAAYuuF,mBAAZ,IAAmC7sC,IAAI,CAAC30B,SAAL,CAAeM,QAAf,CAAwB64C,MAAxB,CAAvC,EAAwE;YACpE,KAAKsJ,YAAL,CAAkB9tB,IAAlB;UACH,CAFD,MAGK;YACD,KAAKouC,SAAL,CAAepuC,IAAf;UACH;;UACD,KAAKquC,QAAL,CAAcruC,IAAd;QACH;;QACD,IAAI,KAAK1hD,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAzC,EAA4C;UACxC,KAAKstF,gBAAL;QACH;;QACD,KAAKroF,MAAL,CAAYgb,MAAZ,CAAmB6wD,gBAAnB,EAAqC,EAArC;QACA,KAAKmkB,aAAL,CAAmBl6D,MAAnB,EAA2B4rB,IAA3B;MACH;IACJ,CApDI,MAqDA;MACD,IAAI,KAAK1hD,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,KAAK6uF,QAAL,CAAc7uF,MAAvD,EAA+D;QAC3D,KAAKyqF,iBAAL,GAAyB,IAAzB;MACH;;MACD,KAAK8H,cAAL;IACH;;IACD,IAAI,CAACnxF,uEAAiB,CAACulD,IAAD,CAAtB,EAA8B;MAC1B,KAAK8jC,iBAAL,GAAyB,KAAzB;MACA,KAAK9uB,UAAL,CAAgBhV,IAAhB;IACH;EACJ,CAxED;;EAyEA2jC,cAAc,CAACzrF,SAAf,CAAyBy1F,eAAzB,GAA2C,UAAU9uF,CAAV,EAAa;IACpD,KAAKP,MAAL,CAAYkwE,YAAZ,GAA2B,gBAA3B;IACA,IAAIl6C,MAAM,GAAGz1B,CAAC,CAAC24C,aAAF,CAAgBljB,MAA7B;IACA,KAAK62D,YAAL,CAAkB72D,MAAlB;EACH,CAJD;;EAKAqvD,cAAc,CAACzrF,SAAf,CAAyB0zF,cAAzB,GAA0C,YAAY;IAClD,KAAKrB,WAAL;IACA,KAAK5D,gBAAL;IACA,KAAKroF,MAAL,CAAYgb,MAAZ,CAAmB6wD,gBAAnB,EAAqC,EAArC;EACH,CAJD;;EAKAwZ,cAAc,CAACzrF,SAAf,CAAyByuF,gBAAzB,GAA4C,YAAY;IACpD,KAAKmH,WAAL,GAAmB,KAAnB;IACAliE,iEAAW,CAAC,CAAC,KAAKttB,MAAL,CAAYU,OAAb,CAAD,EAAwB2kE,YAAxB,CAAX;EACH,CAHD;;EAIAggB,cAAc,CAACzrF,SAAf,CAAyBizF,YAAzB,GAAwC,UAAU72D,MAAV,EAAkB;IACtD,IAAIh3B,KAAK,GAAG,IAAZ;;IACA,IAAI7C,uEAAiB,CAAC65B,MAAD,CAArB,EAA+B;MAC3B;IACH;;IACD,IAAI0rB,IAAI,GAAG/xB,6DAAO,CAACqG,MAAD,EAAS,MAAM4vC,SAAf,CAAlB;IACA,KAAK5lE,MAAL,CAAYuqE,MAAZ,GAAqB,KAArB;;IACA,IAAI,CAACpuE,uEAAiB,CAACulD,IAAD,CAAtB,EAA8B;MAC1B,KAAKgV,UAAL,CAAgBhV,IAAhB,EAD0B,CAE1B;;MACA,IAAIuuC,SAAS,GAAG,KAAKtF,aAAL,CAAmBjpC,IAAnB,CAAhB;;MACA,IAAI,CAAC6wB,aAAa,CAAC0d,SAAD,CAAlB,EAA+B;QAC3Bzd,kBAAkB,CAAC,KAAKxyE,MAAN,EAAciwF,SAAd,EAAyBliB,cAAzB,CAAlB;QACA;MACH;;MACD,IAAI7pD,SAAS,GAAG;QAAEC,MAAM,EAAE,KAAV;QAAiB2vD,WAAW,EAAEmc,SAA9B;QAAyC5xD,MAAM,EAAE;MAAjD,CAAhB;MACA,KAAKr+B,MAAL,CAAY+rB,OAAZ,CAAoB,UAApB,EAAgC7H,SAAhC,EAA2C,UAAUgsE,YAAV,EAAwB;QAC/D,IAAI,CAACA,YAAY,CAAC/rE,MAAlB,EAA0B;UACtB,IAAItR,IAAI,GAAG1X,8DAAQ,CAAC,MAAD,EAAS80F,SAAT,CAAnB;;UACA,IAAI,CAACjxF,KAAK,CAACgB,MAAN,CAAauqE,MAAlB,EAA0B;YACtB,IAAIzlE,GAAG,GAAG9F,KAAK,CAACgB,MAAN,CAAawwE,mBAAb,CAAiCC,SAAjC,CAA2C/vE,OAA3C,CAAmDpF,KAA7D;;YACA,IAAIwJ,GAAG,KAAK,EAAR,IAAc,CAAC9F,KAAK,CAACgB,MAAN,CAAa0wE,UAAhC,EAA4C;cACxC,IAAI5nE,EAAE,GAAG3N,8DAAQ,CAAC,IAAD,EAAO80F,SAAP,CAAjB;cACAjxF,KAAK,CAACgB,MAAN,CAAa03E,OAAb,GAAuB14E,KAAK,CAACgB,MAAN,CAAauuE,IAApC;cACA,IAAIe,OAAO,GAAGtwE,KAAK,CAACgB,MAAN,CAAauuE,IAAb,IAAqBpyE,uEAAiB,CAAC2M,EAAD,CAAjB,GAAwB+J,IAAxB,GAA+B/J,EAApD,IAA0D,GAAxE;;cACA9J,KAAK,CAACgB,MAAN,CAAa4xB,aAAb,CAA2B;gBAAE28C,IAAI,EAAEe;cAAR,CAA3B,EAA8C,IAA9C;;cACAtwE,KAAK,CAACgB,MAAN,CAAa4uE,SAAb,CAAuBpvE,IAAvB,CAA4BqT,IAA5B;;cACA7T,KAAK,CAACgB,MAAN,CAAa0uE,MAAb,CAAoBlvE,IAApB,CAAyBrE,8DAAQ,CAAC,QAAD,EAAW80F,SAAX,CAAjC;;cACAjxF,KAAK,CAACgB,MAAN,CAAamxE,QAAb,GAAwB,CAAC8e,SAAD,CAAxB;cACAxd,UAAU,CAACzzE,KAAK,CAACgB,MAAP,CAAV;YACH,CATD,MAUK;cACDw2E,gBAAgB,CAACx3E,KAAK,CAACgB,MAAP,EAAeiwF,SAAf,CAAhB;YACH;;YACDjxF,KAAK,CAACgB,MAAN,CAAa0wE,UAAb,GAA0B,KAA1B;;YACA1xE,KAAK,CAACgB,MAAN,CAAa4xB,aAAb,CAA2B;cAAEg/C,aAAa,EAAE;YAAjB,CAA3B,EAAkD,IAAlD;UACH,CAjBD,MAkBK;YACD,IAAI+a,IAAI,GAAG9Y,QAAQ,CAACod,SAAD,CAAnB;;YACA,IAAItE,IAAI,KAAKzkB,UAAb,EAAyB;cACrB,IAAIwM,MAAM,GAAGJ,WAAW,CAACt0E,KAAK,CAACgB,MAAP,EAAeiwF,SAAf,CAAxB;cACA7L,iBAAiB,CAACplF,KAAK,CAACgB,MAAP,EAAe6S,IAAf,EAAqB6gE,MAArB,CAAjB;YACH;UACJ;QACJ;MACJ,CA7BD;IA8BH;EACJ,CA/CD;;EAgDA2R,cAAc,CAACzrF,SAAf,CAAyB88D,UAAzB,GAAsC,UAAUhV,IAAV,EAAgB;IAClD,IAAIyuC,MAAM,GAAGnhE,4DAAM,CAAC,MAAMi4C,MAAP,EAAevlB,IAAf,CAAnB;IACA,KAAK1hD,MAAL,CAAYuqE,MAAZ,GAAqBpuE,uEAAiB,CAACg0F,MAAD,CAAjB,GAA4B,IAA5B,GAAmC,KAAxD;EACH,CAHD;EAIA;EACA;;;EACA9K,cAAc,CAACzrF,SAAf,CAAyBg1F,oBAAzB,GAAgD,UAAUruF,CAAV,EAAa;IACzD,IAAI,CAAC,KAAKywB,UAAV,EAAsB;MAClB;IACH;;IACD,QAAQzwB,CAAC,CAACu1B,MAAV;MACI,KAAK,KAAL;MACA,KAAK,MAAL;MACA,KAAK,UAAL;MACA,KAAK,UAAL;MACA,KAAK,WAAL;MACA,KAAK,QAAL;MACA,KAAK,SAAL;MACA,KAAK,UAAL;MACA,KAAK,OAAL;MACA,KAAK,UAAL;MACA,KAAK,WAAL;MACA,KAAK,QAAL;MACA,KAAK,UAAL;MACA,KAAK,WAAL;MACA,KAAK,QAAL;MACA,KAAK,UAAL;MACA,KAAK,WAAL;MACA,KAAK,QAAL;MACA,KAAK,WAAL;MACA,KAAK,YAAL;MACA,KAAK,SAAL;MACA,KAAK,OAAL;MACA,KAAK,WAAL;MACA,KAAK,YAAL;MACA,KAAK,SAAL;MACA,KAAK,OAAL;MACA,KAAK,OAAL;MACA,KAAK,UAAL;MACA,KAAK,KAAL;MACA,KAAK,KAAL;MACA,KAAK,UAAL;MACA,KAAK,OAAL;MACA,KAAK,OAAL;MACA,KAAK,OAAL;MACA,KAAK,IAAL;MACA,KAAK,OAAL;QACIv1B,CAAC,CAAC6qC,cAAF;QACA;;MACJ;QACI;IAxCR;EA0CH,CA9CD;EA+CA;EACA;;;EACAi6C,cAAc,CAACzrF,SAAf,CAAyB80F,gBAAzB,GAA4C,UAAUnuF,CAAV,EAAa;IACrD,IAAIvB,KAAK,GAAG,IAAZ;;IACA,IAAI,CAAC,KAAKgyB,UAAV,EAAsB;MAClB;IACH;;IACD,IAAIo/D,KAAK,GAAG,KAAKC,cAAL,EAAZ;IACA,IAAIC,SAAS,GAAG,KAAKtD,YAAL,EAAhB;IACA,IAAIC,QAAQ,GAAG,KAAKC,WAAL,EAAf;;IACA,QAAQ3sF,CAAC,CAACu1B,MAAV;MACI,KAAK,KAAL;QACI,IAAI,KAAK91B,MAAL,CAAYspF,oBAAhB,EAAsC;UAClC,KAAK2C,WAAL;UACA,KAAKvrF,OAAL,CAAa4tB,iBAAb,CAA+BiiE,QAA/B,CAAwC,CAAxC,EAA2C,KAAK7vF,OAAL,CAAa4tB,iBAAb,CAA+Bkc,YAA1E;UACAprC,UAAU,CAAC,YAAY;YACnBJ,KAAK,CAACwxF,YAAN,CAAmBxxF,KAAK,CAAC4qF,QAAN,CAAe5qF,KAAK,CAAC4qF,QAAN,CAAe7uF,MAAf,GAAwB,CAAvC,CAAnB;UACH,CAFS,EAEP,EAFO,CAAV;QAGH,CAND,MAOK;UACD,KAAKy1F,YAAL,CAAkBvD,QAAlB;QACH;;QACD;;MACJ,KAAK,MAAL;QACI,IAAI,KAAKjtF,MAAL,CAAYspF,oBAAhB,EAAsC;UAClC,KAAK2C,WAAL;UACA,KAAKvrF,OAAL,CAAa4tB,iBAAb,CAA+BiO,SAA/B,GAA2C,CAA3C;UACAn9B,UAAU,CAAC,YAAY;YACnBJ,KAAK,CAACwxF,YAAN,CAAmBxxF,KAAK,CAAC4qF,QAAN,CAAe,CAAf,CAAnB;UACH,CAFS,EAEP,EAFO,CAAV;QAGH,CAND,MAOK;UACD,KAAK4G,YAAL,CAAkBF,SAAlB;QACH;;QACD;;MACJ,KAAK,KAAL;QACI,IAAI,CAACn0F,uEAAiB,CAACi0F,KAAD,CAAtB,EAA+B;UAC3B,KAAKL,QAAL,CAAcK,KAAd;QACH,CAFD,MAGK,IAAI,CAACj0F,uEAAiB,CAACm0F,SAAD,CAAtB,EAAmC;UACpC,KAAKP,QAAL,CAAcO,SAAd;QACH;;QACD;;MACJ,KAAK,UAAL;QACI,KAAKG,YAAL,CAAkBL,KAAlB,EAAyB,IAAzB;QACA;;MACJ,KAAK,UAAL;QACI,KAAKM,aAAL,CAAmBN,KAAnB,EAA0B,KAA1B;QACA;;MACJ,KAAK,WAAL;QACI,KAAKM,aAAL,CAAmBN,KAAnB,EAA0B,IAA1B;QACA;;MACJ,KAAK,QAAL;QACI,KAAKK,YAAL,CAAkBL,KAAlB,EAAyB,KAAzB;QACA;;MACJ,KAAK,SAAL;MACA,KAAK,UAAL;MACA,KAAK,OAAL;QACI,KAAKO,QAAL,CAAc1D,QAAd,EAAwB1sF,CAAxB;QACA;;MACJ,KAAK,UAAL;MACA,KAAK,WAAL;MACA,KAAK,QAAL;QACI,KAAKqwF,SAAL,CAAeN,SAAf,EAA0B/vF,CAA1B;QACA;;MACJ,KAAK,UAAL;MACA,KAAK,WAAL;MACA,KAAK,QAAL;QACI,KAAKswF,SAAL,CAAeT,KAAf,EAAsB7vF,CAAtB;QACA;;MACJ,KAAK,UAAL;MACA,KAAK,WAAL;MACA,KAAK,QAAL;QACI,KAAKuwF,SAAL,CAAeV,KAAf,EAAsB7vF,CAAtB;QACA;;MACJ,KAAK,WAAL;MACA,KAAK,YAAL;MACA,KAAK,SAAL;QACI,KAAKwwF,UAAL,CAAgBX,KAAhB,EAAuB7vF,CAAvB;QACA;;MACJ,KAAK,QAAL;MACA,KAAK,SAAL;MACA,KAAK,MAAL;QACI,KAAKywF,OAAL,CAAaZ,KAAb,EAAoB7vF,CAApB;QACA;;MACJ,KAAK,OAAL;QACI,KAAK0wF,QAAL,CAAcb,KAAd;QACA;;MACJ,KAAK,WAAL;MACA,KAAK,YAAL;MACA,KAAK,SAAL;QACI,IAAI,CAACj0F,uEAAiB,CAACi0F,KAAD,CAAtB,EAA+B;UAC3B,KAAKhD,WAAL,CAAiBgD,KAAjB,EAAwB7vF,CAAxB;QACH;;QACD;;MACJ,KAAK,OAAL;QACI,KAAK2wF,QAAL,CAAcZ,SAAd,EAAyBrD,QAAzB;QACA;;MACJ,KAAK,OAAL;QACI,KAAKJ,YAAL,CAAkB,KAAK7sF,MAAL,CAAYmoF,WAAZ,GAA0B,KAAKnoF,MAAL,CAAYmoF,WAAtC,GAAoD,KAAKgJ,cAAL,EAAtE;QACA;;MACJ,KAAK,UAAL;QACI,KAAKnxF,MAAL,CAAYgb,MAAZ,CAAmBoxD,WAAnB,EAAgC,EAAhC;QACAsQ,UAAU,CAAC,KAAK18E,MAAN,EAAc,KAAKA,MAAL,CAAY4wE,aAA1B,EAAyC,KAAK5wE,MAAL,CAAYuuE,IAArD,EAA2D,SAA3D,CAAV;QACA;;MACJ,KAAK,KAAL;QACIiB,YAAY,CAAC,KAAKxvE,MAAN,CAAZ;QACA;;MACJ,KAAK,KAAL;MACA,KAAK,UAAL;QACI,KAAKoxF,aAAL;QACA;;MACJ,KAAK,OAAL;QACI1e,SAAS,CAAC,KAAK1yE,MAAN,CAAT;QACA;;MACJ,KAAK,OAAL;QACI,KAAKA,MAAL,CAAY42E,UAAZ,GAAyB,EAAzB;QACAF,YAAY,CAAC,KAAK12E,MAAN,CAAZ;QACA;;MACJ,KAAK,OAAL;QACI4yE,QAAQ,CAAC,KAAK5yE,MAAN,CAAR;QACA;;MACJ,KAAK,IAAL;QACI,KAAKqxF,aAAL;QACA;;MACJ,KAAK,OAAL;QACI,KAAK9W,UAAL;QACA;IArHR;EAuHH,CA/HD;;EAgIA8K,cAAc,CAACzrF,SAAf,CAAyB2gF,UAAzB,GAAsC,YAAY;IAC9C,KAAK4R,kBAAL;IACA5R,UAAU,CAAC,KAAKv6E,MAAN,CAAV;EACH,CAHD;;EAIAqlF,cAAc,CAACzrF,SAAf,CAAyBw3F,aAAzB,GAAyC,YAAY;IACjD,IAAI,KAAKpxF,MAAL,CAAY4wE,aAAZ,IAA6B,KAAK5wE,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,GAAmC,CAApE,EAAuE;MACnE,KAAKoxF,kBAAL,GADmE,CAEnE;;MACA,IAAIrxF,IAAI,GAAG,KAAKkF,MAAL,CAAYmxE,QAAvB;;MACA,KAAK,IAAIz1E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,IAAI,CAACC,MAAzB,EAAiCW,CAAC,EAAlC,EAAsC;QAClC,IAAI,CAAC4+E,aAAa,CAACx/E,IAAI,CAACY,CAAD,CAAL,CAAlB,EAA6B;UACzB82E,kBAAkB,CAAC,KAAKxyE,MAAN,EAAclF,IAAI,CAACY,CAAD,CAAlB,EAAuBsyE,cAAvB,CAAlB;UACA;QACH;MACJ;;MACDkJ,YAAY,CAAC,KAAKl3E,MAAN,EAAc,QAAd,CAAZ;IACH;EACJ,CAbD;;EAcAqlF,cAAc,CAACzrF,SAAf,CAAyBy3F,aAAzB,GAAyC,YAAY;IACjD,IAAI,KAAKrxF,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAzC,EAA4C;MACxC,KAAKyxF,gBAAL;MACAnS,QAAQ,CAAC,KAAKr6E,MAAN,CAAR;IACH;EACJ,CALD;;EAMAqlF,cAAc,CAACzrF,SAAf,CAAyB4yF,gBAAzB,GAA4C,YAAY;IACpD,IAAI9qC,IAAI,GAAG1yB,4DAAM,CAAC,MAAM42C,SAAN,GAAkB,GAAlB,GAAwBM,MAAzB,EAAiC,KAAKxlE,OAAtC,CAAjB,CADoD,CAEpD;;IACA,IAAI5F,IAAI,GAAG,KAAK6vF,aAAL,CAAmBjpC,IAAnB,CAAX;IACAw4B,kBAAkB,CAAC,KAAKl6E,MAAN,EAAclF,IAAd,CAAlB;EACH,CALD;;EAMAuqF,cAAc,CAACzrF,SAAf,CAAyBu3F,cAAzB,GAA0C,YAAY;IAClD,IAAIzvC,IAAI,GAAG,KAAK1hD,MAAL,CAAY4wE,aAAZ,CAA0B,KAAK5wE,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,GAAmC,CAA7D,CAAX;IACA,IAAIuwF,OAAO,GAAG,KAAKC,UAAL,CAAgB,CAAC7pC,IAAD,CAAhB,EAAwB,KAAK1hD,MAAL,CAAYyuE,KAApC,CAAd;IACA,OAAO,KAAKmb,QAAL,CAAc0B,OAAO,CAAC,CAAD,CAArB,CAAP;EACH,CAJD;;EAKAjG,cAAc,CAACzrF,SAAf,CAAyBy2F,cAAzB,GAA0C,YAAY;IAClD,OAAOrhE,4DAAM,CAAC,MAAM42C,SAAN,GAAkB,GAAlB,GAAwBQ,KAAzB,EAAgC,KAAK1lE,OAArC,CAAb;EACH,CAFD;;EAGA2kF,cAAc,CAACzrF,SAAf,CAAyB03F,aAAzB,GAAyC,YAAY;IACjD,OAAOtiE,4DAAM,CAAC,MAAM42C,SAAN,GAAkB,GAAlB,GAAwBM,MAAzB,EAAiC,KAAKxlE,OAAtC,CAAb;EACH,CAFD;;EAGA2kF,cAAc,CAACzrF,SAAf,CAAyBozF,YAAzB,GAAwC,YAAY;IAChD,OAAO,KAAKpD,QAAL,CAAc,CAAd,CAAP;EACH,CAFD;;EAGAvE,cAAc,CAACzrF,SAAf,CAAyBszF,WAAzB,GAAuC,YAAY;IAC/C,OAAO,KAAKtD,QAAL,CAAc,KAAKA,QAAL,CAAc7uF,MAAd,GAAuB,CAArC,CAAP;EACH,CAFD;;EAGAsqF,cAAc,CAACzrF,SAAf,CAAyB42F,YAAzB,GAAwC,UAAU9uC,IAAV,EAAgB;IACpD,KAAKgpC,QAAL,CAAchpC,IAAd;EACH,CAFD;;EAGA2jC,cAAc,CAACzrF,SAAf,CAAyB62F,YAAzB,GAAwC,UAAUL,KAAV,EAAiBmB,SAAjB,EAA4B;IAChE,IAAIC,KAAK,GAAG,KAAKC,WAAL,CAAiBrB,KAAjB,EAAwBmB,SAAxB,EAAmC,KAAKG,MAAxC,CAAZ;IACA,KAAKhH,QAAL,CAAc8G,KAAd;EACH,CAHD;;EAIAnM,cAAc,CAACzrF,SAAf,CAAyB82F,aAAzB,GAAyC,UAAUN,KAAV,EAAiBmB,SAAjB,EAA4B;IACjE,IAAIC,KAAK,GAAG,KAAKC,WAAL,CAAiBrB,KAAjB,EAAwBmB,SAAxB,CAAZ;IACA,KAAK7G,QAAL,CAAc8G,KAAd;EACH,CAHD;;EAIAnM,cAAc,CAACzrF,SAAf,CAAyB63F,WAAzB,GAAuC,UAAUE,EAAV,EAAcJ,SAAd,EAAyBG,MAAzB,EAAiC;IACpE,IAAIv1F,uEAAiB,CAACw1F,EAAD,CAArB,EAA2B;MACvB,OAAO,KAAKtB,cAAL,MAAyB,KAAKiB,aAAL,EAAzB,IAAiD,KAAKtE,YAAL,EAAxD;IACH;;IACD,IAAIvxE,KAAK,GAAG,KAAKmuE,QAAL,CAAcxsF,OAAd,CAAsBu0F,EAAtB,CAAZ;IACA,IAAIC,QAAJ;;IACA,GAAG;MACC,IAAIL,SAAJ,EAAe;QACX91E,KAAK,GAAGi2E,MAAM,GAAGj2E,KAAK,GAAGi2E,MAAX,GAAoBj2E,KAAK,GAAG,CAA1C;MACH,CAFD,MAGK;QACDA,KAAK,GAAGi2E,MAAM,GAAGj2E,KAAK,GAAGi2E,MAAX,GAAoBj2E,KAAK,GAAG,CAA1C;MACH;;MACDm2E,QAAQ,GAAG,KAAKhI,QAAL,CAAcnuE,KAAd,CAAX;;MACA,IAAI,KAAKzb,MAAL,CAAYspF,oBAAZ,IAAoCntF,uEAAiB,CAACy1F,QAAD,CAAzD,EAAqE;QACjE,IAAIC,WAAW,GAAGj2F,QAAQ,CAACvB,MAAM,CAAC4iC,gBAAP,CAAwB,KAAK2sD,QAAL,CAAc,CAAd,CAAxB,EAA0C1sD,gBAA1C,CAA2D,YAA3D,CAAD,EAA2E,EAA3E,CAAR,GACdthC,QAAQ,CAACvB,MAAM,CAAC4iC,gBAAP,CAAwB,KAAK2sD,QAAL,CAAc,CAAd,CAAxB,EAA0C1sD,gBAA1C,CAA2D,eAA3D,CAAD,EAA8E,EAA9E,CADZ;QAEA,IAAIsN,YAAY,GAAG,KAAKo/C,QAAL,CAAc,CAAd,EAAiB3tD,qBAAjB,GAAyCyS,MAAzC,GAAkDmjD,WAArE;QACA,KAAKnxF,OAAL,CAAa4tB,iBAAb,CAA+BiiE,QAA/B,CAAwC,KAAK7vF,OAAL,CAAa4tB,iBAAb,CAA+BiO,SAAvE,EAAkF,KAAK77B,OAAL,CAAa4tB,iBAAb,CAA+BiO,SAA/B,GAA2CiO,YAA7H;MACH;;MACD,IAAIruC,uEAAiB,CAACy1F,QAAD,CAArB,EAAiC;QAC7B,OAAOD,EAAP;MACH;IACJ,CAjBD,QAiBS,CAAChkE,+DAAS,CAACikE,QAAD,CAjBnB;;IAkBA,OAAOA,QAAP;EACH,CAzBD;;EA0BAvM,cAAc,CAACzrF,SAAf,CAAyB8wF,QAAzB,GAAoC,UAAUkH,QAAV,EAAoB;IACpD,IAAI,CAACz1F,uEAAiB,CAACy1F,QAAD,CAAtB,EAAkC;MAC9B,IAAIlC,iBAAiB,GAAG,KAAKC,gBAAL,CAAsB,QAAtB,EAAgCiC,QAAhC,CAAxB;;MACA,IAAIlC,iBAAiB,CAACvrE,MAAlB,KAA6B,IAAjC,EAAuC;QACnC,KAAKikE,SAAL,GAAiBwJ,QAAjB;QACA,KAAK3F,WAAL;QACA,KAAK6D,SAAL,CAAe8B,QAAf;QACA,KAAK7B,QAAL,CAAc6B,QAAd;QACA,KAAK5xF,MAAL,CAAYgb,MAAZ,CAAmB6wD,gBAAnB,EAAqC,EAArC;QACA,KAAKmkB,aAAL,CAAmB,QAAnB,EAA6B4B,QAA7B;MACH;IACJ;EACJ,CAZD;;EAaAvM,cAAc,CAACzrF,SAAf,CAAyBq3F,QAAzB,GAAoC,UAAUb,KAAV,EAAiB;IACjD,IAAI,CAACj0F,uEAAiB,CAACi0F,KAAD,CAAlB,IAA6B,CAACA,KAAK,CAACrjE,SAAN,CAAgBM,QAAhB,CAAyB64C,MAAzB,CAAlC,EAAoE;MAChE,IAAIwpB,iBAAiB,GAAG,KAAKC,gBAAL,CAAsB,QAAtB,EAAgCS,KAAhC,CAAxB;;MACA,IAAIV,iBAAiB,CAACvrE,MAAlB,KAA6B,IAAjC,EAAuC;QACnC,KAAK2rE,SAAL,CAAeM,KAAf;QACA,KAAKpwF,MAAL,CAAYgb,MAAZ,CAAmB6wD,gBAAnB,EAAqC,EAArC;QACA,KAAKmkB,aAAL,CAAmB,QAAnB,EAA6BI,KAA7B;MACH;IACJ;EACJ,CATD;;EAUA/K,cAAc,CAACzrF,SAAf,CAAyBs3F,QAAzB,GAAoC,UAAUZ,SAAV,EAAqBrD,QAArB,EAA+B;IAC/D,IAAI,KAAKjtF,MAAL,CAAYuuF,mBAAZ,IAAmC,CAACpyF,uEAAiB,CAACm0F,SAAD,CAAzD,EAAsE;MAClE,KAAKlI,SAAL,GAAiBkI,SAAjB;MACA,IAAInD,OAAO,GAAG;QAAE73C,OAAO,EAAE,IAAX;QAAiBE,QAAQ,EAAE;MAA3B,CAAd;MACA,IAAIs8C,QAAQ,GAAG,KAAKpxF,OAAL,CAAaqC,aAAb,CAA2B,MAAM+iE,WAAjC,CAAf;MACA,IAAIisB,QAAQ,GAAGD,QAAQ,CAACv1D,SAAxB;MACA,IAAIy1D,iBAAiB,GAAG,KAAK3B,cAAL,EAAxB;MACA,KAAKjD,WAAL,CAAiBH,QAAjB,EAA2BE,OAA3B;MACA2E,QAAQ,CAACv1D,SAAT,GAAqBw1D,QAArB;;MACA,IAAI,CAAC51F,uEAAiB,CAAC61F,iBAAD,CAAtB,EAA2C;QACvC,KAAKjC,QAAL,CAAciC,iBAAd;MACH;IACJ;EACJ,CAbD;;EAcA3M,cAAc,CAACzrF,SAAf,CAAyB+2F,QAAzB,GAAoC,UAAU1D,QAAV,EAAoB1sF,CAApB,EAAuB;IACvD,IAAI,CAAC,KAAKP,MAAL,CAAYuuF,mBAAjB,EAAsC;MAClC,KAAKiC,YAAL,CAAkBvD,QAAlB;IACH,CAFD,MAGK,IAAI,CAAC9wF,uEAAiB,CAAC8wF,QAAD,CAAtB,EAAkC;MACnC,IAAI1sF,CAAC,CAACu1B,MAAF,KAAa,SAAjB,EAA4B;QACxB,KAAKi6D,QAAL,CAAc9C,QAAd;MACH,CAFD,MAGK;QACD,KAAKG,WAAL,CAAiBH,QAAjB,EAA2B1sF,CAA3B;MACH;IACJ;EACJ,CAZD;;EAaA8kF,cAAc,CAACzrF,SAAf,CAAyBg3F,SAAzB,GAAqC,UAAUN,SAAV,EAAqB/vF,CAArB,EAAwB;IACzD,IAAI,CAAC,KAAKP,MAAL,CAAYuuF,mBAAjB,EAAsC;MAClC,KAAKiC,YAAL,CAAkBF,SAAlB;IACH,CAFD,MAGK,IAAI,CAACn0F,uEAAiB,CAACm0F,SAAD,CAAtB,EAAmC;MACpC,IAAI/vF,CAAC,CAACu1B,MAAF,KAAa,UAAjB,EAA6B;QACzB,KAAKi6D,QAAL,CAAcO,SAAd;MACH,CAFD,MAGK;QACD,KAAKlD,WAAL,CAAiBkD,SAAjB,EAA4B/vF,CAA5B;MACH;IACJ;EACJ,CAZD;;EAaA8kF,cAAc,CAACzrF,SAAf,CAAyBi3F,SAAzB,GAAqC,UAAUT,KAAV,EAAiB7vF,CAAjB,EAAoB;IACrD,IAAI,CAAC,KAAKP,MAAL,CAAYuuF,mBAAjB,EAAsC;MAClC,KAAKkC,YAAL,CAAkBL,KAAlB,EAAyB,IAAzB;IACH,CAFD,MAGK;MACD,IAAI6B,KAAK,GAAG,KAAKR,WAAL,CAAiBrB,KAAjB,EAAwB,IAAxB,EAA8B,KAAKsB,MAAnC,CAAZ;;MACA,IAAI,CAACv1F,uEAAiB,CAAC81F,KAAD,CAAtB,EAA+B;QAC3B,IAAI1xF,CAAC,CAACu1B,MAAF,KAAa,UAAjB,EAA6B;UACzB,KAAKi6D,QAAL,CAAckC,KAAd;QACH,CAFD,MAGK;UACD,KAAK7E,WAAL,CAAiB6E,KAAjB,EAAwB1xF,CAAxB;QACH;MACJ;IACJ;EACJ,CAfD;;EAgBA8kF,cAAc,CAACzrF,SAAf,CAAyBk3F,SAAzB,GAAqC,UAAUV,KAAV,EAAiB7vF,CAAjB,EAAoB;IACrD,IAAI,CAAC,KAAKP,MAAL,CAAYuuF,mBAAjB,EAAsC;MAClC,KAAKmC,aAAL,CAAmBN,KAAnB,EAA0B,KAA1B;IACH,CAFD,MAGK;MACD,IAAI8B,KAAK,GAAG,KAAKT,WAAL,CAAiBrB,KAAjB,EAAwB,KAAxB,CAAZ;;MACA,IAAI,CAACj0F,uEAAiB,CAAC+1F,KAAD,CAAtB,EAA+B;QAC3B,IAAI3xF,CAAC,CAACu1B,MAAF,KAAa,UAAjB,EAA6B;UACzB,KAAKi6D,QAAL,CAAcmC,KAAd;QACH,CAFD,MAGK;UACD,KAAK9E,WAAL,CAAiB8E,KAAjB,EAAwB3xF,CAAxB;QACH;MACJ;IACJ;EACJ,CAfD;;EAgBA8kF,cAAc,CAACzrF,SAAf,CAAyBm3F,UAAzB,GAAsC,UAAUX,KAAV,EAAiB7vF,CAAjB,EAAoB;IACtD,IAAI,CAAC,KAAKP,MAAL,CAAYuuF,mBAAjB,EAAsC;MAClC,KAAKmC,aAAL,CAAmBN,KAAnB,EAA0B,IAA1B;IACH,CAFD,MAGK;MACD,IAAI+B,KAAK,GAAG,KAAKV,WAAL,CAAiBrB,KAAjB,EAAwB,IAAxB,CAAZ;;MACA,IAAI,CAACj0F,uEAAiB,CAACg2F,KAAD,CAAtB,EAA+B;QAC3B,IAAI5xF,CAAC,CAACu1B,MAAF,KAAa,WAAjB,EAA8B;UAC1B,KAAKi6D,QAAL,CAAcoC,KAAd;QACH,CAFD,MAGK;UACD,KAAK/E,WAAL,CAAiB+E,KAAjB,EAAwB5xF,CAAxB;QACH;MACJ;IACJ;EACJ,CAfD;;EAgBA8kF,cAAc,CAACzrF,SAAf,CAAyBo3F,OAAzB,GAAmC,UAAUZ,KAAV,EAAiB7vF,CAAjB,EAAoB;IACnD,IAAI,CAAC,KAAKP,MAAL,CAAYuuF,mBAAjB,EAAsC;MAClC,KAAKkC,YAAL,CAAkBL,KAAlB,EAAyB,KAAzB;IACH,CAFD,MAGK;MACD,IAAIgC,KAAK,GAAG,KAAKX,WAAL,CAAiBrB,KAAjB,EAAwB,KAAxB,EAA+B,KAAKsB,MAApC,CAAZ;;MACA,IAAI,CAACv1F,uEAAiB,CAACi2F,KAAD,CAAtB,EAA+B;QAC3B,IAAI7xF,CAAC,CAACu1B,MAAF,KAAa,QAAjB,EAA2B;UACvB,KAAKi6D,QAAL,CAAcqC,KAAd;QACH,CAFD,MAGK;UACD,KAAKhF,WAAL,CAAiBgF,KAAjB,EAAwB7xF,CAAxB;QACH;MACJ;IACJ;EACJ,CAfD;;EAgBA8kF,cAAc,CAACzrF,SAAf,CAAyBk2F,SAAzB,GAAqC,UAAU8B,QAAV,EAAoB;IACrD,IAAI,CAACz1F,uEAAiB,CAACy1F,QAAD,CAAtB,EAAkC;MAC9B,IAAI,CAACA,QAAQ,CAAC7kE,SAAT,CAAmBM,QAAnB,CAA4B64C,MAA5B,CAAL,EAA0C;QACtC,KAAKlmE,MAAL,CAAY4wE,aAAZ,CAA0BpxE,IAA1B,CAA+B,KAAK6yF,WAAL,CAAiBT,QAAjB,CAA/B;QACA,KAAK5xF,MAAL,CAAY4xB,aAAZ,CAA0B;UAAEg/C,aAAa,EAAE,KAAK5wE,MAAL,CAAY4wE;QAA7B,CAA1B,EAAwE,IAAxE;QACAhkD,8DAAQ,CAAC,CAACglE,QAAD,CAAD,EAAa,CAAC1rB,MAAD,CAAb,CAAR;QACA0rB,QAAQ,CAACnlE,YAAT,CAAsB,eAAtB,EAAuC,MAAvC;QACA,KAAKi/D,UAAL,CAAgBkG,QAAhB,EAA0B,IAA1B;MACH;;MACD,KAAK5xF,MAAL,CAAYmoF,WAAZ,GAA0ByJ,QAA1B;IACH;EACJ,CAXD;;EAYAvM,cAAc,CAACzrF,SAAf,CAAyB41E,YAAzB,GAAwC,UAAU8iB,OAAV,EAAmB;IACvD,IAAI,CAACn2F,uEAAiB,CAACm2F,OAAD,CAAtB,EAAiC;MAC7BhlE,iEAAW,CAAC,CAACglE,OAAD,CAAD,EAAY,CAACpsB,MAAD,CAAZ,CAAX;;MACA,IAAI,KAAKlmE,MAAL,CAAYuuF,mBAAhB,EAAqC;QACjC+D,OAAO,CAAC7lE,YAAR,CAAqB,eAArB,EAAsC,OAAtC;MACH,CAFD,MAGK;QACD6lE,OAAO,CAACr4D,eAAR,CAAwB,eAAxB;MACH;;MACD,KAAKyxD,UAAL,CAAgB4G,OAAhB,EAAyB,KAAzB;MACA,IAAI72E,KAAK,GAAG,KAAKzb,MAAL,CAAY4wE,aAAZ,CAA0BxzE,OAA1B,CAAkC,KAAKi1F,WAAL,CAAiBC,OAAjB,CAAlC,CAAZ;;MACA,IAAI72E,KAAK,GAAG,CAAC,CAAb,EAAgB;QACZ,KAAKzb,MAAL,CAAY4wE,aAAZ,CAA0B91D,MAA1B,CAAiCW,KAAjC,EAAwC,CAAxC;QACA,KAAKzb,MAAL,CAAY4xB,aAAZ,CAA0B;UAAEg/C,aAAa,EAAE,KAAK5wE,MAAL,CAAY4wE;QAA7B,CAA1B,EAAwE,IAAxE;MACH;;MACD,KAAK5wE,MAAL,CAAYmoF,WAAZ,GAA0B,IAA1B;IACH;EACJ,CAjBD;;EAkBA9C,cAAc,CAACzrF,SAAf,CAAyBy4F,WAAzB,GAAuC,UAAU3wC,IAAV,EAAgB;IACnD;IACA,IAAI5mD,IAAI,GAAG,KAAK6vF,aAAL,CAAmBjpC,IAAnB,CAAX;IACA,OAAOo3B,WAAW,CAAC,KAAK94E,MAAN,EAAclF,IAAd,CAAlB;EACH,CAJD;;EAKAuqF,cAAc,CAACzrF,SAAf,CAAyBm2F,QAAzB,GAAoC,UAAUruC,IAAV,EAAgB;IAChD,KAAKhhD,OAAL,CAAa+rB,YAAb,CAA0B,UAA1B,EAAsC,IAAtC;IACA,IAAI2jE,KAAK,GAAG,KAAKC,cAAL,EAAZ;;IACA,IAAID,KAAJ,EAAW;MACPA,KAAK,CAACn2D,eAAN,CAAsB,UAAtB;MACA3M,iEAAW,CAAC,CAAC8iE,KAAD,CAAD,EAAU,CAAChqB,KAAD,CAAV,CAAX;IACH;;IACDx5C,8DAAQ,CAAC,CAAC80B,IAAD,CAAD,EAAS,CAAC0kB,KAAD,CAAT,CAAR;IACA1kB,IAAI,CAACj1B,YAAL,CAAkB,UAAlB,EAA8B,GAA9B;IACAi1B,IAAI,CAAC7/C,KAAL;EACH,CAVD;;EAWAwjF,cAAc,CAACzrF,SAAf,CAAyB8xF,UAAzB,GAAsC,UAAUhqC,IAAV,EAAgB6wC,OAAhB,EAAyB;IAC3D,IAAI,CAAC,KAAKvyF,MAAL,CAAYmrF,kBAAjB,EAAqC;MACjC;IACH;;IACD,IAAIK,QAAQ,GAAGx8D,4DAAM,CAAC,MAAMu3C,KAAP,EAAc7kB,IAAd,CAArB;;IACA,IAAIvlD,uEAAiB,CAACqvF,QAAD,CAArB,EAAiC;MAC7B;IACH;;IACD,IAAI+G,OAAJ,EAAa;MACT,IAAI,CAAC/G,QAAQ,CAACz+D,SAAT,CAAmBM,QAAnB,CAA4Bi5C,KAA5B,CAAL,EAAyC;QACrC15C,8DAAQ,CAAC,CAAC4+D,QAAD,CAAD,EAAallB,KAAb,CAAR;QACA32C,6DAAO,CAAC67D,QAAD,EAAW,MAAMhlB,OAAjB,CAAP,CAAiC/5C,YAAjC,CAA8C,cAA9C,EAA8D,MAA9D;MACH;IACJ,CALD,MAMK;MACD,IAAI++D,QAAQ,CAACz+D,SAAT,CAAmBM,QAAnB,CAA4Bi5C,KAA5B,CAAJ,EAAwC;QACpCh5C,iEAAW,CAAC,CAACk+D,QAAD,CAAD,EAAallB,KAAb,CAAX;QACA32C,6DAAO,CAAC67D,QAAD,EAAW,MAAMhlB,OAAjB,CAAP,CAAiC/5C,YAAjC,CAA8C,cAA9C,EAA8D,OAA9D;MACH;IACJ;EACJ,CApBD;;EAqBA44D,cAAc,CAACzrF,SAAf,CAAyBqyF,WAAzB,GAAuC,YAAY;IAC/C,IAAIuG,IAAI,GAAGn1F,KAAK,CAACzD,SAAN,CAAgBmH,KAAhB,CAAsBlB,IAAtB,CAA2BuvB,+DAAS,CAAC,MAAM82C,MAAP,EAAe,KAAKwjB,YAApB,CAApC,CAAX;IACA,IAAIgG,iBAAJ;;IACA,IAAI8C,IAAI,CAACz3F,MAAL,KAAgB,CAApB,EAAuB;MACnB20F,iBAAiB,GAAG,KAAKC,gBAAL,CAAsB,UAAtB,EAAkC6C,IAAI,CAAC,CAAD,CAAtC,CAApB;;MACA,IAAI9C,iBAAiB,CAACvrE,MAAlB,KAA6B,IAAjC,EAAuC;QACnC,KAAK,IAAIzoB,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAGoxF,IAAI,CAACz3F,MAA3B,EAAmCW,CAAC,GAAG0F,GAAvC,EAA4C1F,CAAC,EAA7C,EAAiD;UAC7C,KAAK8zE,YAAL,CAAkBgjB,IAAI,CAAC92F,CAAD,CAAtB;QACH;MACJ;;MACD,KAAKs0F,aAAL,CAAmB,UAAnB,EAA+BwC,IAAI,CAAC,CAAD,CAAnC;IACH;EACJ,CAZD;;EAaAnN,cAAc,CAACzrF,SAAf,CAAyBo0F,aAAzB,GAAyC,YAAY;IACjD,KAAK7D,YAAL;;IACA,IAAI,CAAChuF,uEAAiB,CAAC,KAAKmsF,OAAN,CAAtB,EAAsC;MAClC,KAAKiB,YAAL;IACH;EACJ,CALD;;EAMAlE,cAAc,CAACzrF,SAAf,CAAyBm0F,qBAAzB,GAAiD,YAAY;IACzD,KAAK5D,YAAL;EACH,CAFD;;EAGA9E,cAAc,CAACzrF,SAAf,CAAyBuwF,YAAzB,GAAwC,YAAY;IAChD,IAAIuH,MAAM,GAAG,CAAb;;IACA,IAAI,KAAK9H,QAAT,EAAmB;MACf,KAAK,IAAIluF,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAG,KAAKwoF,QAAL,CAAc7uF,MAAd,GAAuB,CAA7C,EAAgDW,CAAC,GAAG0F,GAApD,EAAyD1F,CAAC,EAA1D,EAA8D;QAC1D,IAAI,KAAKkuF,QAAL,CAAcluF,CAAd,EAAiBugC,qBAAjB,GAAyCU,GAAzC,KAAiD,KAAKitD,QAAL,CAAcluF,CAAC,GAAG,CAAlB,EAAqBugC,qBAArB,GAA6CU,GAAlG,EAAuG;UACnG+0D,MAAM;QACT,CAFD,MAGK;UACD;QACH;MACJ;IACJ;;IACD,KAAKA,MAAL,GAAcA,MAAd;EACH,CAbD;;EAcArM,cAAc,CAACzrF,SAAf,CAAyB+1F,gBAAzB,GAA4C,UAAU75D,MAAV,EAAkB4rB,IAAlB,EAAwB;IAChE;IACA,IAAI5mD,IAAI,GAAG,EAAX;;IACA,IAAI,KAAK0qF,iBAAT,EAA4B;MACxB,KAAK,IAAI9pF,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAG,KAAKwoF,QAAL,CAAc7uF,MAApC,EAA4CW,CAAC,GAAG0F,GAAhD,EAAqD1F,CAAC,EAAtD,EAA0D;QACtDZ,IAAI,CAACY,CAAD,CAAJ,GAAU,KAAKivF,aAAL,CAAmB,KAAKf,QAAL,CAAcluF,CAAd,CAAnB,CAAV;MACH;IACJ,CAJD,MAKK;MACDZ,IAAI,CAAC,CAAD,CAAJ,GAAU,KAAK6vF,aAAL,CAAmBjpC,IAAnB,CAAV;IACH;;IACD,IAAIx9B,SAAS,GAAG;MACZ4R,MAAM,EAAEA,MADI;MACIg+C,WAAW,EAAEh5E,IAAI,CAACC,MAAL,GAAc,CAAd,GAAkBD,IAAlB,GAAyBA,IAAI,CAAC,CAAD,CAD9C;MACmDqlF,YAAY,EAAE,KAAKmF,aADtE;MACqFnhE,MAAM,EAAE,KAD7F;MACoG6R,MAAM,EAAE,KAAKwvD,iBAAL,GAAyB,IAAzB,GAAgC9jC;IAD5I,CAAhB;IAGA,KAAK1hD,MAAL,CAAY+rB,OAAZ,CAAoB,eAApB,EAAqC7H,SAArC;IACA,KAAKohE,aAAL,GAAqB,IAArB;IACA,OAAOphE,SAAP;EACH,CAjBD;;EAkBAmhE,cAAc,CAACzrF,SAAf,CAAyBo2F,aAAzB,GAAyC,UAAUl6D,MAAV,EAAkB4rB,IAAlB,EAAwB;IAC7D;IACA,IAAI5mD,IAAI,GAAG,EAAX;;IACA,IAAI,KAAK0qF,iBAAT,EAA4B;MACxB,KAAK,IAAI9pF,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAG,KAAKwoF,QAAL,CAAc7uF,MAApC,EAA4CW,CAAC,GAAG0F,GAAhD,EAAqD1F,CAAC,EAAtD,EAA0D;QACtDZ,IAAI,CAACY,CAAD,CAAJ,GAAU,KAAKivF,aAAL,CAAmB,KAAKf,QAAL,CAAcluF,CAAd,CAAnB,CAAV;MACH;;MACD,KAAK8pF,iBAAL,GAAyB,KAAzB;IACH,CALD,MAMK;MACD1qF,IAAI,CAAC,CAAD,CAAJ,GAAU,KAAK6vF,aAAL,CAAmBjpC,IAAnB,CAAV;IACH;;IACD,KAAK1hD,MAAL,CAAYyyF,WAAZ,GAA0B33F,IAAI,CAACC,MAAL,GAAc,CAAd,GAAkBD,IAAI,CAACA,IAAI,CAACC,MAAL,GAAc,CAAf,CAAtB,GAA0CD,IAAI,CAAC,CAAD,CAAxE;IACA,IAAIopB,SAAS,GAAG;MAAE4R,MAAM,EAAEA,MAAV;MAAkBg+C,WAAW,EAAEh5E,IAAI,CAACC,MAAL,GAAc,CAAd,GAAkBD,IAAlB,GAAyBA,IAAI,CAAC,CAAD,CAA5D;MAAiEqlF,YAAY,EAAE,KAAKA;IAApF,CAAhB;IACA,KAAKngF,MAAL,CAAY+rB,OAAZ,CAAoB,YAApB,EAAkC7H,SAAlC;IACA,KAAKi8D,YAAL,GAAoB,IAApB;EACH,CAhBD;;EAiBAkF,cAAc,CAACzrF,SAAf,CAAyBowF,WAAzB,GAAuC,UAAUvgC,KAAV,EAAiB;IACpD,IAAI6hC,OAAO,GAAG,KAAKC,UAAL,CAAgB9hC,KAAhB,EAAuB,KAAKzpD,MAAL,CAAYyuE,KAAnC,CAAd;;IACA,KAAK,IAAItmE,CAAC,GAAG,CAAR,EAAW/G,GAAG,GAAGkqF,OAAO,CAACvwF,MAA9B,EAAsCoN,CAAC,GAAG/G,GAA1C,EAA+C+G,CAAC,EAAhD,EAAoD;MAChD,IAAIglF,OAAO,GAAG;QAAE73C,OAAO,EAAE,IAAX;QAAiBE,QAAQ,EAAE;MAA3B,CAAd;MACA,KAAK43C,WAAL,CAAiB,KAAKxD,QAAL,CAAc0B,OAAO,CAACnjF,CAAD,CAArB,CAAjB,EAA4CglF,OAA5C;IACH;EACJ,CAND;;EAOA9H,cAAc,CAACzrF,SAAf,CAAyB2xF,UAAzB,GAAsC,UAAU9hC,KAAV,EAAiBipC,IAAjB,EAAuB;IACzD,IAAIpH,OAAO,GAAG,EAAd;IACA,IAAIqH,SAAS,GAAGD,IAAI,GAAG,IAAH,GAAU,MAA9B;;IACA,KAAK,IAAIh3F,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAG,KAAKqoD,KAAL,CAAW1uD,MAAjC,EAAyCW,CAAC,GAAG0F,GAA7C,EAAkD1F,CAAC,EAAnD,EAAuD;MACnD,IAAI+tD,KAAK,CAACrsD,OAAN,CAAcjC,8DAAQ,CAACw3F,SAAD,EAAY,KAAKlpC,KAAL,CAAW/tD,CAAX,CAAZ,CAAtB,MAAsD,CAAC,CAA3D,EAA8D;QAC1D4vF,OAAO,CAAC9rF,IAAR,CAAa9D,CAAb;MACH;IACJ;;IACD,OAAO4vF,OAAP;EACH,CATD,CA94CsD,CAw5CtD;;;EACAjG,cAAc,CAACzrF,SAAf,CAAyB+wF,aAAzB,GAAyC,UAAUjpC,IAAV,EAAgB;IACrD,IAAIjmC,KAAK,GAAG,KAAKmuE,QAAL,CAAcxsF,OAAd,CAAsBskD,IAAtB,CAAZ;IACA,OAAO,KAAK+H,KAAL,CAAWhuC,KAAX,CAAP;EACH,CAHD,CAz5CsD,CA65CtD;;;EACA4pE,cAAc,CAACzrF,SAAf,CAAyB+yF,YAAzB,GAAwC,UAAU7xF,IAAV,EAAgB;IACpD;IACA,IAAI83F,UAAU,GAAG,EAAjB;;IACA,IAAI,KAAK5yF,MAAL,CAAYyuE,KAAhB,EAAuB;MACnBmkB,UAAU,GAAG,IAAI7lC,6DAAJ,CAAgB,KAAKtD,KAArB,EACT7F,YADS,CACI,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,IAAlB,EAAwB,OAAxB,EAAiC,KAAKtkD,MAAL,CAAY8jF,SAA7C,EAAwD,KAAxD,CADJ,CAAb;IAEH,CAHD,MAIK;MACD;MACA,IAAI76B,OAAO,GAAG,IAAI8D,6DAAJ,CAAgB,KAAKtD,KAArB,EACV7F,YADU,CACG,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,MAAlB,EAA0B,OAA1B,EAAmCnpD,8DAAQ,CAAC,MAAD,EAASL,IAAT,CAA3C,EAA2D,KAA3D,CADH,CAAd;;MAEA,IAAImuD,OAAO,CAACluD,MAAR,GAAiB,CAArB,EAAwB;QACpB63F,UAAU,GAAG,IAAI7lC,6DAAJ,CAAgB9D,OAAhB,EACTrF,YADS,CACI,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,YAAlB,EAAgC,OAAhC,EAAyC,KAAKtkD,MAAL,CAAYo6E,UAArD,EAAiE,KAAjE,CADJ,CAAb;MAEH;IACJ;;IACD,IAAIwY,UAAU,CAAC73F,MAAX,GAAoB,CAAxB,EAA2B;MACvB,IAAI0gB,KAAK,GAAG,KAAKguC,KAAL,CAAWrsD,OAAX,CAAmBw1F,UAAU,CAAC,CAAD,CAA7B,CAAZ;MACA,IAAIzF,OAAO,GAAG;QAAE73C,OAAO,EAAE,IAAX;QAAiBE,QAAQ,EAAE;MAA3B,CAAd;MACA,KAAK43C,WAAL,CAAiB,KAAKxD,QAAL,CAAcnuE,KAAd,CAAjB,EAAuC0xE,OAAvC;IACH;EACJ,CArBD;;EAsBA9H,cAAc,CAACzrF,SAAf,CAAyBuyF,kBAAzB,GAA8C,YAAY;IACtD;IACA,IAAIrxF,IAAI,GAAG,EAAX;IACA,IAAI2uD,KAAK,GAAGr6B,+DAAS,CAAC,MAAMw2C,SAAN,GAAkB,GAAlB,GAAwBM,MAAzB,EAAiC,KAAKxlE,OAAtC,CAArB;;IACA,KAAK,IAAIhF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+tD,KAAK,CAAC1uD,MAA1B,EAAkCW,CAAC,EAAnC,EAAuC;MACnCZ,IAAI,CAACY,CAAD,CAAJ,GAAU,KAAKivF,aAAL,CAAmBlhC,KAAK,CAAC/tD,CAAD,CAAxB,CAAV;IACH;;IACD,KAAKsE,MAAL,CAAYmxE,QAAZ,GAAuBr2E,IAAvB;EACH,CARD,CAp7CsD,CA67CtD;;;EACAuqF,cAAc,CAACzrF,SAAf,CAAyBg0F,YAAzB,GAAwC,UAAU3uF,IAAV,EAAgB;IACpD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,YAAzB,EAAuC;MACnC;IACH;;IACD,IAAIp8C,MAAM,GAAG36B,8DAAQ,CAAC,QAAD,EAAW8D,IAAX,CAArB;;IACA,QAAQ62B,MAAR;MACI,KAAK,aAAL;QACI,KAAK+8D,WAAL,CAAiB13F,8DAAQ,CAAC,KAAD,EAAQ8D,IAAR,CAAzB;QACA;;MACJ,KAAK,eAAL;QACI,KAAK6zF,aAAL,CAAmB33F,8DAAQ,CAAC,KAAD,EAAQ8D,IAAR,CAA3B;QACA;;MACJ,KAAK,UAAL;QACI,KAAK8zF,QAAL,CAAc53F,8DAAQ,CAAC,IAAD,EAAO8D,IAAP,CAAtB;QACA;;MACJ,KAAK,YAAL;QACI,KAAKqmF,aAAL,GAAqB,KAArB;QACA,KAAKnF,YAAL,GAAoB,KAApB;QACA,KAAK6S,UAAL,CAAgB73F,8DAAQ,CAAC,IAAD,EAAO8D,IAAP,CAAxB,EAAsC9D,8DAAQ,CAAC,SAAD,EAAY8D,IAAZ,CAA9C;QACA;;MACJ,KAAK,cAAL;QACI,KAAKqmF,aAAL,GAAqB,KAArB;QACA,KAAKnF,YAAL,GAAoB,KAApB;QACA;;MACJ,KAAK,gBAAL;QACI,KAAKmF,aAAL,GAAqB,KAArB;QACA,KAAKnF,YAAL,GAAoB,KAApB;QACA,KAAKkN,cAAL;QACA;;MACJ,KAAK,WAAL;QACI,KAAK/H,aAAL,GAAqB,KAArB;QACA,KAAKnF,YAAL,GAAoB,KAApB;QACA,KAAK4M,eAAL;QACA;IA5BR;EA8BH,CAnCD;;EAoCA1H,cAAc,CAACzrF,SAAf,CAAyBq5F,aAAzB,GAAyC,UAAUxpC,KAAV,EAAiB;IACtD,IAAI6hC,OAAO,GAAG,EAAd;IACA,IAAI4H,QAAQ,GAAI,KAAKlzF,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAhC,CAA0C/vE,OAA1C,CAAkDpF,KAAlD,KAA4D,EAA5D,IAAkE,KAAK0E,MAAL,CAAY0wE,UAA/E,GAA6F,IAA7F,GAAoG,KAAnH;IACA,IAAIyiB,UAAU,GAAG,KAAKnzF,MAAL,CAAYyuE,KAAZ,GAAoB,IAApB,GAA2B,MAA5C;;IACA,IAAI,KAAKzuE,MAAL,CAAYyuE,KAAZ,IAAqB,CAACykB,QAA1B,EAAoC;MAChC,KAAK,IAAIx3F,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAG,KAAKqoD,KAAL,CAAW1uD,MAAjC,EAAyCW,CAAC,GAAG0F,GAA7C,EAAkD1F,CAAC,EAAnD,EAAuD;QACnD,IAAI+tD,KAAK,CAACrsD,OAAN,CAAcjC,8DAAQ,CAACg4F,UAAD,EAAa,KAAK1pC,KAAL,CAAW/tD,CAAX,CAAb,CAAtB,MAAuD,CAAC,CAA5D,EAA+D;UAC3D4vF,OAAO,CAAC9rF,IAAR,CAAa9D,CAAb;QACH;MACJ;IACJ,CAND,MAOK;MACD,KAAK,IAAIA,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAG,KAAKqoD,KAAL,CAAW1uD,MAAjC,EAAyCW,CAAC,GAAG0F,GAA7C,EAAkD1F,CAAC,EAAnD,EAAuD;QACnD,IAAI03F,MAAM,GAAGj4F,8DAAQ,CAAC,YAAD,EAAe,KAAKsuD,KAAL,CAAW/tD,CAAX,CAAf,CAAR,GAAwCP,8DAAQ,CAAC,MAAD,EAAS,KAAKsuD,KAAL,CAAW/tD,CAAX,CAAT,CAA7D;;QACA,IAAK+tD,KAAK,CAACrsD,OAAN,CAAcg2F,MAAd,MAA0B,CAAC,CAA5B,IAAmC3pC,KAAK,CAACrsD,OAAN,CAAcjC,8DAAQ,CAACg4F,UAAD,EAAa,KAAK1pC,KAAL,CAAW/tD,CAAX,CAAb,CAAtB,MAAuD,CAAC,CAA/F,EAAmG;UAC/F4vF,OAAO,CAAC9rF,IAAR,CAAa9D,CAAb;QACH;MACJ;IACJ;;IACD,OAAO4vF,OAAP;EACH,CApBD;;EAqBAjG,cAAc,CAACzrF,SAAf,CAAyBi5F,WAAzB,GAAuC,UAAU7jB,GAAV,EAAe;IAClD,KAAKhvE,MAAL,CAAYkwE,YAAZ,GAA2B,gBAA3B;;IACA,IAAI/zE,uEAAiB,CAAC6yE,GAAD,CAArB,EAA4B;MACxB,KAAKoiB,aAAL;MACA;IACH;;IACD,IAAI9F,OAAO,GAAG,KAAK2H,aAAL,CAAmBjkB,GAAnB,CAAd;;IACA,IAAIsc,OAAO,CAACvwF,MAAR,KAAmB,CAAvB,EAA0B;MACtB;IACH,CATiD,CAUlD;;;IACA,IAAID,IAAI,GAAG,EAAX;IACA,IAAI6/E,MAAM,GAAG,EAAb;;IACA,KAAK,IAAIj/E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG4vF,OAAO,CAACvwF,MAA5B,EAAoCW,CAAC,EAArC,EAAyC;MACrCZ,IAAI,CAACY,CAAD,CAAJ,GAAU,KAAK+tD,KAAL,CAAW6hC,OAAO,CAAC5vF,CAAD,CAAlB,CAAV;MACAi/E,MAAM,CAACj/E,CAAD,CAAN,GAAYo9E,WAAW,CAAC,KAAK94E,MAAN,EAAclF,IAAI,CAACY,CAAD,CAAlB,CAAvB;IACH;;IACDg/E,aAAa,CAAC,KAAK16E,MAAN,EAAclF,IAAd,EAAoB6/E,MAApB,CAAb;EACH,CAlBD;;EAmBA0K,cAAc,CAACzrF,SAAf,CAAyBk5F,aAAzB,GAAyC,UAAU9jB,GAAV,EAAe;IACpD,IAAI7yE,uEAAiB,CAAC6yE,GAAD,CAArB,EAA4B;MACxB,KAAKuL,UAAL;MACA;IACH;;IACD,IAAI9+D,KAAK,GAAG,KAAKw3E,aAAL,CAAmBjkB,GAAnB,CAAZ;;IACA,IAAIvzD,KAAK,CAAC1gB,MAAN,KAAiB,CAArB,EAAwB;MACpB;IACH,CARmD,CASpD;;;IACA,IAAID,IAAI,GAAG,EAAX;IACA,IAAI6/E,MAAM,GAAG,EAAb;;IACA,KAAK,IAAIj/E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+f,KAAK,CAAC1gB,MAA1B,EAAkCW,CAAC,EAAnC,EAAuC;MACnCZ,IAAI,CAACY,CAAD,CAAJ,GAAU,KAAK+tD,KAAL,CAAWhuC,KAAK,CAAC/f,CAAD,CAAhB,CAAV;MACAi/E,MAAM,CAACj/E,CAAD,CAAN,GAAYo9E,WAAW,CAAC,KAAK94E,MAAN,EAAclF,IAAI,CAACY,CAAD,CAAlB,CAAvB;IACH;;IACDm/E,eAAe,CAAC,KAAK76E,MAAN,EAAclF,IAAd,EAAoB6/E,MAApB,CAAf;EACH,CAjBD;;EAkBA0K,cAAc,CAACzrF,SAAf,CAAyBm5F,QAAzB,GAAoC,UAAUjqF,EAAV,EAAc;IAC9C,IAAI3M,uEAAiB,CAAC2M,EAAD,CAArB,EAA2B;MACvB;IACH;;IACD,IAAIwiF,OAAO,GAAG,KAAK2H,aAAL,CAAmB,CAACnqF,EAAD,CAAnB,CAAd;;IACA,IAAIwiF,OAAO,CAACvwF,MAAR,GAAiB,CAArB,EAAwB;MACpB,KAAK8xF,YAAL,CAAkB,KAAKjD,QAAL,CAAc0B,OAAO,CAAC,CAAD,CAArB,CAAlB;IACH;EACJ,CARD;;EASAjG,cAAc,CAACzrF,SAAf,CAAyBo5F,UAAzB,GAAsC,UAAUlqF,EAAV,EAAcsS,IAAd,EAAoB;IACtD,KAAKpb,MAAL,CAAYkwE,YAAZ,GAA2B,gBAA3B;;IACA,IAAI/zE,uEAAiB,CAAC2M,EAAD,CAArB,EAA2B;MACvB,KAAKuoF,aAAL;MACA;IACH;;IACD,IAAI/F,OAAO,GAAG,KAAK2H,aAAL,CAAmB,CAACnqF,EAAD,CAAnB,CAAd;;IACA,IAAIwiF,OAAO,CAACvwF,MAAR,GAAiB,CAArB,EAAwB;MACpBm/E,kBAAkB,CAAC,KAAKl6E,MAAN,EAAc,KAAKypD,KAAL,CAAW6hC,OAAO,CAAC,CAAD,CAAlB,CAAd,CAAlB;;MACA,IAAInvF,uEAAiB,CAACif,IAAD,CAArB,EAA6B;QACzBi/D,QAAQ,CAAC,KAAKr6E,MAAN,CAAR;MACH,CAFD,MAGK;QACD,IAAI,CAACs6E,aAAa,CAAC,KAAKt6E,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAAD,CAAlB,EAA6C;UACzCqB,kBAAkB,CAAC,KAAKxyE,MAAN,EAAc,KAAKA,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAAd,EAAuCnD,cAAvC,CAAlB;QACH,CAFD,MAGK;UACD+N,MAAM,CAAC,KAAK/7E,MAAN,EAAc,KAAKA,MAAL,CAAYuuE,IAA1B,EAAgCnzD,IAAhC,CAAN;QACH;MACJ;IACJ;EACJ,CArBD;;EAsBA,OAAOiqE,cAAP;AACH,CA5jD6C,EAA9C;AA8jDA;AACA;AACA;;;AACA,IAAIgO,aAAa;AAAG;AAAyB,YAAY;EACrD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACI,SAASA,aAAT,CAAuBrzF,MAAvB,EAA+B;IAC3B,KAAKszF,WAAL,GAAmB,EAAnB;IACA,KAAKC,cAAL,GAAsB,EAAtB;IACA,KAAKC,WAAL,GAAmB,IAAnB;IACA,KAAKC,eAAL,GAAuB,IAAvB;IACA,KAAKzzF,MAAL,GAAcA,MAAd;IACA,KAAK21C,UAAL,GAAkB;MACd4xC,KAAK,EAAE;IADO,CAAlB;IAGA,KAAKjiD,MAAL;EACH;;EACD+tD,aAAa,CAACz5F,SAAd,CAAwB24B,iBAAxB,GAA4C,UAAUhyB,CAAV,EAAa;IACrD,IAAIA,CAAC,CAAC89B,MAAF,KAAa,KAAKvL,aAAL,EAAb,IAAqCvyB,CAAC,CAAC89B,MAAF,KAAa,QAAtD,EAAgE;MAC5D;IACH;;IACD,KAAK,IAAInhC,EAAE,GAAG,CAAT,EAAY8F,EAAE,GAAGhG,MAAM,CAACjB,IAAP,CAAYwE,CAAC,CAAC46B,OAAd,CAAtB,EAA8Cj+B,EAAE,GAAG8F,EAAE,CAACjI,MAAtD,EAA8DmC,EAAE,EAAhE,EAAoE;MAChE,IAAI6G,IAAI,GAAGf,EAAE,CAAC9F,EAAD,CAAb;MACA,IAAI5B,KAAK,GAAGiF,CAAC,CAAC46B,OAAF,CAAU81C,cAAtB;;MACA,QAAQltE,IAAR;QACI,KAAK,gBAAL;UACI,IAAI,CAAC5H,uEAAiB,CAACb,KAAK,CAACo4F,mBAAP,CAAtB,EAAmD;YAC/C,KAAKC,eAAL,CAAqBr4F,KAAK,CAACo4F,mBAA3B;UACH;;UACD,IAAI,KAAK1zF,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAhC,CAA0Cn1E,KAA1C,IAAmD,KAAK0E,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAhC,CAA0Cn1E,KAA1C,KAAoD,EAAvG,IACA,EAAE,CAACa,uEAAiB,CAACb,KAAK,CAACo4F,mBAAP,CAAlB,IAAiDv3F,uEAAiB,CAACb,KAAK,CAAC41E,UAAP,CAAlE,IACE/0E,uEAAiB,CAACb,KAAK,CAACmpD,UAAP,CADrB,CADJ,EAE8C;YAC1CqsB,iBAAiB,CAAC,KAAK9wE,MAAN,EAAc,KAAKA,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAhC,CAA0Cn1E,KAAxD,EAA+D,KAA/D,CAAjB;UACH;;UACD;MAVR;IAYH;EACJ,CApBD;;EAqBA+3F,aAAa,CAACz5F,SAAd,CAAwB0rC,MAAxB,GAAiC,YAAY;IACzC,KAAKtqC,gBAAL;EACH,CAFD;;EAGAq4F,aAAa,CAACz5F,SAAd,CAAwBg6F,YAAxB,GAAuC,YAAY;IAC/C,IAAIhlB,SAAS,GAAG,KAAK5uE,MAAL,CAAY4uE,SAA5B;IACA,IAAIilB,KAAK,GAAG,KAAK7zF,MAAL,CAAYuuE,IAAZ,CAAiB9yE,KAAjB,CAAuB,GAAvB,CAAZ;IACA,IAAIq4F,YAAY,GAAG,KAAK9zF,MAAL,CAAYa,aAAZ,CAA0B,IAA1B,EAAgC;MAAE0rB,SAAS,EAAE;IAAb,CAAhC,CAAnB;IACA,IAAIwnE,YAAY,GAAG,IAAnB;IACA,IAAIC,YAAY,GAAGplB,SAAS,CAAC7zE,MAA7B;;IACA,IAAI6zE,SAAS,CAAC7zE,MAAV,GAAmB,CAAvB,EAA0B;MACtB,IAAI+N,EAAE,GAAG,EAAT;;MACA,KAAK,IAAIpN,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGs4F,YAApB,EAAkCt4F,CAAC,EAAnC,EAAuC;QACnC,IAAIu4F,WAAW,GAAG,IAAlB;QACAF,YAAY,GAAG,KAAK/zF,MAAL,CAAYa,aAAZ,CAA0B,IAA1B,EAAgC;UAAE0rB,SAAS,EAAE;QAAb,CAAhC,CAAf;;QACA,KAAK,IAAIpkB,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIzM,CAArB,EAAwByM,CAAC,EAAzB,EAA6B;UACzBW,EAAE,GAAGA,EAAE,GAAG+qF,KAAK,CAAC1rF,CAAD,CAAV,GAAgB,GAArB;QACH;;QACD4rF,YAAY,CAACtnE,YAAb,CAA0B,YAA1B,EAAwC3jB,EAAxC;;QACA,IAAIpN,CAAC,KAAK,CAAV,EAAa;UACT,IAAIiwF,IAAI,GAAG9qF,mEAAa,CAAC,MAAD,EAAS;YAAE0rB,SAAS,EAAEk9C;UAAb,CAAT,CAAxB;UACAsqB,YAAY,CAACxyF,WAAb,CAAyBoqF,IAAzB;QACH;;QACD,IAAIqI,YAAY,GAAGt4F,CAAf,KAAqB,CAAzB,EAA4B;UACxBu4F,WAAW,GAAGpzF,mEAAa,CAAC,GAAD,EAAM;YAAE0rB,SAAS,EAAEs5C;UAAb,CAAN,CAA3B;UACAkuB,YAAY,CAACtnE,YAAb,CAA0B,UAA1B,EAAsC,GAAtC;QACH,CAHD,MAIK;UACDwnE,WAAW,GAAGpzF,mEAAa,CAAC,MAAD,EAAS;YAAE0rB,SAAS,EAAEs5C;UAAb,CAAT,CAA3B;QACH;;QACD/8D,EAAE,GAAG,EAAL;QACAmrF,WAAW,CAACC,SAAZ,GAAwBtlB,SAAS,CAAClzE,CAAD,CAAjC;QACAq4F,YAAY,CAACxyF,WAAb,CAAyB0yF,WAAzB;QACAH,YAAY,CAACvyF,WAAb,CAAyBwyF,YAAzB;MACH;;MACD,IAAII,SAAS,GAAG,KAAKn0F,MAAL,CAAYo0F,uBAAZ,CAAoCrxF,aAApC,CAAkD,kBAAlD,CAAhB;;MACA,IAAI,CAAC5G,uEAAiB,CAACg4F,SAAD,CAAtB,EAAmC;QAC/B,IAAI,CAACh4F,uEAAiB,CAAC,KAAKk4F,UAAN,CAAtB,EAAyC;UACrC,KAAKA,UAAL,CAAgBj4E,OAAhB;QACH;;QACDsP,4DAAM,CAACyoE,SAAD,CAAN;MACH;;MACD,IAAIG,UAAU,GAAG,KAAKt0F,MAAL,CAAYo0F,uBAAZ,CAAoCrxF,aAApC,CAAkD,gBAAlD,CAAjB;;MACA,IAAI,CAACuxF,UAAL,EAAiB;QACb,KAAKt0F,MAAL,CAAYo0F,uBAAZ,CAAoC/lE,YAApC,CAAiDylE,YAAjD,EAA+DQ,UAA/D;MACH,CAFD,MAGK;QACD,KAAKt0F,MAAL,CAAYo0F,uBAAZ,CAAoC7yF,WAApC,CAAgDuyF,YAAhD;MACH;;MACD,KAAKS,mBAAL,CAAyBT,YAAzB;IACH;EACJ,CA/CD;EAgDA;;;EACAT,aAAa,CAACz5F,SAAd,CAAwB26F,mBAAxB,GAA8C,UAAUC,WAAV,EAAuB;IACjE,IAAIC,UAAU,GAAGD,WAAW,CAACvzF,gBAAZ,CAA6B,IAA7B,CAAjB;IACA,IAAIkzF,SAAS,GAAG,KAAKn0F,MAAL,CAAYo0F,uBAAZ,CAAoCrxF,aAApC,CAAkD,kBAAlD,CAAhB;IACA,IAAI6qB,KAAK,GAAGvzB,MAAM,CAAC4iC,gBAAP,CAAwBk3D,SAAxB,EAAmC,IAAnC,CAAZ;IACA,IAAIO,MAAM,GAAGz6E,UAAU,CAAC2T,KAAK,CAACsP,gBAAN,CAAuB,eAAvB,CAAD,CAAvB;IACA,IAAIy3D,KAAK,GAAG16E,UAAU,CAAC2T,KAAK,CAACsP,gBAAN,CAAuB,cAAvB,CAAD,CAAtB;IACA,IAAI03D,kBAAkB,GAAGT,SAAS,CAACrmE,WAAV,GAAwB4mE,MAAxB,GAAiCC,KAA1D;IACA,IAAIb,YAAY,GAAG,KAAK9zF,MAAL,CAAYa,aAAZ,CAA0B,IAA1B,EAAgC;MAAE0rB,SAAS,EAAE;IAAb,CAAhC,CAAnB;IACA,IAAIsoE,eAAe,GAAG,CAAtB;IACA,IAAIC,gBAAgB,GAAG,EAAvB;;IACA,KAAK,IAAIp5F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+4F,UAAU,CAAC15F,MAA/B,EAAuCW,CAAC,EAAxC,EAA4C;MACxC,IAAI+yC,KAAK,GAAGgmD,UAAU,CAAC/4F,CAAD,CAAV,CAAc23C,WAA1B;MACAyhD,gBAAgB,CAACt1F,IAAjB,CAAsBivC,KAAtB;MACAomD,eAAe,GAAGA,eAAe,GAAGpmD,KAApC;IACH;;IACD,IAAI,CAACtyC,uEAAiB,CAACg4F,SAAD,CAAtB,EAAmC;MAC/BzoE,4DAAM,CAACyoE,SAAD,CAAN;IACH;;IACD,IAAIY,eAAe,GAAG,KAAK/0F,MAAL,CAAYa,aAAZ,CAA0B,KAA1B,CAAtB;IACAk0F,eAAe,CAACtoE,YAAhB,CAA6B,OAA7B,EAAsC,eAAtC;IACA,IAAI3jB,EAAE,GAAG,KAAK9I,MAAL,CAAYU,OAAZ,CAAoBoI,EAApB,GAAyBg8D,SAAlC;IACA,IAAIkwB,WAAW,GAAGn0F,mEAAa,CAAC,OAAD,EAAU;MAAEiI,EAAE,EAAEA,EAAN;MACrC4jB,KAAK,EAAE;QAAEuoE,YAAY,EAAE,KAAhB;QAAuB,cAAclgB,aAAa,CAAC,KAAK/0E,MAAN,EAAc,QAAd;MAAlD;IAD8B,CAAV,CAA/B;IAEA+0F,eAAe,CAACxzF,WAAhB,CAA4ByzF,WAA5B;IACA,IAAIE,SAAS,GAAG,KAAKl1F,MAAL,CAAYo0F,uBAAZ,CAAoCrxF,aAApC,CAAkD,yBAAlD,CAAhB;;IACA,IAAI5G,uEAAiB,CAAC+4F,SAAD,CAArB,EAAkC;MAC9B,KAAKl1F,MAAL,CAAYo0F,uBAAZ,CAAoC7yF,WAApC,CAAgDwzF,eAAhD;MACA,IAAII,IAAI,GAAGt0F,mEAAa,CAAC,MAAD,EAAS;QAAE0rB,SAAS,EAAE;MAAb,CAAT,CAAxB;MACAzB,kEAAA,CAAiBqqE,IAAjB,EAAuB,OAAvB,EAAgC,KAAKC,WAArC,EAAkD,IAAlD;MACAJ,WAAW,CAACnhD,aAAZ,CAA0BxlB,YAA1B,CAAuC8mE,IAAvC,EAA6CH,WAA7C;MACA,KAAKvkB,SAAL,GAAiB,IAAInP,2DAAJ,CAAY;QACzBhmE,KAAK,EAAE,EADkB;QAEzB+5F,eAAe,EAAE,IAFQ;QAGzBzS,WAAW,EAAE7N,aAAa,CAAC,KAAK/0E,MAAN,EAAc,QAAd,CAHD;QAIzB6B,KAAK,EAAE,KAAKyzF,OAAL,CAAaz7F,IAAb,CAAkB,IAAlB,CAJkB;QAKzB07F,IAAI,EAAE,KAAKC,MAAL,CAAY37F,IAAZ,CAAiB,IAAjB;MALmB,CAAZ,CAAjB;MAOA,KAAK42E,SAAL,CAAezrC,QAAf,CAAwB,MAAM,KAAKhlC,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+Bg8D,SAAvD;MACA,KAAK6uB,eAAL,CAAqB,KAAK3zF,MAAL,CAAYixE,cAAZ,CAA2ByiB,mBAAhD;MACA,IAAI+B,SAAS,GAAG,KAAKhlB,SAAL,CAAe/vE,OAAf,CAAuB88E,kBAAvC;MACA1yD,kEAAA,CAAiB2qE,SAAjB,EAA4B,WAA5B,EAAyC,KAAKC,mBAAL,CAAyB77F,IAAzB,CAA8B,IAA9B,CAAzC,EAA8E,IAA9E;MACAixB,kEAAA,CAAiB,KAAK2lD,SAAL,CAAe/vE,OAAhC,EAAyC,OAAzC,EAAkD,KAAKi1F,OAAL,CAAa97F,IAAb,CAAkB,IAAlB,CAAlD,EAA2E,IAA3E;IACH;;IACD,IAAIy6F,UAAU,GAAG,KAAKt0F,MAAL,CAAYo0F,uBAAZ,CAAoCrxF,aAApC,CAAkD,gBAAlD,CAAjB;IACA6xF,kBAAkB,GAAGA,kBAAkB,IAAI,KAAKnB,eAAL,GAAuB,KAAKA,eAA5B,GAA8Ca,UAAU,CAACxmE,WAA7D,CAAvC;;IACA,IAAI+mE,eAAe,GAAGD,kBAAtB,EAA0C;MACtC,IAAIl5F,CAAC,GAAG+4F,UAAU,CAAC15F,MAAnB;;MACA,OAAOW,CAAC,EAAR,EAAY;QACR,IAAIinB,IAAI,GAAGiyE,kBAAkB,GAAGE,gBAAgB,CAACp5F,CAAD,CAAhD;;QACA,IAAIinB,IAAI,GAAG,EAAX,EAAe;UACXmxE,YAAY,CAACzlE,YAAb,CAA0BomE,UAAU,CAAC/4F,CAAD,CAApC,EAAyCo4F,YAAY,CAAC/wF,aAAb,CAA2B,IAA3B,CAAzC;UACA6xF,kBAAkB,GAAGjyE,IAArB;QACH,CAHD,MAIK;UACD;UACA,IAAI8mC,KAAK,GAAG,EAAZ;;UACA,KAAK,IAAIthD,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIzM,CAArB,EAAwByM,CAAC,EAAzB,EAA6B;YACzB,IAAIwwE,SAAS,GAAG8b,UAAU,CAACtsF,CAAD,CAA1B;YACAshD,KAAK,CAACjqD,IAAN,CAAW;cACPqT,IAAI,EAAE8lE,SAAS,CAACub,SADT;cAEP0B,KAAK,EAAEjd,SAAS,CAACroD,YAAV,CAAuB,YAAvB;YAFA,CAAX;UAIH;;UACD,IAAIulE,SAAS,GAAG,KAAK71F,MAAL,CAAYa,aAAZ,CAA0B,IAA1B,EAAgC;YAAE0rB,SAAS,EAAE;UAAb,CAAhC,CAAhB,CAVC,CAWD;;UACA,IAAII,UAAU,GAAG;YAAEJ,SAAS,EAAE;UAAb,CAAjB;UACA,IAAIupE,WAAW,GAAG,KAAK91F,MAAL,CAAYa,aAAZ,CAA0B,QAA1B,EAAoC8rB,UAApC,CAAlB;UACAkpE,SAAS,CAACt0F,WAAV,CAAsBu0F,WAAtB;UACAhC,YAAY,CAACzlE,YAAb,CAA0BwnE,SAA1B,EAAqC/B,YAAY,CAAC/wF,aAAb,CAA2B,IAA3B,CAArC;UACA,KAAKsxF,UAAL,GAAkB,IAAI1yB,wEAAJ,CAAmB;YACjClY,KAAK,EAAEA,KAD0B;YAEjCmsB,QAAQ,EAAE,wBAFuB;YAGjCqT,OAAO,EAAE7f,eAHwB;YAIjC2sB,YAAY,EAAE,KAJmB;YAKjCzW,mBAAmB,EAAE,KAAKt/E,MAAL,CAAYs/E,mBALA;YAMjC0W,gBAAgB,EAAE,KAAKC,oBAAL,CAA0Bp8F,IAA1B,CAA+B,IAA/B,CANe;YAOjCm1B,MAAM,EAAE,KAAKknE,uBAAL,CAA6Br8F,IAA7B,CAAkC,IAAlC;UAPyB,CAAnB,CAAlB;UASA,KAAKw6F,UAAL,CAAgB3vD,gBAAhB,GAAmC,IAAnC;UACA,KAAK2vD,UAAL,CAAgBrvD,QAAhB,CAAyB8wD,WAAzB;UACA;QACH;MACJ;;MACD,KAAK91F,MAAL,CAAYo0F,uBAAZ,CAAoC/lE,YAApC,CAAiDylE,YAAjD,EAA+DQ,UAA/D;IACH,CAvCD,MAwCK;MACD,KAAKt0F,MAAL,CAAYo0F,uBAAZ,CAAoC/lE,YAApC,CAAiDmmE,WAAjD,EAA8DF,UAA9D;IACH;EACJ,CAxFD;EAyFA;;;EACAjB,aAAa,CAACz5F,SAAd,CAAwB07F,OAAxB,GAAkC,YAAY;IAC1C,IAAIa,IAAI,GAAGxmE,6DAAO,CAAC,KAAK8gD,SAAL,CAAe/vE,OAAhB,EAAyB,gBAAzB,CAAlB;IACAy1F,IAAI,CAACppE,SAAL,CAAe9B,GAAf,CAAmB,SAAnB;EACH,CAHD;EAIA;;;EACAooE,aAAa,CAACz5F,SAAd,CAAwB+7F,OAAxB,GAAkC,YAAY;IAC1C,KAAK31F,MAAL,CAAYgb,MAAZ,CAAmBoyD,UAAnB,EAA+B;MAAEnuE,IAAI,EAAE,KAAKe;IAAb,CAA/B;EACH,CAFD;EAGA;;;EACAqzF,aAAa,CAACz5F,SAAd,CAAwB47F,MAAxB,GAAiC,YAAY;IACzC,IAAIW,IAAI,GAAGxmE,6DAAO,CAAC,KAAK8gD,SAAL,CAAe/vE,OAAhB,EAAyB,gBAAzB,CAAlB;IACAy1F,IAAI,CAACppE,SAAL,CAAerB,MAAf,CAAsB,SAAtB;EACH,CAHD;EAIA;;;EACA2nE,aAAa,CAACz5F,SAAd,CAAwBs8F,uBAAxB,GAAkD,UAAUt7F,KAAV,EAAiB;IAC/D;IACA,IAAIqE,IAAI,GAAG;MAAE+2B,MAAM,EAAEp7B,KAAK,CAAC8F;IAAhB,CAAX;IACA,KAAK01F,uBAAL,CAA6Bn3F,IAA7B;EACH,CAJD;EAKA;;;EACAo0F,aAAa,CAACz5F,SAAd,CAAwBq8F,oBAAxB,GAA+C,UAAUh3F,IAAV,EAAgB;IAC3DA,IAAI,CAACyB,OAAL,CAAa+rB,YAAb,CAA0B,YAA1B,EAAwCtxB,8DAAQ,CAAC,OAAD,EAAU8D,IAAI,CAACyiD,IAAf,CAAhD;IACA,IAAI20C,MAAM,GAAG,KAAKr2F,MAAL,CAAYa,aAAZ,CAA0B,GAA1B,EAA+B;MAAE0rB,SAAS,EAAE;IAAb,CAA/B,CAAb;IACAttB,IAAI,CAACyB,OAAL,CAAaa,WAAb,CAAyB80F,MAAzB;EACH,CAJD;;EAKAhD,aAAa,CAACz5F,SAAd,CAAwB+5F,eAAxB,GAA0C,UAAU2C,KAAV,EAAiB;IACvD,IAAIA,KAAJ,EAAW;MACP,KAAK7lB,SAAL,CAAevoB,KAAf,GAAuB,KAAKwtC,mBAAL,CAAyB77F,IAAzB,CAA8B,IAA9B,CAAvB;MACA,KAAK42E,SAAL,CAAer+B,MAAf,GAAwB,IAAxB;IACH,CAHD,MAIK;MACD,KAAKq+B,SAAL,CAAer+B,MAAf,GAAwB,KAAKsjD,mBAAL,CAAyB77F,IAAzB,CAA8B,IAA9B,CAAxB;MACA,KAAK42E,SAAL,CAAevoB,KAAf,GAAuB,IAAvB;IACH;EACJ,CATD;;EAUAmrC,aAAa,CAACz5F,SAAd,CAAwB87F,mBAAxB,GAA8C,UAAUz2F,IAAV,EAAgB;IAC1D,IAAID,KAAK,GAAG,IAAZ;;IACA,IAAI,CAAC7C,uEAAiB,CAAC8C,IAAI,CAAC3D,KAAN,CAAtB,EAAoC;MAChC,KAAK0E,MAAL,CAAY0wE,UAAZ,GAAyB,KAAzB;;MACA,IAAI,KAAK1wE,MAAL,CAAYixE,cAAZ,CAA2ByiB,mBAA/B,EAAoD;QAChDr5F,MAAM,CAAC8E,YAAP,CAAoB,KAAKq0F,WAAzB;QACA,KAAKA,WAAL,GAAmBn5F,MAAM,CAAC+E,UAAP,CAAkB,YAAY;UAAE0xE,iBAAiB,CAAC9xE,KAAK,CAACgB,MAAP,EAAef,IAAI,CAAC3D,KAApB,EAA2B,KAA3B,CAAjB;QAAqD,CAArF,EAAuF,GAAvF,CAAnB;MACH,CAHD,MAIK;QACDw1E,iBAAiB,CAAC,KAAK9wE,MAAN,EAAcf,IAAI,CAAC3D,KAAnB,EAA0B,KAA1B,CAAjB;MACH;IACJ;EACJ,CAZD;;EAaA+3F,aAAa,CAACz5F,SAAd,CAAwBw8F,uBAAxB,GAAkD,UAAU71F,CAAV,EAAa;IAC3D,IAAIoxF,EAAE,GAAGpxF,CAAC,CAACy1B,MAAX;;IACA,IAAI27D,EAAE,CAAC4E,QAAH,KAAgB,IAAhB,IAAwB5E,EAAE,CAAC4E,QAAH,KAAgB,GAA5C,EAAiD;MAC7C,IAAIt2F,IAAI,GAAG0xF,EAAE,CAAC4E,QAAH,KAAgB,IAAhB,GAAuB5E,EAAE,CAACvvC,QAAH,CAAY,CAAZ,CAAvB,GAAwCuvC,EAAnD;;MACA,IAAI,CAACx1F,uEAAiB,CAAC8D,IAAD,CAAtB,EAA8B;QAC1B,KAAKD,MAAL,CAAY0wE,UAAZ,GAAyB,KAAzB;QACA,IAAI8lB,WAAW,GAAG,KAAKnoB,UAAL,CAAgBpuE,IAAhB,CAAlB;QACA,KAAKD,MAAL,CAAYmxE,QAAZ,GAAuB,CAACh2E,8DAAQ,CAAC,KAAK6E,MAAL,CAAY0uE,MAAZ,CAAmB,KAAK1uE,MAAL,CAAY0uE,MAAZ,CAAmB3zE,MAAnB,GAA4B,CAA/C,CAAD,EAAoD,KAAKiF,MAAL,CAAYuvE,QAAhE,CAAT,CAAvB;QACA,KAAKknB,eAAL,CAAqB,KAAKz2F,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAArB;QACAa,IAAI,CAAC,KAAKhyE,MAAN,EAAcorE,WAAd,EAA2BorB,WAA3B,CAAJ;QACA,IAAIE,UAAU,GAAG,KAAK12F,MAAL,CAAY0uE,MAAZ,CAAmB,KAAK1uE,MAAL,CAAY0uE,MAAZ,CAAmB3zE,MAAnB,GAA4B,CAA/C,CAAjB;QACA,KAAKiF,MAAL,CAAYgb,MAAZ,CAAmBiyD,mBAAnB,EAAwC;UAAE5uC,MAAM,EAAE,UAAV;UAAsBo4C,YAAY,EAAEigB;QAApC,CAAxC;MACH;IACJ;EACJ,CAdD,CAvOqD,CAsPrD;;;EACArD,aAAa,CAACz5F,SAAd,CAAwB68F,eAAxB,GAA0C,UAAU37F,IAAV,EAAgB;IACtD,IAAIopB,SAAS,GAAG;MAAEC,MAAM,EAAE,KAAV;MAAiB2vD,WAAW,EAAEh5E,IAA9B;MAAoCujC,MAAM,EAAE;IAA5C,CAAhB;IACA,OAAOna,SAAS,CAACC,MAAjB;IACA,KAAKnkB,MAAL,CAAY+rB,OAAZ,CAAoB,UAApB,EAAgC7H,SAAhC;EACH,CAJD;EAKA;;;EACAmvE,aAAa,CAACz5F,SAAd,CAAwBw7F,WAAxB,GAAsC,YAAY;IAC9C,IAAI,KAAKp1F,MAAL,CAAYg2E,QAAhB,EAA0B;MACtB,IAAI,KAAKh2E,MAAL,CAAYU,OAAZ,CAAoBqsB,SAApB,CAA8BM,QAA9B,CAAuCi4C,MAAvC,CAAJ,EAAoD;QAChDh4C,iEAAW,CAAC,CAAC,KAAKttB,MAAL,CAAYU,OAAb,CAAD,EAAwB4kE,MAAxB,CAAX;QACA,KAAKmuB,eAAL,GAAuB,IAAvB;MACH,CAHD,MAIK;QACD,IAAIa,UAAU,GAAG,KAAKt0F,MAAL,CAAYo0F,uBAAZ,CAAoCrxF,aAApC,CAAkD,gBAAlD,CAAjB;QACA,KAAK0wF,eAAL,GAAuBa,UAAU,CAACxmE,WAAlC;QACAlB,8DAAQ,CAAC,CAAC,KAAK5sB,MAAL,CAAYU,OAAb,CAAD,EAAwB4kE,MAAxB,CAAR;QACA,KAAKmL,SAAL,CAAe/vE,OAAf,CAAuBmB,KAAvB;MACH;IACJ;EACJ,CAbD;;EAcAwxF,aAAa,CAACz5F,SAAd,CAAwBy0E,UAAxB,GAAqC,UAAU7+C,IAAV,EAAgB;IACjD,IAAImiE,EAAE,GAAGhiE,6DAAO,CAACH,IAAD,EAAO,IAAP,CAAhB;IACA,IAAImnE,WAAW,GAAGhF,EAAE,CAACrhE,YAAH,CAAgB,YAAhB,CAAlB;IACA,KAAKijE,cAAL,GAAsBoD,WAAtB;IACA,IAAIC,IAAI,GAAG,KAAKrD,cAAL,CAAoB93F,KAApB,CAA0B,GAA1B,CAAX;IACA,IAAIuzE,GAAG,GAAG,KAAKhvE,MAAL,CAAY0uE,MAAtB;IACA,IAAIO,KAAK,GAAG,KAAKjvE,MAAL,CAAY4uE,SAAxB;IACA,KAAK5uE,MAAL,CAAY0uE,MAAZ,GAAqB,EAArB;IACA,KAAK1uE,MAAL,CAAY4uE,SAAZ,GAAwB,EAAxB;IACA,IAAIioB,OAAO,GAAG,EAAd;;IACA,KAAK,IAAIn7F,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAGw1F,IAAI,CAAC77F,MAAL,GAAc,CAApC,EAAuCW,CAAC,GAAG0F,GAA3C,EAAgD1F,CAAC,EAAjD,EAAqD;MACjD,KAAKsE,MAAL,CAAY0uE,MAAZ,CAAmBlvE,IAAnB,CAAwBwvE,GAAG,CAACtzE,CAAD,CAA3B;MACA,KAAKsE,MAAL,CAAY4uE,SAAZ,CAAsBpvE,IAAtB,CAA2ByvE,KAAK,CAACvzE,CAAD,CAAhC;MACAm7F,OAAO,IAAID,IAAI,CAACl7F,CAAD,CAAJ,GAAU,GAArB;IACH;;IACD,KAAKsE,MAAL,CAAY4xB,aAAZ,CAA0B;MAAE28C,IAAI,EAAEsoB;IAAR,CAA1B,EAA6C,IAA7C;IACA,OAAOA,OAAP;EACH,CAjBD;;EAkBAxD,aAAa,CAACz5F,SAAd,CAAwBk9F,YAAxB,GAAuC,YAAY;IAC/C,KAAKlD,YAAL;IACA,KAAKmD,iBAAL;EACH,CAHD;;EAIA1D,aAAa,CAACz5F,SAAd,CAAwBoyF,WAAxB,GAAsC,YAAY;IAC9C,KAAK4H,YAAL;EACH,CAFD;;EAGAP,aAAa,CAACz5F,SAAd,CAAwBo9F,WAAxB,GAAsC,YAAY;IAC9C,KAAKpD,YAAL;EACH,CAFD;EAGA;;;EACAP,aAAa,CAACz5F,SAAd,CAAwByyF,WAAxB,GAAsC,YAAY;IAC9C,KAAKyK,YAAL;EACH,CAFD;EAGA;;;EACAzD,aAAa,CAACz5F,SAAd,CAAwBm9F,iBAAxB,GAA4C,YAAY;IACpD,KAAK/2F,MAAL,CAAY0wE,UAAZ,GAAyB,KAAzB;;IACA,IAAI,KAAKD,SAAL,KAAmB,KAAKA,SAAL,CAAen1E,KAAf,KAAyB,EAAzB,IAA+B,KAAKm1E,SAAL,CAAe/vE,OAAf,CAAuBpF,KAAvB,KAAiC,EAAnF,CAAJ,EAA4F;MACxF,KAAKm1E,SAAL,CAAen1E,KAAf,GAAuB,EAAvB;MACA,KAAKm1E,SAAL,CAAe/vE,OAAf,CAAuBpF,KAAvB,GAA+B,EAA/B;MACA,KAAKm1E,SAAL,CAAez+C,QAAf;IACH;EACJ,CAPD;;EAQAqhE,aAAa,CAACz5F,SAAd,CAAwBq9F,QAAxB,GAAmC,YAAY;IAC3C,KAAKrD,YAAL;EACH,CAFD;;EAGAP,aAAa,CAACz5F,SAAd,CAAwBs9F,UAAxB,GAAqC,YAAY;IAC7C,KAAKtD,YAAL;EACH,CAFD;;EAGAP,aAAa,CAACz5F,SAAd,CAAwBoB,gBAAxB,GAA2C,YAAY;IACnD,KAAKyzF,cAAL,GAAsB,IAAIx5C,gEAAJ,CAAmB,KAAKj1C,MAAL,CAAYo0F,uBAA/B,EAAwD;MAC1Ej+C,SAAS,EAAE,KAAKu4C,gBAAL,CAAsB70F,IAAtB,CAA2B,IAA3B,CAD+D;MAE1E87C,UAAU,EAAE,KAAKA,UAFyD;MAG1EzqB,SAAS,EAAE;IAH+D,CAAxD,CAAtB;IAKA,KAAKlrB,MAAL,CAAYwa,EAAZ,CAAegwD,YAAf,EAA6B,KAAKj4C,iBAAlC,EAAqD,IAArD;IACAzH,kEAAA,CAAiB,KAAK9qB,MAAL,CAAYo0F,uBAA7B,EAAsD,OAAtD,EAA+D,KAAKgC,uBAApE,EAA6F,IAA7F;IACA,KAAKp2F,MAAL,CAAYwa,EAAZ,CAAe4B,OAAf,EAAwB,KAAKA,OAA7B,EAAsC,IAAtC;IACA,KAAKpc,MAAL,CAAYwa,EAAZ,CAAe4wD,WAAf,EAA4B,KAAK0rB,YAAjC,EAA+C,IAA/C;IACA,KAAK92F,MAAL,CAAYwa,EAAZ,CAAekwD,WAAf,EAA4B,KAAKosB,YAAjC,EAA+C,IAA/C;IACA,KAAK92F,MAAL,CAAYwa,EAAZ,CAAeywD,UAAf,EAA2B,KAAK6rB,YAAhC,EAA8C,IAA9C;IACA,KAAK92F,MAAL,CAAYwa,EAAZ,CAAeoxD,OAAf,EAAwB,KAAKkrB,YAA7B,EAA2C,IAA3C;IACA,KAAK92F,MAAL,CAAYwa,EAAZ,CAAemwD,SAAf,EAA0B,KAAKqhB,WAA/B,EAA4C,IAA5C;IACA,KAAKhsF,MAAL,CAAYwa,EAAZ,CAAegyD,SAAf,EAA0B,KAAKwqB,WAA/B,EAA4C,IAA5C;IACA,KAAKh3F,MAAL,CAAYwa,EAAZ,CAAewwD,SAAf,EAA0B,KAAKqhB,WAA/B,EAA4C,IAA5C;IACA,KAAKrsF,MAAL,CAAYwa,EAAZ,CAAe2wD,cAAf,EAA+B,KAAK8rB,QAApC,EAA8C,IAA9C;IACA,KAAKj3F,MAAL,CAAYwa,EAAZ,CAAesyD,QAAf,EAAyB,KAAKoqB,UAA9B,EAA0C,IAA1C;IACA,KAAKl3F,MAAL,CAAYwa,EAAZ,CAAe0wD,SAAf,EAA0B,KAAK+rB,QAA/B,EAAyC,IAAzC;IACA,KAAKj3F,MAAL,CAAYwa,EAAZ,CAAe6yD,gBAAf,EAAiC,KAAK8pB,kBAAtC,EAA0D,IAA1D;IACA,KAAKn3F,MAAL,CAAYwa,EAAZ,CAAegzD,QAAf,EAAyB,KAAKod,UAA9B,EAA0C,IAA1C;IACA,KAAK5qF,MAAL,CAAYwa,EAAZ,CAAeixD,aAAf,EAA8B,KAAKwrB,QAAnC,EAA6C,IAA7C;IACA,KAAKj3F,MAAL,CAAYwa,EAAZ,CAAekzD,QAAf,EAAyB,KAAKkmB,YAA9B,EAA4C,IAA5C;EACH,CAvBD;;EAwBAP,aAAa,CAACz5F,SAAd,CAAwB80F,gBAAxB,GAA2C,UAAUnuF,CAAV,EAAa;IACpD,QAAQA,CAAC,CAACu1B,MAAV;MACI,KAAK,OAAL;QACI,KAAKsgE,uBAAL,CAA6B71F,CAA7B;QACA;IAHR;EAKH,CAND;;EAOA8yF,aAAa,CAACz5F,SAAd,CAAwBsB,mBAAxB,GAA8C,YAAY;IACtD,KAAKuzF,cAAL,CAAoBryE,OAApB;IACA,KAAKpc,MAAL,CAAY6a,GAAZ,CAAgBuwD,WAAhB,EAA6B,KAAK0rB,YAAlC;IACA,KAAK92F,MAAL,CAAY6a,GAAZ,CAAgB6vD,WAAhB,EAA6B,KAAKosB,YAAlC;IACA,KAAK92F,MAAL,CAAY6a,GAAZ,CAAgBowD,UAAhB,EAA4B,KAAK6rB,YAAjC;IACA,KAAK92F,MAAL,CAAY6a,GAAZ,CAAgB+wD,OAAhB,EAAyB,KAAKkrB,YAA9B;IACA,KAAK92F,MAAL,CAAY6a,GAAZ,CAAgBiyD,QAAhB,EAA0B,KAAKoqB,UAA/B;IACA,KAAKl3F,MAAL,CAAY6a,GAAZ,CAAgB8vD,SAAhB,EAA2B,KAAKqhB,WAAhC;IACA,KAAKhsF,MAAL,CAAY6a,GAAZ,CAAgB2xD,SAAhB,EAA2B,KAAKwqB,WAAhC;IACA,KAAKh3F,MAAL,CAAY6a,GAAZ,CAAgBmwD,SAAhB,EAA2B,KAAKqhB,WAAhC;IACA,KAAKrsF,MAAL,CAAY6a,GAAZ,CAAgBswD,cAAhB,EAAgC,KAAK8rB,QAArC;IACA,KAAKj3F,MAAL,CAAY6a,GAAZ,CAAgBqwD,SAAhB,EAA2B,KAAK+rB,QAAhC;IACA,KAAKj3F,MAAL,CAAY6a,GAAZ,CAAgBwyD,gBAAhB,EAAkC,KAAK8pB,kBAAvC;IACA,KAAKn3F,MAAL,CAAY6a,GAAZ,CAAgB2yD,QAAhB,EAA0B,KAAKod,UAA/B;IACA,KAAK5qF,MAAL,CAAY6a,GAAZ,CAAgB4wD,aAAhB,EAA+B,KAAKwrB,QAApC;IACA,KAAKj3F,MAAL,CAAY6a,GAAZ,CAAgB6yD,QAAhB,EAA0B,KAAKkmB,YAA/B;EACH,CAhBD;EAiBA;;;EACAP,aAAa,CAACz5F,SAAd,CAAwBgxF,UAAxB,GAAqC,UAAU3rF,IAAV,EAAgB;IACjD,IAAI,KAAKe,MAAL,CAAYsyE,YAAZ,KAA6B,KAAKx/C,aAAL,EAAjC,EAAuD;MACnD,IAAIskE,KAAK,GAAGn4F,IAAI,CAAC+2B,MAAL,CAAYrG,OAAZ,CAAoB,IAApB,CAAZ;MACA,KAAK3vB,MAAL,CAAY0tE,QAAZ,GAAuB,KAAKW,UAAL,CAAiB+oB,KAAK,CAACh1C,QAAN,CAAe,CAAf,CAAjB,CAAvB;MACA,KAAKpiD,MAAL,CAAYy3E,QAAZ,GAAuBt8E,8DAAQ,CAAC,KAAK6E,MAAL,CAAY0uE,MAAZ,CAAmB,KAAK1uE,MAAL,CAAY0uE,MAAZ,CAAmB3zE,MAAnB,GAA4B,CAA/C,CAAD,EAAoD,KAAKiF,MAAL,CAAYuvE,QAAhE,CAA/B;MACA,KAAKknB,eAAL,CAAqB,KAAKz2F,MAAL,CAAYy3E,QAAjC;MACA,IAAIif,UAAU,GAAG,KAAK12F,MAAL,CAAY0uE,MAAZ,CAAmB,KAAK1uE,MAAL,CAAY0uE,MAAZ,CAAmB3zE,MAAnB,GAA4B,CAA/C,CAAjB;MACA,KAAKiF,MAAL,CAAYgb,MAAZ,CAAmBiyD,mBAAnB,EAAwC;QAAE5uC,MAAM,EAAE,UAAV;QAAsBo4C,YAAY,EAAEigB;MAApC,CAAxC;IACH;EACJ,CATD;EAUA;AACJ;AACA;AACA;AACA;AACA;;;EACIrD,aAAa,CAACz5F,SAAd,CAAwBk5B,aAAxB,GAAwC,YAAY;IAChD,OAAO,eAAP;EACH,CAFD;;EAGAugE,aAAa,CAACz5F,SAAd,CAAwBwiB,OAAxB,GAAkC,YAAY;IAC1C,IAAI,KAAKpc,MAAL,CAAY6xB,WAAhB,EAA6B;MACzB;IACH;;IACD,KAAK32B,mBAAL;IACA;;IACA,IAAI,CAACiB,uEAAiB,CAAC,KAAKk4F,UAAN,CAAtB,EAAyC;MACrC,KAAKA,UAAL,CAAgBj4E,OAAhB;IACH;;IACD,IAAI,CAACjgB,uEAAiB,CAAC,KAAKs0E,SAAN,CAAtB,EAAwC;MACpC,KAAKA,SAAL,CAAer0D,OAAf;IACH;EACJ,CAZD;;EAaAi3E,aAAa,CAACz5F,SAAd,CAAwBu9F,kBAAxB,GAA6C,UAAUl4F,IAAV,EAAgB;IACzD,KAAKwxE,SAAL,CAAe/vE,OAAf,CAAuBkiF,WAAvB,GAAsC,KAAK5iF,MAAL,CAAYixE,cAAZ,CAA2B2R,WAA3B,IAA0C,IAA3C,GAAmD,KAAK5iF,MAAL,CAAYixE,cAAZ,CAA2B2R,WAA9E,GAA4F7N,aAAa,CAAC,KAAK/0E,MAAN,EAAc,QAAd,CAAb,GAAuC,GAAvC,GAA6C+0E,aAAa,CAAC,KAAK/0E,MAAN,EAAcf,IAAI,CAAC24E,GAAL,CAASx8D,IAAT,CAAcvf,QAAd,EAAd,CAA3L;EACH,CAFD;;EAGA,OAAOw3F,aAAP;AACH,CA/Y4C,EAA7C;AAiZA;AACA;AACA;;;AACA,IAAIgE,aAAa;AAAG;AAAyB,YAAY;EACrD;AACJ;AACA;AACA;AACA;AACA;EACI,SAASC,cAAT,CAAwBt3F,MAAxB,EAAgC;IAC5B,KAAKu3F,YAAL,GAAoB,EAApB;IACA,KAAKC,cAAL,GAAsB,IAAtB;IACA,KAAKC,aAAL,GAAqB,EAArB;IACA,KAAKz3F,MAAL,GAAcA,MAAd;IACA,KAAKslC,MAAL;EACH;;EACDgyD,cAAc,CAAC19F,SAAf,CAAyB0rC,MAAzB,GAAkC,YAAY;IAC1C,KAAKqQ,UAAL,GAAkB;MACd+hD,SAAS,EAAE,WADG;MAEdC,OAAO,EAAE;IAFK,CAAlB;IAIA,KAAKC,WAAL,GAAmB,IAAIh2B,oEAAJ,CAAgB;MAC/B3jD,SAAS,EAAE,KAAKje,MAAL,CAAYie,SADQ;MAE/BG,MAAM,EAAE,KAAKpe,MAAL,CAAYoe,MAFW;MAG/B4X,MAAM,EAAE,MAAM,KAAKh2B,MAAL,CAAYU,OAAZ,CAAoBoI,EAHH;MAI/Bw2E,mBAAmB,EAAE,KAAKt/E,MAAL,CAAYs/E,mBAJF;MAK/B0W,gBAAgB,EAAE,KAAK6B,kBAAL,CAAwBh+F,IAAxB,CAA6B,IAA7B,CALa;MAM/Bm1B,MAAM,EAAE,KAAKykC,QAAL,CAAc55D,IAAd,CAAmB,IAAnB,CANuB;MAO/B2kF,UAAU,EAAE,KAAKsZ,YAAL,CAAkBj+F,IAAlB,CAAuB,IAAvB,CAPmB;MAQ/B8kF,WAAW,EAAE,KAAKoZ,aAAL,CAAmBl+F,IAAnB,CAAwB,IAAxB,CARkB;MAS/B+7E,QAAQ,EAAEF,WAAW,CAAC,KAAK11E,MAAN,EAAcklE,UAAd;IATU,CAAhB,CAAnB;IAWA,KAAK0yB,WAAL,CAAiBlzD,gBAAjB,GAAoC,IAApC;IACA,KAAKkzD,WAAL,CAAiB5yD,QAAjB,CAA0B,MAAM,KAAKhlC,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+Bw7D,eAAzD;IACA,KAAKtpE,gBAAL;EACH,CAnBD;EAoBA;;;EACAs8F,cAAc,CAAC19F,SAAf,CAAyBi+F,kBAAzB,GAA8C,UAAU54F,IAAV,EAAgB;IAC1D,IAAIA,IAAI,CAACyiD,IAAL,CAAU54C,EAAV,KAAiB,KAAKkvF,SAAL,CAAe,gBAAf,CAArB,EAAuD;MACnD,IAAIC,QAAQ,GAAGp3F,mEAAa,CAAC,MAAD,CAA5B;MACA,IAAIH,OAAO,GAAGzB,IAAI,CAACyB,OAAnB;MACAA,OAAO,CAAC2tB,YAAR,CAAqB4pE,QAArB,EAA+B,KAAKj4F,MAAL,CAAYkyE,IAAZ,KAAqB,YAArB,GAAoCxxE,OAAO,CAACqvB,UAAR,CAAmB,CAAnB,CAApC,GAA4DrvB,OAAO,CAACqvB,UAAR,CAAmB,CAAnB,CAA3F;MACAkoE,QAAQ,CAACxrE,YAAT,CAAsB,OAAtB,EAA+B08C,UAAU,GAAG,GAAb,GAAmBpB,SAAlD;IACH;;IACD,IAAI9oE,IAAI,CAACyiD,IAAL,CAAU54C,EAAV,KAAiB,KAAKkvF,SAAL,CAAe,aAAf,CAArB,EAAoD;MAChD,IAAIC,QAAQ,GAAGp3F,mEAAa,CAAC,MAAD,CAA5B;MACA,IAAIH,OAAO,GAAGzB,IAAI,CAACyB,OAAnB;MACAA,OAAO,CAAC2tB,YAAR,CAAqB4pE,QAArB,EAA+B,KAAKj4F,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,GAAiCxxE,OAAO,CAACqvB,UAAR,CAAmB,CAAnB,CAAjC,GAAyDrvB,OAAO,CAACqvB,UAAR,CAAmB,CAAnB,CAAxF;MACAkoE,QAAQ,CAACxrE,YAAT,CAAsB,OAAtB,EAA+By8C,SAAS,GAAG,GAAZ,GAAkBnB,SAAjD;IACH;EACJ,CAbD;;EAcAuvB,cAAc,CAAC19F,SAAf,CAAyBm+F,aAAzB,GAAyC,YAAY;IACjD,KAAKG,UAAL,GAAkB,IAAlB;EACH,CAFD;EAGA;;;EACAZ,cAAc,CAAC19F,SAAf,CAAyBk+F,YAAzB,GAAwC,UAAU74F,IAAV,EAAgB;IACpD,IAAID,KAAK,GAAG,IAAZ;;IACA,KAAKy4F,aAAL,GAAqB,EAArB;IACA,IAAI79B,QAAQ,GAAG,KAAf;IACA,IAAI1gE,GAAJ,CAJoD,CAKpD;;IACA,IAAI4B,IAAJ;IACA,IAAIq9F,UAAU,GAAG,KAAjB;IACA,IAAIniE,MAAM,GAAG/2B,IAAI,CAACrE,KAAL,CAAWo7B,MAAxB;IACA,KAAKkiE,UAAL,GAAkB,KAAKE,iBAAL,GAAyBpiE,MAA3C;IACA,KAAKwhE,cAAL,GAAsBv4F,IAAI,CAACyB,OAA3B;;IACA,IAAIs1B,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0B,gBAA1B,CAAJ,EAAiD;MAC7C2I,MAAM,GAAG,KAAKh2B,MAAL,CAAYy4E,oBAAZ,CAAiC4f,UAAjC,CAA4C9kE,sBAA5C,CAAmE02C,OAAnE,EAA4E,CAA5E,CAAT;MACA,KAAKiuB,UAAL,GAAkB,KAAKE,iBAAL,GAAyBpiE,MAA3C;IACH;;IACD,KAAKsiE,aAAL,GAAqB,KAAKt4F,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,GAAiCviD,6DAAO,CAACqG,MAAD,EAAS,UAAT,CAAxC,GAA+DA,MAApF;;IACA,IAAI,KAAKh2B,MAAL,CAAYspF,oBAAZ,KAAqCtzD,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0B,kBAA1B,KAAiD2I,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0B,gBAA1B,CAAtF,CAAJ,EAAwI;MACpI2I,MAAM,GAAGA,MAAM,CAAC6d,aAAP,CAAqBlkB,OAArB,CAA6B,KAA7B,CAAT;IACH;;IACD,IAAIuiD,IAAI,GAAG,KAAKqmB,aAAL,CAAmBviE,MAAnB,CAAX;IACA,KAAKwiE,kBAAL;IACA;;IACA,IAAIxiE,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0Bw6C,SAA1B,KAAwCl4C,6DAAO,CAACqG,MAAD,EAAS,IAAT,CAA/C,IACCrG,6DAAO,CAACqG,MAAD,EAAS,MAAM,KAAKh2B,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+B67D,gBAAxC,CADR,IAECh1C,6DAAO,CAACqG,MAAD,EAAS,MAAM,KAAKh2B,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+B46D,UAAxC,CAFZ,EAEkE;MAC9DzkE,IAAI,CAACklB,MAAL,GAAc,IAAd,CAD8D,CAE9D;IACH,CALD,MAMK,IAAI,EAAE,KAAKnkB,MAAL,CAAYkyE,IAAZ,KAAqB,YAAvB,KAAwC,KAAKomB,aAA7C,IACL,KAAKA,aAAL,CAAmBvrE,SAAnB,CAA6BM,QAA7B,CAAsC,YAAtC,CADC,EACoD;MACrD,KAAKorE,aAAL,CAAmBziE,MAAnB;MACA;IACH,CAJI,MAKA,IAAIrG,6DAAO,CAACqG,MAAD,EAAS,MAAM2wC,KAAf,CAAX,EAAkC;MACnC,KAAK8xB,aAAL,CAAmBziE,MAAnB,EADmC,CAEnC;IACH,CAHI,MAIA,IAAI,CAACA,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0By6C,SAA1B,CAAD,IACL,CAAC9xC,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0B06C,SAA1B,CADI,IACoC,CAAC/xC,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0B26C,YAA1B,CADzC,EACkF;MACnF;MACA;MACA,IAAI,KAAKhoE,MAAL,CAAYkyE,IAAZ,KAAqB,YAArB,IAAqC,CAAC/1E,uEAAiB,CAACwzB,6DAAO,CAACqG,MAAD,EAAS,IAAT,CAAR,CAAvD,IAAkF,CAACrG,6DAAO,CAACqG,MAAD,EAAS,MAAM,KAAKh2B,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+B+6D,OAAxC,CAA9F,EAAgJ;QAC5I,IAAIspB,OAAO,GAAG;UAAE73C,OAAO,EAAE,IAAX;UAAiBE,QAAQ,EAAE;QAA3B,CAAd;;QACA,IAAI,CAAC7lB,6DAAO,CAACqG,MAAD,EAAS,IAAT,CAAP,CAAsBjJ,SAAtB,CAAgCM,QAAhC,CAAyC,UAAzC,CAAL,EAA2D;UACvD,KAAKrtB,MAAL,CAAY8xE,oBAAZ,CAAiCsb,WAAjC,CAA6Cp3D,MAA7C,EAAqDm3D,OAArD;QACH,CAJ2I,CAK5I;;;QACAryF,IAAI,GAAG,KAAKkF,MAAL,CAAYyyF,WAAnB;QACA74B,QAAQ,GAAG,IAAX;MACH,CARD,MASK,IAAI,CAACz9D,uEAAiB,CAACwzB,6DAAO,CAACqG,MAAD,EAAS,UAAT,CAAR,CAAtB,EAAqD;QACtD98B,GAAG,GAAG,KAAKo/F,aAAL,CAAmBhoE,YAAnB,CAAgC,UAAhC,CAAN,CADsD,CAEtD;;QACAx1B,IAAI,GAAG,KAAKkF,MAAL,CAAY4xE,iBAAZ,CAA8BC,OAA9B,CAAsC6mB,mBAAtC,CAA0Dx/F,GAA1D,EAA+D4B,IAAtE;;QACA,IAAIqB,uEAAiB,CAAC,KAAKm8F,aAAL,CAAmBhoE,YAAnB,CAAgC,eAAhC,CAAD,CAArB,EAAyE;UACrE;UACA,KAAKtwB,MAAL,CAAY4xE,iBAAZ,CAA8BC,OAA9B,CAAsC8mB,UAAtC,CAAiD,CAAC/8F,QAAQ,CAAC,KAAK08F,aAAL,CAAmBhoE,YAAnB,CAAgC,eAAhC,CAAD,EAAmD,EAAnD,CAAT,CAAjD;QACH;;QACDspC,QAAQ,GAAG,IAAX;QACA;MACH,CAVI,MAWA,IAAIjqC,6DAAO,CAACqG,MAAD,EAAS,MAAM,KAAKh2B,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+B+6D,OAAxC,CAAX,EAA6D;QAC9D3qE,GAAG,GAAGy2B,6DAAO,CAACqG,MAAD,EAAS,IAAT,CAAP,CAAsB1F,YAAtB,CAAmC,UAAnC,CAAN;QACA6nE,UAAU,GAAG,IAAb;MACH;MACD;;;MACA,IAAIv+B,QAAJ,EAAc;QACV,IAAIz+D,8DAAQ,CAAC,QAAD,EAAWL,IAAX,CAAR,KAA6B,IAAjC,EAAuC;UACnC,KAAK89F,WAAL;QACH,CAFD,MAGK;UACD,KAAKC,aAAL,CAAmB,KAAnB;QACH;QACD;;MACH,CARD,MASK,IAAIV,UAAJ,EAAgB;QACjB,KAAKU,aAAL,CAAmB,IAAnB;;QACA,IAAI3/F,GAAG,KAAK,KAAK8G,MAAL,CAAY0uE,MAAZ,CAAmB,CAAnB,CAAZ,EAAmC;UAC/B,KAAK+oB,aAAL,CAAmBj4F,IAAnB,CAAwB,QAAxB,EAAkC,QAAlC,EAA4C,KAA5C,EAAmD,MAAnD;QACH;QACD;QACA;;MACH,CAPI,MAQA,IAAI0yE,IAAI,KAAK,UAAT,IAAuBA,IAAI,KAAK,UAAhC,IAA8CA,IAAI,KAAK,WAA3D,EAAwE;QACzE,KAAKumB,aAAL,CAAmBziE,MAAnB;QACA;MACH,CAHI,MAIA;QACD/2B,IAAI,CAACklB,MAAL,GAAc,IAAd;MACH;IACJ;;IACD,IAAI20E,QAAQ,GAAG9pE,4DAAM,CAAC,MAAM,KAAKgpE,SAAL,CAAe,OAAf,CAAP,EAAgC,KAAKJ,WAAL,CAAiBl3F,OAAjD,CAArB;;IACA,IAAI,CAACzB,IAAI,CAACklB,MAAN,IAAgB,CAAC,KAAKnkB,MAAL,CAAY6vE,WAA7B,IACAipB,QADA,IACY,CAACA,QAAQ,CAAC/rE,SAAT,CAAmBM,QAAnB,CAA4B,YAA5B,CADjB,EAC4D;MACxD,KAAKoqE,aAAL,CAAmBj4F,IAAnB,CAAwB,OAAxB;IACH;;IACD,IAAIP,IAAI,CAACklB,MAAT,EAAiB;MACb,KAAK+zE,UAAL,GAAkB,KAAKV,cAAL,GAAsB,IAAxC;MACA;IACH;;IACD,KAAKI,WAAL,CAAiB5lE,QAAjB;IACA,IAAI+mE,SAAS,GAAG,KAAhB;;IACA,IAAI/iE,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0By6C,SAA1B,KACA9xC,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0B06C,SAA1B,CADA,IACwC/xC,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0B26C,YAA1B,CAD5C,EACqF;MACjF+wB,SAAS,GAAG,IAAZ;IACH;;IACD,KAAK1sB,YAAL,GAAoB0sB,SAAS,GAAG,KAAK1sB,YAAR,GAAuB,KAAK2sB,eAAL,EAApD;IACA,IAAI90E,SAAS,GAAG;MACZ4vD,WAAW,EAAE,CAAC,KAAKzH,YAAN,CADD;MAEZ3rE,OAAO,EAAEzB,IAAI,CAACyB,OAFF;MAGZs1B,MAAM,EAAEA,MAHI;MAIZyzB,KAAK,EAAEsvC,SAAS,GAAG95F,IAAI,CAACwqD,KAAR,GAAgB,KAAKmuC,WAAL,CAAiBnuC,KAJrC;MAKZwvC,UAAU,EAAE,KAAKrB,WALL;MAMZzzE,MAAM,EAAE,KANI;MAOZ+0E,QAAQ,EAAE,KAAKA,QAPH;MAQZH,SAAS,EAAEA;IARC,CAAhB;IAUA,KAAKxB,YAAL,GAAoBrzE,SAAS,CAACulC,KAA9B;IACA,KAAKzpD,MAAL,CAAY+rB,OAAZ,CAAoB,UAApB,EAAgC7H,SAAhC,EAA2C,UAAUi1E,YAAV,EAAwB;MAC/D,IAAI,CAACJ,SAAL,EAAgB;QACZ/5F,KAAK,CAAC44F,WAAN,CAAkB5lE,QAAlB;;QACAhzB,KAAK,CAAC44F,WAAN,CAAkBnuC,KAAlB,GAA0B0vC,YAAY,CAAC1vC,KAAvC;;QACAzqD,KAAK,CAAC44F,WAAN,CAAkB5lE,QAAlB;MACH;;MACDhzB,KAAK,CAACo6F,WAAN,CAAkBp6F,KAAK,CAACy4F,aAAxB,EAAuC,KAAvC,EAA8C,IAA9C;;MACAx4F,IAAI,CAACklB,MAAL,GAAcg1E,YAAY,CAACh1E,MAA3B;;MACA,IAAIg1E,YAAY,CAACh1E,MAAjB,EAAyB;QACrBnlB,KAAK,CAACk5F,UAAN,GAAmBl5F,KAAK,CAACo5F,iBAAN,GAA0Bp5F,KAAK,CAACw4F,cAAN,GAAuB,IAApE;MACH;IACJ,CAXD;EAYH,CAlID;;EAmIAF,cAAc,CAAC19F,SAAf,CAAyB4+F,kBAAzB,GAA8C,YAAY;IACtD,KAAKx4F,MAAL,CAAYkwE,YAAZ,GAA2BvgD,6DAAO,CAAC,KAAKuoE,UAAN,EAAkB,MAAM,KAAKl4F,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+B+6D,OAAjD,CAAP,GACvB,gBADuB,GACJl0C,6DAAO,CAAC,KAAKuoE,UAAN,EAAkB,MAAM,KAAKl4F,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+Bg7D,OAAjD,CAAP,GACnB,aADmB,GACHn0C,6DAAO,CAAC,KAAKuoE,UAAN,EAAkB,MAAM,KAAKl4F,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+Bi7D,YAAjD,CAAP,GAChB,gBADgB,GACG,KAAK/jE,MAAL,CAAYkwE,YAHnC;EAIH,CALD;EAMA;;EACA;AACJ;AACA;AACA;AACA;AACA;;;EACIonB,cAAc,CAAC19F,SAAf,CAAyB2+F,aAAzB,GAAyC,UAAUviE,MAAV,EAAkB;IACvD,OAAOA,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0Bw6C,SAA1B,IACH,UADG,GACU7xC,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0B46C,SAA1B,IACb,UADa,GACAjyC,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0B86C,SAA1B,IACb,WADa,GACCnyC,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0Bq4C,WAA1B,IACd,WADc,GACA,EAJlB;EAKH,CAND;;EAOA4xB,cAAc,CAAC19F,SAAf,CAAyBy/F,YAAzB,GAAwC,UAAU33C,IAAV,EAAgB;IACpD,IAAI43C,MAAM,GAAG,KAAKtB,SAAL,CAAet2C,IAAf,CAAb;;IACA,KAAK,IAAIhmD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK67F,YAAL,CAAkBx8F,MAAtC,EAA8CW,CAAC,EAA/C,EAAmD;MAC/C,IAAK,KAAK67F,YAAL,CAAkB77F,CAAlB,EAAqBoN,EAArB,KAA4BwwF,MAA7B,IAAyC,KAAK/B,YAAL,CAAkB77F,CAAlB,EAAqBoN,EAArB,KAA4B44C,IAAzE,EAAgF;QAC5E,OAAOhmD,CAAP;MACH;IACJ;;IACD,OAAO,CAAC,CAAR;EACH,CARD;;EASA47F,cAAc,CAAC19F,SAAf,CAAyB2/F,WAAzB,GAAuC,UAAU9vC,KAAV,EAAiB;IACpD,IAAIA,KAAK,CAAC1uD,MAAN,KAAiB,CAArB,EAAwB;MACpB,KAAK08F,aAAL,GAAqB,KAAKA,aAAL,CAAmBtqC,MAAnB,CAA0B1D,KAA1B,CAArB;IACH;EACJ,CAJD;;EAKA6tC,cAAc,CAAC19F,SAAf,CAAyBw/F,WAAzB,GAAuC,UAAU3vC,KAAV,EAAiB+vC,MAAjB,EAAyBC,UAAzB,EAAqC;IACxE,KAAK,IAAI/9F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+tD,KAAK,CAAC1uD,MAA1B,EAAkCW,CAAC,EAAnC,EAAuC;MACnC,IAAI,KAAKg+F,cAAL,CAAoBjwC,KAAK,CAAC/tD,CAAD,CAAzB,MAAkC,CAAtC,EAAyC;QACrC,KAAKk8F,WAAL,CAAiBwB,WAAjB,CAA6B,CAAC,KAAKpB,SAAL,CAAevuC,KAAK,CAAC/tD,CAAD,CAApB,CAAD,CAA7B,EAAyD89F,MAAzD,EAAiEC,UAAjE;MACH,CAFD,MAGK,IAAI,KAAKC,cAAL,CAAoBjwC,KAAK,CAAC/tD,CAAD,CAAzB,MAAkC,CAAtC,EAAyC;QAC1C,KAAKk8F,WAAL,CAAiBwB,WAAjB,CAA6B,CAAC3vC,KAAK,CAAC/tD,CAAD,CAAN,CAA7B,EAAyC89F,MAAzC,EAAiDC,UAAjD;MACH;IACJ;EACJ,CATD;;EAUAnC,cAAc,CAAC19F,SAAf,CAAyBi/F,aAAzB,GAAyC,UAAUc,MAAV,EAAkB;IACvD,KAAKT,QAAL,GAAgB,QAAhB;IACA,KAAKtB,WAAL,CAAiBnuC,KAAjB,GAAyB,KAAKmwC,WAAL,CAAiB,KAAK55F,MAAL,CAAY65F,mBAAZ,CAAgC1J,MAAhC,CAAuC7rF,GAAvC,CAA2C,UAAUo9C,IAAV,EAAgB;MAAE,OAAOA,IAAI,CAACxL,IAAL,EAAP;IAAqB,CAAlF,CAAjB,CAAzB;IACA,KAAK0hD,WAAL,CAAiB5lE,QAAjB;;IACA,IAAI2nE,MAAJ,EAAY;MACR,IAAIG,gBAAgB,GAAG9qE,4DAAM,CAAC,gBAAgB,KAAKhvB,MAAL,CAAYy4E,oBAAZ,CAAiCC,OAAjC,CAAyC/I,aAAzC,CAAuD,CAAvD,CAAhB,GAA4E,IAA7E,EAAmF,KAAK3vE,MAAL,CAAYy4E,oBAAZ,CAAiCC,OAAjC,CAAyCh4E,OAA5H,CAA7B;;MACA,IAAI,KAAKV,MAAL,CAAY4uE,SAAZ,CAAsB,KAAK5uE,MAAL,CAAY4uE,SAAZ,CAAsB7zE,MAAtB,GAA+B,CAArD,MAA4D++F,gBAAgB,CAAC/2F,aAAjB,CAA+B,cAA/B,EAA+CpB,SAA3G,IAAwH,KAAK3B,MAAL,CAAYkwE,YAAZ,KAA6B,gBAAzJ,EAA2K;QACvK,KAAKunB,aAAL,CAAmBj4F,IAAnB,CAAwB,MAAxB;MACH;IACJ,CALD,MAMK,IAAI,KAAKQ,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAArC,IAA0C,KAAKiF,MAAL,CAAYkwE,YAAZ,KAA6B,gBAA3E,EAA6F;MAC9F,KAAKunB,aAAL,CAAmBj4F,IAAnB,CAAwB,QAAxB,EAAkC,OAAlC;IACH;EACJ,CAbD;;EAcA83F,cAAc,CAAC19F,SAAf,CAAyBg/F,WAAzB,GAAuC,YAAY;IAC/C,KAAKM,QAAL,GAAgB,MAAhB;IACA,KAAKtB,WAAL,CAAiBnuC,KAAjB,GAAyB,KAAKmwC,WAAL,CAAiB,KAAK55F,MAAL,CAAY65F,mBAAZ,CAAgC/mB,IAAhC,CAAqCxuE,GAArC,CAAyC,UAAUo9C,IAAV,EAAgB;MAAE,OAAOA,IAAI,CAACxL,IAAL,EAAP;IAAqB,CAAhF,CAAjB,CAAzB;IACA,KAAK0hD,WAAL,CAAiB5lE,QAAjB;;IACA,IAAI,KAAKhyB,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAzC,EAA4C;MACxC,KAAK08F,aAAL,CAAmBj4F,IAAnB,CAAwB,QAAxB;IACH;EACJ,CAPD;;EAQA83F,cAAc,CAAC19F,SAAf,CAAyB6+F,aAAzB,GAAyC,UAAUziE,MAAV,EAAkB;IACvD,KAAKkjE,QAAL,GAAgB,QAAhB;IACA,KAAKtB,WAAL,CAAiBnuC,KAAjB,GAAyB,KAAKmwC,WAAL,CAAiB,KAAK55F,MAAL,CAAY65F,mBAAZ,CAAgCE,MAAhC,CAAuCz1F,GAAvC,CAA2C,UAAUo9C,IAAV,EAAgB;MAAE,OAAOA,IAAI,CAACxL,IAAL,EAAP;IAAqB,CAAlF,CAAjB,CAAzB;IACA,KAAK0hD,WAAL,CAAiB5lE,QAAjB;;IACA,IAAI,CAAC,KAAKhyB,MAAL,CAAYuuF,mBAAb,IAAsC,KAAKvuF,MAAL,CAAYkyE,IAAZ,KAAqB,YAArB,IACrCviD,6DAAO,CAACqG,MAAD,EAAS,MAAM,KAAKh2B,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+Bi7D,YAAxC,CAAP,CAA6DxwC,sBAA7D,CAAoFozC,KAApF,EAA2F5rE,MAA3F,KAAsG,CADlE,IAEjC,KAAKiF,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,IACCviD,6DAAO,CAACqG,MAAD,EAAS,MAAM,KAAKh2B,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+Bg7D,OAAxC,CAAP,CAAwDvwC,sBAAxD,CAA+EozC,KAA/E,EAAsF5rE,MAAtF,KAAiG,CAH1G,EAGgH;MAC5G,KAAK08F,aAAL,CAAmBj4F,IAAnB,CAAwB,WAAxB;IACH;;IACD,IAAI,KAAKQ,MAAL,CAAY2vE,aAAZ,CAA0B50E,MAA1B,KAAqC,CAAzC,EAA4C;MACxC,KAAK08F,aAAL,CAAmBj4F,IAAnB,CAAwB,OAAxB;IACH;;IACD,KAAKo4F,WAAL,CAAiB5lE,QAAjB;EACH,CAdD;;EAeAslE,cAAc,CAAC19F,SAAf,CAAyB8/F,cAAzB,GAA0C,UAAUM,OAAV,EAAmB;IACzD,IAAI,CAAC79F,uEAAiB,CAAC6yB,4DAAM,CAAC,MAAM,KAAKgpE,SAAL,CAAegC,OAAf,CAAP,EAAgC,KAAKxC,cAArC,CAAP,CAAtB,EAAoF;MAChF,OAAO,CAAP;IACH,CAFD,MAGK,IAAI,CAACr7F,uEAAiB,CAAC6yB,4DAAM,CAAC,MAAMgrE,OAAP,EAAgB,KAAKxC,cAArB,CAAP,CAAtB,EAAoE;MACrE,OAAO,CAAP;IACH,CAFI,MAGA;MACD,OAAO,CAAC,CAAR;IACH;EACJ,CAVD,CAzQqD,CAoRrD;;;EACAF,cAAc,CAAC19F,SAAf,CAAyBo/F,eAAzB,GAA2C,YAAY;IACnD,IAAI,KAAKE,QAAL,KAAkB,QAAtB,EAAgC;MAC5B,OAAO9nB,aAAa,CAAC,KAAKpxE,MAAN,CAApB;IACH,CAFD,MAGK;MACD;MACA,IAAIf,IAAI,GAAG;QAAE+2B,MAAM,EAAE,KAAKkiE;MAAf,CAAX;MACA,KAAKl4F,MAAL,CAAYgb,MAAZ,CAAmBqxD,YAAnB,EAAiCptE,IAAjC;MACA,OAAO,KAAKe,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAAP;IACH;EACJ,CAVD;EAWA;;;EACAmmB,cAAc,CAAC19F,SAAf,CAAyB65D,QAAzB,GAAoC,UAAUx0D,IAAV,EAAgB;IAChD,IAAID,KAAK,GAAG,IAAZ;;IACA,IAAI7C,uEAAiB,CAAC8C,IAAI,CAACyiD,IAAN,CAAjB,IAAgC,CAACziD,IAAI,CAACyiD,IAAL,CAAU54C,EAA/C,EAAmD;MAC/C;IACH;;IACD,IAAI+/E,QAAQ,GAAG5pF,IAAI,CAACyiD,IAAL,CAAU54C,EAAV,CAAawE,MAAb,CAAoB,CAAC,KAAKtN,MAAL,CAAYU,OAAZ,CAAoBoI,EAApB,GAAyB,MAA1B,EAAkC/N,MAAtD,CAAf,CALgD,CAMhD;;IACA,IAAIogF,OAAJ;;IACA,IAAI0N,QAAQ,KAAK,SAAb,IAA0BA,QAAQ,KAAK,WAAvC,IAAsDA,QAAQ,KAAK,QAAvE,EAAiF;MAC7E1N,OAAO,GAAG,CAAC/J,aAAa,CAAC,KAAKpxE,MAAN,CAAd,CAAV;MACA,KAAKA,MAAL,CAAYmxE,QAAZ,GAAuBgK,OAAvB;IACH,CAHD,MAIK;MACD,KAAKn7E,MAAL,CAAYgb,MAAZ,CAAmB2xD,YAAnB,EAAiC,EAAjC;;MACA,IAAI,KAAK3sE,MAAL,CAAYkwE,YAAZ,KAA6B,gBAA7B,IAAiD2Y,QAAQ,KAAK,MAAlE,EAA0E;QACtE1N,OAAO,GAAG,CAAC,KAAK9O,YAAN,CAAV;MACH,CAFD,MAGK;QACD8O,OAAO,GAAG,KAAKn7E,MAAL,CAAYmxE,QAAtB;MACH;IACJ;;IACD,IAAIjtD,SAAS,GAAG;MACZC,MAAM,EAAE,KADI;MAEZzjB,OAAO,EAAEzB,IAAI,CAACyB,OAFF;MAGZozE,WAAW,EAAEqH,OAHD;MAIZz5B,IAAI,EAAEziD,IAAI,CAACyiD;IAJC,CAAhB;IAMA,KAAK1hD,MAAL,CAAY+rB,OAAZ,CAAoB,WAApB,EAAiC7H,SAAjC,EAA4C,UAAU+1E,aAAV,EAAyB;MACjE,IAAIC,MAAJ;;MACA,IAAI,CAACD,aAAa,CAAC91E,MAAnB,EAA2B;QACvB;QACA,QAAQ0kE,QAAR;UACI,KAAK,KAAL;YACIjW,QAAQ,CAAC5zE,KAAK,CAACgB,MAAP,CAAR;YACA;;UACJ,KAAK,MAAL;YACI0yE,SAAS,CAAC1zE,KAAK,CAACgB,MAAP,CAAT;YACA;;UACJ,KAAK,OAAL;YACI,IAAIhB,KAAK,CAACk6F,QAAN,KAAmB,QAAvB,EAAiC;cAC7B,IAAKl6F,KAAK,CAACgB,MAAN,CAAakwE,YAAb,KAA8B,gBAA/B,IAAqDlxE,KAAK,CAACgB,MAAN,CAAakwE,YAAb,KAA8B,aAAvF,EAAuG;gBACnGlxE,KAAK,CAACgB,MAAN,CAAa42E,UAAb,GAA0B5C,WAAW,CAACh1E,KAAK,CAACgB,MAAP,EAAehB,KAAK,CAACqtE,YAArB,EAAmCrtE,KAAK,CAACgB,MAAN,CAAauuE,IAAhD,CAArC;cACH,CAFD,MAGK;gBACDvvE,KAAK,CAACgB,MAAN,CAAa42E,UAAb,GAA0B,EAA1B;cACH;YACJ,CAPD,MAQK;cACD53E,KAAK,CAACgB,MAAN,CAAa42E,UAAb,GAA0B,EAA1B;YACH;;YACDF,YAAY,CAAC13E,KAAK,CAACgB,MAAP,CAAZ;YACA;;UACJ,KAAK,QAAL;YACI,KAAK,IAAImI,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGgzE,OAAO,CAACpgF,MAA5B,EAAoCoN,CAAC,EAArC,EAAyC;cACrC,IAAI,CAACmyE,aAAa,CAACa,OAAO,CAAChzE,CAAD,CAAR,CAAlB,EAAgC;gBAC5BqqE,kBAAkB,CAACxzE,KAAK,CAACgB,MAAP,EAAem7E,OAAO,CAAChzE,CAAD,CAAtB,EAA2B6lE,cAA3B,CAAlB;gBACA;cACH;YACJ;;YACDkJ,YAAY,CAACl4E,KAAK,CAACgB,MAAP,EAAe,QAAf,CAAZ;YACA;;UACJ;;UACA,KAAK,UAAL;YACI,KAAK,IAAItE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGy/E,OAAO,CAACpgF,MAA5B,EAAoCW,CAAC,EAArC,EAAyC;cACrC,IAAI,CAAC8+E,iBAAiB,CAACW,OAAO,CAACz/E,CAAD,CAAR,CAAtB,EAAoC;gBAChC82E,kBAAkB,CAACxzE,KAAK,CAACgB,MAAP,EAAem7E,OAAO,CAACz/E,CAAD,CAAtB,EAA2B0yE,kBAA3B,CAAlB;gBACA;cACH;YACJ;;YACD,IAAIpvE,KAAK,CAACgB,MAAN,CAAakwE,YAAb,KAA8B,gBAAlC,EAAoD;cAChDlxE,KAAK,CAACgB,MAAN,CAAagb,MAAb,CAAoBuyD,YAApB,EAAkC,EAAlC;YACH,CAFD,MAGK,IAAIvuE,KAAK,CAACgB,MAAN,CAAa4wE,aAAb,CAA2B71E,MAA3B,GAAoC,CAAxC,EAA2C;cAC5C0/E,QAAQ,CAACz7E,KAAK,CAACgB,MAAP,EAAehB,KAAK,CAACgB,MAAN,CAAauuE,IAA5B,EAAkCvvE,KAAK,CAACgB,MAAN,CAAa4wE,aAA/C,CAAR;YACH;;YACD;;UACJ,KAAK,QAAL;YACI,IAAI,CAAC0J,aAAa,CAACa,OAAO,CAAC,CAAD,CAAR,CAAlB,EAAgC;cAC5B3I,kBAAkB,CAACxzE,KAAK,CAACgB,MAAP,EAAem7E,OAAO,CAAC,CAAD,CAAtB,EAA2BnN,cAA3B,CAAlB;YACH,CAFD,MAGK;cACDhvE,KAAK,CAACgB,MAAN,CAAagb,MAAb,CAAoBsxD,UAApB,EAAgC,EAAhC;;cACA4K,YAAY,CAACl4E,KAAK,CAACgB,MAAP,EAAe,QAAf,CAAZ;YACH;;YACD;;UACJ,KAAK,WAAL;YACI;YACAhB,KAAK,CAACgB,MAAN,CAAagb,MAAb,CAAoB8wD,aAApB,EAAmC,EAAnC;;YACA;;UACJ,KAAK,SAAL;YACI3mC,OAAO,CAACnmC,KAAK,CAACgB,MAAP,CAAP;YACA;;UACJ,KAAK,MAAL;YACI,IAAIhB,KAAK,CAACgB,MAAN,CAAamoF,WAAb,IAA4BnpF,KAAK,CAACgB,MAAN,CAAakwE,YAAb,KAA8B,gBAA9D,EAAgF;cAC5ElxE,KAAK,CAACgB,MAAN,CAAagb,MAAb,CAAoB2wD,QAApB,EAA8B;gBAAE31C,MAAM,EAAEh3B,KAAK,CAACgB,MAAN,CAAamoF;cAAvB,CAA9B;YACH,CAFD,MAGK,IAAInpF,KAAK,CAACgB,MAAN,CAAakwE,YAAb,KAA8B,gBAAlC,EAAoD;cACrD,IAAIlxE,KAAK,CAACgB,MAAN,CAAamoF,WAAjB,EAA8B;gBAC1BnpF,KAAK,CAACgB,MAAN,CAAagb,MAAb,CAAoB2wD,QAApB,EAA8B;kBAAE31C,MAAM,EAAEh3B,KAAK,CAACgB,MAAN,CAAamoF;gBAAvB,CAA9B;cACH;;cACDnpF,KAAK,CAACgB,MAAN,CAAay4E,oBAAb,CAAkC0hB,0BAAlC,CAA6DxqE,6DAAO,CAAC3wB,KAAK,CAACo5F,iBAAP,EAA0B,IAA1B,CAApE;YACH;;YACD;;UACJ,KAAK,SAAL;YACIp5F,KAAK,CAACgB,MAAN,CAAagb,MAAb,CAAoBoxD,WAApB,EAAiC,EAAjC;;YACA8tB,MAAM,GAAGl7F,KAAK,CAACgB,MAAN,CAAa4wE,aAAtB;;YACA,IAAI5xE,KAAK,CAACgB,MAAN,CAAakwE,YAAb,KAA8B,gBAAlC,EAAoD;cAChDgqB,MAAM,GAAG,EAAT;YACH;;YACDxd,UAAU,CAAC19E,KAAK,CAACgB,MAAP,EAAek6F,MAAf,EAAuBl7F,KAAK,CAACgB,MAAN,CAAauuE,IAApC,EAA0C,SAA1C,CAAV;YACA;;UACJ,KAAK,WAAL;YACI2M,eAAe,CAACl8E,KAAK,CAACgB,MAAP,CAAf;YACA;;UACJ,KAAK,QAAL;YACIo7E,UAAU,CAACp8E,KAAK,CAACgB,MAAP,CAAV;YACA;;UACJ;;UACA,KAAK,MAAL;UACA;UACA;;UACA,KAAK,MAAL;UACA;UACA;;UACA,KAAK,MAAL;UACA;UACA;;UACA,KAAK,WAAL;UACA;UACA;;UACA,KAAK,YAAL;YACI;YACA61E,kBAAkB,CAAC72E,KAAK,CAACgB,MAAP,EAAef,IAAf,CAAlB;YACA;;UACJ;;UACA,KAAK,MAAL;YACI;YACA42E,kBAAkB,CAAC72E,KAAK,CAACgB,MAAP,EAAef,IAAf,CAAlB;YACA;;UACJ;UACA;;UACA,KAAK,gBAAL;YACIgzE,YAAY,CAACjzE,KAAK,CAACgB,MAAP,EAAe,YAAf,CAAZ;YACA;;UACJ;UACA;;UACA,KAAK,aAAL;YACIiyE,YAAY,CAACjzE,KAAK,CAACgB,MAAP,EAAe,SAAf,CAAZ;YACA;QArHR;MAuHH;IACJ,CA5HD;EA6HH,CAxJD;;EAyJAs3F,cAAc,CAAC19F,SAAf,CAAyB24B,iBAAzB,GAA6C,UAAUhyB,CAAV,EAAa;IACtD,IAAIA,CAAC,CAAC89B,MAAF,KAAa,KAAKvL,aAAL,EAAb,IAAqCvyB,CAAC,CAAC89B,MAAF,KAAa,QAAtD,EAAgE;MAC5D;MACA;IACH;;IACD,KAAK,IAAInhC,EAAE,GAAG,CAAT,EAAY8F,EAAE,GAAGhG,MAAM,CAACjB,IAAP,CAAYwE,CAAC,CAAC46B,OAAd,CAAtB,EAA8Cj+B,EAAE,GAAG8F,EAAE,CAACjI,MAAtD,EAA8DmC,EAAE,EAAhE,EAAoE;MAChE,IAAI6G,IAAI,GAAGf,EAAE,CAAC9F,EAAD,CAAb;;MACA,QAAQ6G,IAAR;QACI,KAAK,UAAL;UACI,KAAK6zF,WAAL,CAAiBhiB,QAAjB,GAA4BF,WAAW,CAAC,KAAK11E,MAAN,EAAcklE,UAAd,CAAvC;UACA;MAHR;IAKH;EACJ,CAbD;;EAcAoyB,cAAc,CAAC19F,SAAf,CAAyBoB,gBAAzB,GAA4C,YAAY;IACpD,KAAKgF,MAAL,CAAYwa,EAAZ,CAAe4B,OAAf,EAAwB,KAAKA,OAA7B,EAAsC,IAAtC;IACA,KAAKpc,MAAL,CAAYwa,EAAZ,CAAegwD,YAAf,EAA6B,KAAKj4C,iBAAlC,EAAqD,IAArD;IACA,KAAKk8D,cAAL,GAAsB,IAAIx5C,gEAAJ,CAAmB,KAAK2iD,WAAL,CAAiBl3F,OAApC,EAA6C;MAC/Dy1C,SAAS,EAAE,KAAKu4C,gBAAL,CAAsB70F,IAAtB,CAA2B,IAA3B,CADoD;MAE/D87C,UAAU,EAAE,KAAKA,UAF8C;MAG/DzqB,SAAS,EAAE;IAHoD,CAA7C,CAAtB;EAKH,CARD;;EASAosE,cAAc,CAAC19F,SAAf,CAAyBsB,mBAAzB,GAA+C,YAAY;IACvD,KAAK8E,MAAL,CAAY6a,GAAZ,CAAgBuB,OAAhB,EAAyB,KAAKA,OAA9B;IACA,KAAKpc,MAAL,CAAY6a,GAAZ,CAAgB2vD,YAAhB,EAA8B,KAAKj4C,iBAAnC;IACA,KAAKk8D,cAAL,CAAoBryE,OAApB;EACH,CAJD;;EAKAk7E,cAAc,CAAC19F,SAAf,CAAyB80F,gBAAzB,GAA4C,UAAUnuF,CAAV,EAAa;IACrD,QAAQA,CAAC,CAACu1B,MAAV;MACI,KAAK,SAAL;MACA,KAAK,WAAL;QACIv1B,CAAC,CAAC6qC,cAAF;IAHR;EAKH,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;;;EACIksD,cAAc,CAAC19F,SAAf,CAAyBk5B,aAAzB,GAAyC,YAAY;IACjD,OAAO,aAAP;EACH,CAFD;;EAGAwkE,cAAc,CAAC19F,SAAf,CAAyBwiB,OAAzB,GAAmC,YAAY;IAC3C,IAAI,KAAKpc,MAAL,CAAY6xB,WAAhB,EAA6B;MACzB;IACH;;IACD,KAAK32B,mBAAL;IACA,KAAK08F,WAAL,CAAiBx7E,OAAjB;EACH,CAND;EAOA;;;EACAk7E,cAAc,CAAC19F,SAAf,CAAyBggG,WAAzB,GAAuC,UAAU9+F,IAAV,EAAgB;IACnD,IAAI2uD,KAAK,GAAG,EAAZ;;IACA,KAAK,IAAI/tD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,IAAI,CAACC,MAAzB,EAAiCW,CAAC,EAAlC,EAAsC;MAClC,IAAIgmD,IAAI,GAAG,KAAK,CAAhB;MACA,IAAI43C,MAAM,GAAG,KAAKtB,SAAL,CAAel9F,IAAI,CAACY,CAAD,CAAnB,CAAb;MACA,IAAImtF,QAAQ,GAAG9T,aAAa,CAAC,KAAK/0E,MAAN,EAAclF,IAAI,CAACY,CAAD,CAAlB,CAA5B;;MACA,QAAQZ,IAAI,CAACY,CAAD,CAAZ;QACI,KAAK,GAAL;UACIgmD,IAAI,GAAG;YAAE04C,SAAS,EAAE;UAAb,CAAP;UACA;;QACJ,KAAK,MAAL;UACI14C,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8BI,OAAO,EAAE7gB;UAAvC,CAAP;UACA;;QACJ,KAAK,QAAL;UACI1mB,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8BI,OAAO,EAAE5gB;UAAvC,CAAP;UACA;;QACJ,KAAK,KAAL;UACI3mB,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8BI,OAAO,EAAE3gB;UAAvC,CAAP;UACA;;QACJ,KAAK,MAAL;UACI5mB,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8BI,OAAO,EAAE1gB;UAAvC,CAAP;UACA;;QACJ,KAAK,OAAL;UACI7mB,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8BI,OAAO,EAAEzgB;UAAvC,CAAP;UACA;;QACJ,KAAK,QAAL;UACI9mB,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8BI,OAAO,EAAExgB;UAAvC,CAAP;UACA;;QACJ,KAAK,QAAL;UACI/mB,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8BI,OAAO,EAAEvgB;UAAvC,CAAP;UACA;;QACJ,KAAK,WAAL;UACIhnB,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8BI,OAAO,EAAEtgB;UAAvC,CAAP;UACA;;QACJ,KAAK,SAAL;UACIjnB,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8BI,OAAO,EAAErgB;UAAvC,CAAP;UACA;;QACJ,KAAK,QAAL;UACIlnB,IAAI,GAAG;YACH54C,EAAE,EAAEwwF,MADD;YACSzmF,IAAI,EAAEg2E,QADf;YACyBI,OAAO,EAAEpgB,YADlC;YAEHpf,KAAK,EAAE,CACH;cACI3gD,EAAE,EAAE,KAAKkvF,SAAL,CAAe,MAAf,CADR;cACgCnlF,IAAI,EAAEkiE,aAAa,CAAC,KAAK/0E,MAAN,EAAc,MAAd,CADnD;cAEIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYmlD,MAAZ,KAAuB,MAAvB,GAAgC6gB,aAAhC,GAAgD;YAF7D,CADG,EAKH;cACIl9D,EAAE,EAAE,KAAKkvF,SAAL,CAAe,MAAf,CADR;cACgCnlF,IAAI,EAAEkiE,aAAa,CAAC,KAAK/0E,MAAN,EAAc,MAAd,CADnD;cAEIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYmlD,MAAZ,KAAuB,MAAvB,GAAgC6gB,aAAhC,GAAgD;YAF7D,CALG,EASH;cACIl9D,EAAE,EAAE,KAAKkvF,SAAL,CAAe,MAAf,CADR;cACgCnlF,IAAI,EAAEkiE,aAAa,CAAC,KAAK/0E,MAAN,EAAc,cAAd,CADnD;cAEIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYmlD,MAAZ,KAAuB,cAAvB,GAAwC6gB,aAAxC,GAAwD;YAFrE,CATG,EAaH;cAAEo0B,SAAS,EAAE;YAAb,CAbG,EAcH;cACItxF,EAAE,EAAE,KAAKkvF,SAAL,CAAe,WAAf,CADR;cACqCnlF,IAAI,EAAEkiE,aAAa,CAAC,KAAK/0E,MAAN,EAAc,WAAd,CADxD;cAEIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYo0E,SAAZ,KAA0B,WAA1B,GAAwCrO,cAAxC,GAAyD;YAFtE,CAdG,EAkBH;cACIj9D,EAAE,EAAE,KAAKkvF,SAAL,CAAe,YAAf,CADR;cACsCnlF,IAAI,EAAEkiE,aAAa,CAAC,KAAK/0E,MAAN,EAAc,YAAd,CADzD;cAEIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYo0E,SAAZ,KAA0B,YAA1B,GAAyCrO,cAAzC,GAA0D;YAFvE,CAlBG,EAsBH;cACIj9D,EAAE,EAAE,KAAKkvF,SAAL,CAAe,MAAf,CADR;cACgCnlF,IAAI,EAAEkiE,aAAa,CAAC,KAAK/0E,MAAN,EAAc,MAAd,CADnD;cAEIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYo0E,SAAZ,KAA0B,MAA1B,GAAmCrO,cAAnC,GAAoD;YAFjE,CAtBG;UAFJ,CAAP;UA8BA;;QACJ;;QACA,KAAK,MAAL;UACIrkB,IAAI,GAAG;YACH54C,EAAE,EAAEwwF,MADD;YACSzmF,IAAI,EAAEg2E,QADf;YACyBI,OAAO,EAAE,KAAKjpF,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,GAAiChJ,SAAjC,GAA6CC,UAD/E;YAEH1f,KAAK,EAAE,CACH;cACI3gD,EAAE,EAAE,KAAKkvF,SAAL,CAAe,gBAAf,CADR;cAC0CnlF,IAAI,EAAEkiE,aAAa,CAAC,KAAK/0E,MAAN,EAAc,iBAAd,CAD7D;cAEIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,GAAiC,IAAjC,GAAwCnM;YAFrD,CADG,EAKH;cACIj9D,EAAE,EAAE,KAAKkvF,SAAL,CAAe,aAAf,CADR;cACuCnlF,IAAI,EAAEkiE,aAAa,CAAC,KAAK/0E,MAAN,EAAc,cAAd,CAD1D;cAEIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,GAAiCnM,cAAjC,GAAkD;YAF/D,CALG;UAFJ,CAAP;UAaA;;QACJ,KAAK,SAAL;UACIrkB,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8BI,OAAO,EAAEngB;UAAvC,CAAP;UACA;;QACJ,KAAK,WAAL;UACIpnB,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8BI,OAAO,EAAElgB;UAAvC,CAAP;UACA;;QACJ;;QACA,KAAK,UAAL;UACIrnB,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8BI,OAAO,EAAEjgB;UAAvC,CAAP;UACA;;QACJ;;QACA;UACItnB,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E;UAApB,CAAP;UACA;MA5FR;;MA8FAp/B,KAAK,CAACjqD,IAAN,CAAWkiD,IAAX;IACH;;IACD,OAAO+H,KAAP;EACH,CAvGD;;EAwGA6tC,cAAc,CAAC19F,SAAf,CAAyBo+F,SAAzB,GAAqC,UAAUlvF,EAAV,EAAc;IAC/C,OAAO,KAAK9I,MAAL,CAAYU,OAAZ,CAAoBoI,EAApB,GAAyB,MAAzB,GAAkCA,EAAE,CAAC8P,WAAH,EAAzC;EACH,CAFD;;EAGA,OAAO0+E,cAAP;AACH,CA1lB4C,EAA7C;AA4lBA;AACA;AACA;AACA;;;AACA,IAAI+C,aAAa,GAAG;EAChB,aAAa,YADG;EAEhB,UAAU,QAFM;EAGhB,UAAU,QAHM;EAIhB,UAAU,QAJM;EAKhB,YAAY,UALI;EAMhB,OAAO,KANS;EAOhB,QAAQ,MAPQ;EAQhB,SAAS,OARO;EAShB,UAAU,SATM;EAUhB,WAAW,SAVK;EAWhB,kBAAkB,eAXF;EAYhB,mBAAmB,gBAZH;EAahB,QAAQ,MAbQ;EAchB,WAAW,SAdK;EAehB,aAAa,YAfG;EAgBhB,QAAQ,MAhBQ;EAiBhB,qBAAqB,YAjBL;EAkBhB,kBAAkB,QAlBF;EAmBhB,kBAAkB,QAnBF;EAoBhB,kBAAkB,QApBF;EAqBhB,oBAAoB,UArBJ;EAsBhB,eAAe,KAtBC;EAuBhB,gBAAgB,MAvBA;EAwBhB,iBAAiB,OAxBD;EAyBhB,kBAAkB,SAzBF;EA0BhB,mBAAmB,SA1BH;EA2BhB,qBAAqB,iBA3BL;EA4BhB,gBAAgB,MA5BA;EA6BhB,mBAAmB,SA7BH;EA8BhB,qBAAqB,YA9BL;EA+BhB,QAAQ,MA/BQ;EAgChB,QAAQ,MAhCQ;EAiChB,gBAAgB,UAjCA;EAkChB,eAAe,cAlCC;EAmChB,QAAQ,MAnCQ;EAoChB,YAAY,UApCI;EAqChB,WAAW,SArCK;EAsChB,YAAY,UAtCI;EAuChB,QAAQ,MAvCQ;EAwChB,cAAc,YAxCE;EAyChB,aAAa,WAzCG;EA0ChB,cAAc,YA1CE;EA2ChB,QAAQ,MA3CQ;EA4ChB,mBAAmB,aA5CH;EA6ChB,gBAAgB,SA7CA;EA8ChB,UAAU,QA9CM;EA+ChB,aAAa,IA/CG;EAgDhB,iBAAiB,QAhDD;EAiDhB,cAAc,KAjDE;EAkDhB,aAAa,IAlDG;EAmDhB,iBAAiB,QAnDD;EAoDhB,eAAe,MApDC;EAqDhB,oBAAoB,QArDJ;EAsDhB,qBAAqB,wBAtDL;EAuDhB,iBAAiB,QAvDD;EAwDhB,kBAAkB,qBAxDF;EAyDhB,8BAA8B,qBAzDd;EA0DhB,+BAA+B,0EAC3B,qCA3DY;EA4DhB,iBAAiB,aA5DD;EA6DhB,kBAAkB,4CA7DF;EA8DhB,wBAAwB,eA9DR;EA+DhB,yBAAyB,8CA/DT;EAgEhB,0BAA0B,uBAhEV;EAiEhB,2BAA2B,kDAjEX;EAkEhB,oBAAoB,oBAlEJ;EAmEhB,qBAAqB,sDAnEL;EAoEhB,iBAAiB,cApED;EAqEhB,SAAS,OArEO;EAsEhB,oBAAoB,0CAtEJ;EAuEhB,sBAAsB,2FAClB;EACA,4HAzEY;EA0EhB,+BAA+B,oDA1Ef;EA2EhB,4BAA4B,uDA3EZ;EA4EhB,gBAAgB,sBA5EA;EA6EhB,eAAe,2BA7EC;EA8EhB,gBAAgB,kBA9EA;EA+EhB,cAAc,6BA/EE;EAgFhB,gBAAgB,kBAhFA;EAiFhB,cAAc,2BAjFE;EAkFhB,oBAAoB,+DAlFJ;EAmFhB,qBAAqB,0DAnFL;EAoFhB,iBAAiB,eApFD;EAqFhB,kBAAkB,kDArFF;EAsFhB,gBAAgB,qBAtFA;EAuFhB,iBAAiB,iFAvFD;EAwFhB,oBAAoB,WAxFJ;EAyFhB,kBAAkB,SAzFF;EA0FhB,eAAe,MA1FC;EA2FhB,kBAAkB,+BA3FF;EA4FhB,MAAM,IA5FU;EA6FhB,kBAAkB,uEA7FF;EA8FhB,iBAAiB,gEA9FD;EA+FhB,gBAAgB;AA/FA,CAApB;;AAkGA,IAAIC,WAAW,GAAI5gG,MAAD,IAAuC,YAAY;EACjE,IAAIy+B,aAAa,GAAG,UAAUtwB,CAAV,EAAaF,CAAb,EAAgB;IAChCwwB,aAAa,GAAGn7B,MAAM,CAACo7B,cAAP,IACX;MAAEC,SAAS,EAAE;IAAb,aAA6Bh7B,KAA7B,IAAsC,UAAUwK,CAAV,EAAaF,CAAb,EAAgB;MAAEE,CAAC,CAACwwB,SAAF,GAAc1wB,CAAd;IAAkB,CAD/D,IAEZ,UAAUE,CAAV,EAAaF,CAAb,EAAgB;MAAE,KAAK,IAAIoK,CAAT,IAAcpK,CAAd,EAAiB,IAAIA,CAAC,CAAClJ,cAAF,CAAiBsT,CAAjB,CAAJ,EAAyBlK,CAAC,CAACkK,CAAD,CAAD,GAAOpK,CAAC,CAACoK,CAAD,CAAR;IAAc,CAF9E;;IAGA,OAAOomB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAApB;EACH,CALD;;EAMA,OAAO,UAAUE,CAAV,EAAaF,CAAb,EAAgB;IACnBwwB,aAAa,CAACtwB,CAAD,EAAIF,CAAJ,CAAb;;IACA,SAAS2wB,EAAT,GAAc;MAAE,KAAK97B,WAAL,GAAmBqL,CAAnB;IAAuB;;IACvCA,CAAC,CAACjO,SAAF,GAAc+N,CAAC,KAAK,IAAN,GAAa3K,MAAM,CAACg7B,MAAP,CAAcrwB,CAAd,CAAb,IAAiC2wB,EAAE,CAAC1+B,SAAH,GAAe+N,CAAC,CAAC/N,SAAjB,EAA4B,IAAI0+B,EAAJ,EAA7D,CAAd;EACH,CAJD;AAKH,CAZuD,EAAxD;;AAaA,IAAIiiE,YAAY,GAAI7gG,MAAD,IAAuC,UAAU8+B,UAAV,EAAsBxC,MAAtB,EAA8B95B,GAA9B,EAAmCu8B,IAAnC,EAAyC;EAC/F,IAAI7wB,CAAC,GAAG/J,SAAS,CAAC9C,MAAlB;EAAA,IAA0B29B,CAAC,GAAG9wB,CAAC,GAAG,CAAJ,GAAQouB,MAAR,GAAiByC,IAAI,KAAK,IAAT,GAAgBA,IAAI,GAAGz7B,MAAM,CAAC27B,wBAAP,CAAgC3C,MAAhC,EAAwC95B,GAAxC,CAAvB,GAAsEu8B,IAArH;EAAA,IAA2H5wB,CAA3H;EACA,IAAI,OAAO+wB,OAAP,KAAmB,QAAnB,IAA+B,OAAOA,OAAO,CAACC,QAAf,KAA4B,UAA/D,EAA2EH,CAAC,GAAGE,OAAO,CAACC,QAAR,CAAiBL,UAAjB,EAA6BxC,MAA7B,EAAqC95B,GAArC,EAA0Cu8B,IAA1C,CAAJ,CAA3E,KACK,KAAK,IAAI/8B,CAAC,GAAG88B,UAAU,CAACz9B,MAAX,GAAoB,CAAjC,EAAoCW,CAAC,IAAI,CAAzC,EAA4CA,CAAC,EAA7C,EAAiD,IAAImM,CAAC,GAAG2wB,UAAU,CAAC98B,CAAD,CAAlB,EAAuBg9B,CAAC,GAAG,CAAC9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAAC6wB,CAAD,CAAT,GAAe9wB,CAAC,GAAG,CAAJ,GAAQC,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,EAAcw8B,CAAd,CAAT,GAA4B7wB,CAAC,CAACmuB,MAAD,EAAS95B,GAAT,CAA7C,KAA+Dw8B,CAAnE;EAC7E,OAAO9wB,CAAC,GAAG,CAAJ,IAAS8wB,CAAT,IAAc17B,MAAM,CAAC8sB,cAAP,CAAsBkM,MAAtB,EAA8B95B,GAA9B,EAAmCw8B,CAAnC,CAAd,EAAqDA,CAA5D;AACH,CALD;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,IAAI8hE,WAAW;AAAG;AAAyB,UAAUzhE,MAAV,EAAkB;EACzDuhE,WAAW,CAACE,WAAD,EAAczhE,MAAd,CAAX;;EACA,SAASyhE,WAAT,CAAqBhuF,OAArB,EAA8B9L,OAA9B,EAAuC;IACnC,IAAI1B,KAAK,GAAG+5B,MAAM,CAACl5B,IAAP,CAAY,IAAZ,EAAkB2M,OAAlB,EAA2B9L,OAA3B,KAAuC,IAAnD,CADmC,CAEnC;;;IACA1B,KAAK,CAAC48E,UAAN,GAAmB,IAAnB;IACA58E,KAAK,CAAC2wE,aAAN,GAAsB,EAAtB;IACA3wE,KAAK,CAAC+4E,cAAN,GAAuB,EAAvB,CALmC,CAMnC;;IACA/4E,KAAK,CAACk5E,gBAAN,GAAyB,EAAzB;IACAl5E,KAAK,CAACy7F,YAAN,GAAqB,EAArB;IACAz7F,KAAK,CAAC07F,QAAN,GAAiB,EAAjB;IACA17F,KAAK,CAAC+xE,cAAN,GAAuB,KAAvB;IACA/xE,KAAK,CAACmzE,mBAAN,GAA4B,EAA5B;IACAnzE,KAAK,CAAC8kF,SAAN,GAAkB,IAAlB;IACA9kF,KAAK,CAACo8E,UAAN,GAAmB,EAAnB;IACAp8E,KAAK,CAAC27F,aAAN,GAAsB,EAAtB;IACA37F,KAAK,CAACurE,MAAN,GAAe,KAAf;IACAvrE,KAAK,CAACywE,KAAN,GAAc,KAAd;IACAzwE,KAAK,CAAC+wE,WAAN,GAAoB,KAApB;IACA/wE,KAAK,CAACq5E,YAAN,GAAqB,KAArB;IACAr5E,KAAK,CAACm5E,YAAN,GAAqB,KAArB;IACAn5E,KAAK,CAAC43E,UAAN,GAAmB,EAAnB;IACA53E,KAAK,CAAC47F,YAAN,GAAqB,KAArB;IACA57F,KAAK,CAAC0xE,UAAN,GAAmB,KAAnB,CAtBmC,CAuBnC;;IACA1xE,KAAK,CAACyyE,eAAN,GAAwB,KAAxB;IACAzyE,KAAK,CAAC6wE,WAAN,GAAoB,KAApB;IACA7wE,KAAK,CAACo/D,WAAN,GAAoB,KAApB;IACAp/D,KAAK,CAACqiF,SAAN,GAAkB,EAAlB;IACAriF,KAAK,CAAC67F,QAAN,GAAiB,KAAjB;IACA77F,KAAK,CAAC+hF,aAAN,GAAsB,KAAtB;IACA/hF,KAAK,CAACs5E,UAAN,GAAmB,KAAnB,CA9BmC,CA+BnC;;IACAt5E,KAAK,CAAC0tF,aAAN,GAAsB,EAAtB;IACA1tF,KAAK,CAAC6hF,UAAN,GAAmB,EAAnB;IACA7hF,KAAK,CAAC0gF,WAAN,GAAoB,KAApB,CAlCmC,CAmCnC;;IACA1gF,KAAK,CAAC0wC,QAAN,GAAiB,EAAjB;IACA1wC,KAAK,CAACu4E,SAAN,GAAkB,EAAlB;IACAv4E,KAAK,CAACo4E,QAAN,GAAiB,EAAjB;IACAp4E,KAAK,CAAC0uE,QAAN,GAAiB,EAAjB;IACA1uE,KAAK,CAAC23E,UAAN,GAAmB,KAAnB;IACA33E,KAAK,CAACs6E,eAAN,GAAwB,IAAxB;IACAt6E,KAAK,CAACwrF,kBAAN,GAA2B;MAAE/tD,IAAI,EAAE,EAAR;MAAYE,GAAG,EAAE;IAAjB,CAA3B;IACA39B,KAAK,CAACo5E,SAAN,GAAkB,KAAlB;IACAp5E,KAAK,CAAC06E,SAAN,GAAkB,CAAlB,CA5CmC,CA6CnC;;IACA16E,KAAK,CAACi5E,cAAN,GAAuB,EAAvB;IACAj5E,KAAK,CAAC87F,cAAN,GAAuB,CAAvB;IACA97F,KAAK,CAAC+7F,aAAN,GAAsB,CAAtB,CAhDmC,CAiDnC;;IACA/7F,KAAK,CAAC4oF,KAAN,GAAc,KAAd;IACAoT,aAAa,CAAC10D,MAAd,CAAqB+sD,aAArB,EAAoChO,cAApC,EAAoDgS,aAApD;IACA,OAAOr4F,KAAP;EACH;;EACDg8F,aAAa,GAAGR,WAAhB;EACA;AACJ;AACA;AACA;AACA;AACA;;EACIA,WAAW,CAAC5gG,SAAZ,CAAsBk5B,aAAtB,GAAsC,YAAY;IAC9C,OAAO,aAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;;;EACI0nE,WAAW,CAAC5gG,SAAZ,CAAsBwrC,SAAtB,GAAkC,YAAY;IAC1C,IAAIjpC,uEAAiB,CAAC,KAAKuE,OAAL,CAAaoI,EAAd,CAAjB,IAAsC,KAAKpI,OAAL,CAAaoI,EAAb,KAAoB,EAA9D,EAAkE;MAC9D,KAAKpI,OAAL,CAAa+rB,YAAb,CAA0B,IAA1B,EAAgC/tB,iEAAW,CAAC,aAAD,CAA3C;IACH;;IACD,KAAKu8F,UAAL;IACA,KAAK1rB,QAAL,GAAgB,EAAhB;IACA,KAAKgF,OAAL,GAAe,EAAf;IACAhkD,uEAAiB,CAAC,KAAK7vB,OAAN,EAAe;MAAE,SAASwB,gEAAU,CAAC,KAAKusC,KAAN,CAArB;MAAmC,UAAUvsC,gEAAU,CAAC,KAAKwsC,MAAN;IAAvD,CAAf,CAAjB;IACA,KAAKvlB,QAAL,GAAgBZ,kEAAhB;IACA,KAAKytD,QAAL,GAAgB,KAAKklB,WAAL,EAAhB;;IACA,IAAI,KAAKllB,QAAT,EAAmB;MACf,KAAKpkD,aAAL,CAAmB;QAAEupE,sBAAsB,EAAE;UAAE9d,OAAO,EAAE;QAAX;MAA1B,CAAnB,EAAmE,IAAnE;IACH;;IACD,IAAIpwD,GAAG,GAAG0C,6DAAO,CAAC,KAAKjvB,OAAN,EAAe,WAAf,CAAjB;IACA,KAAK06F,QAAL,GAAgBnuE,GAAG,GAAG,IAAH,GAAU,KAA7B;IACA,KAAKijD,YAAL,GAAqB,KAAKgC,IAAL,KAAc,YAAf,GAA+B,gBAA/B,GAAkD,aAAtE;IACAhR,qEAAa,CAAC;MAAElrC,MAAM,EAAE,KAAKt1B;IAAf,CAAD,EAA2BG,+DAA3B,CAAb;IACA,KAAKw6F,UAAL;IACA,KAAK1lD,UAAL,GAAkB;MACd2lD,IAAI,EAAE,OADQ;MAEdC,EAAE,EAAE,IAFU;MAGdC,UAAU,EAAE,cAHE;MAIdC,UAAU,EAAE,cAJE;MAKdC,KAAK,EAAE;IALO,CAAlB;IAOA,KAAKjmB,SAAL,GAAiB,IAAI9+B,sDAAJ,CAAS,KAAK7jB,aAAL,EAAT,EAA+BunE,aAA/B,EAA8C,KAAKj8E,MAAnD,CAAjB;EACH,CA1BD;EA2BA;AACJ;AACA;AACA;AACA;AACA;;;EACIo8E,WAAW,CAAC5gG,SAAZ,CAAsBitC,cAAtB,GAAuC,YAAY;IAC/C,IAAI80D,SAAS,GAAG,CAAC,MAAD,EAAS,MAAT,EAAiB,eAAjB,CAAhB;IACA,OAAO,KAAKr0D,YAAL,CAAkBq0D,SAAlB,CAAP;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;AACA;;;EACInB,WAAW,CAAC5gG,SAAZ,CAAsBkkC,eAAtB,GAAwC,YAAY;IAChD,IAAIgB,OAAO,GAAG,EAAd;IACAA,OAAO,CAACt/B,IAAR,CAAa;MACT++B,MAAM,EAAE,eADC;MAETt/B,IAAI,EAAE,CAAC,IAAD;IAFG,CAAb;IAIA6/B,OAAO,CAACt/B,IAAR,CAAa;MACT++B,MAAM,EAAE,gBADC;MAETt/B,IAAI,EAAE,CAAC,IAAD;IAFG,CAAb;;IAIA,IAAI,KAAK28F,eAAL,CAAqBve,OAAzB,EAAkC;MAC9Bv+C,OAAO,CAACt/B,IAAR,CAAa;QACT++B,MAAM,EAAE,SADC;QAETt/B,IAAI,EAAE,CAAC,IAAD;MAFG,CAAb;IAIH;;IACD,IAAI,KAAKk8F,sBAAL,CAA4B9d,OAAhC,EAAyC;MACrCv+C,OAAO,CAACt/B,IAAR,CAAa;QACT++B,MAAM,EAAE,gBADC;QAETt/B,IAAI,EAAE,CAAC,IAAD;MAFG,CAAb;IAIH;;IACD,IAAI,KAAKizE,IAAT,EAAe;MACXpzC,OAAO,CAACt/B,IAAR,CAAa;QACT++B,MAAM,EAAE,aADC;QAETt/B,IAAI,EAAE,CAAC,IAAD;MAFG,CAAb;IAIH;;IACD,IAAI,KAAK46F,mBAAL,CAAyBxc,OAAzB,IAAoC,CAAC,KAAKl0D,QAA9C,EAAwD;MACpD2V,OAAO,CAACt/B,IAAR,CAAa;QACT++B,MAAM,EAAE,aADC;QAETt/B,IAAI,EAAE,CAAC,IAAD;MAFG,CAAb;IAIH;;IACD,IAAI,KAAKqqF,oBAAT,EAA+B;MAC3BxqD,OAAO,CAACt/B,IAAR,CAAa;QACT++B,MAAM,EAAE,gBADC;QAETt/B,IAAI,EAAE,CAAC,IAAD;MAFG,CAAb;IAIH;;IACD,OAAO6/B,OAAP;EACH,CAzCD;EA0CA;AACJ;AACA;AACA;AACA;AACA;;;EACI07D,WAAW,CAAC5gG,SAAZ,CAAsB0rC,MAAtB,GAA+B,YAAY;IACvC,KAAKwE,UAAL;IACA,IAAI+xD,OAAO,GAAG1/F,uEAAiB,CAAC,KAAKy0E,aAAN,CAAjB,GAAwC,EAAxC,GACV,KAAK2d,mBAAL,GAA2B,KAAK3d,aAAhC,GAAgD,KAAKA,aAAL,CAAmB7vE,KAAnB,CAAyB,KAAK6vE,aAAL,CAAmB71E,MAAnB,GAA4B,CAArD,CADpD;IAEA,KAAK62B,aAAL,CAAmB;MAAEg/C,aAAa,EAAEirB;IAAjB,CAAnB,EAA+C,IAA/C;IACA,KAAKC,QAAL,GAAgB,KAAK5pB,IAArB;IACA,KAAK0V,KAAL,GAAa9+D,SAAS,CAACc,QAAV,CAAmBjR,WAAnB,GAAiCvb,OAAjC,CAAyC,KAAzC,KAAmD,CAAhE;IACA,KAAK2+F,MAAL,CAAY,KAAK99E,SAAjB;IACA,KAAK+9E,iBAAL;IACAhqB,IAAI,CAAC,IAAD,EAAQ,KAAKzD,IAAL,KAAc,KAAKgI,YAApB,GAAoC9L,UAApC,GAAiDC,WAAxD,EAAqE,KAAK6D,IAA1E,CAAJ;IACA,KAAKgb,YAAL;;IACA,IAAIptF,uEAAiB,CAAC,KAAKs8E,oBAAN,CAArB,EAAkD;MAC9C,KAAKwjB,WAAL,CAAiBC,QAAjB,CAA0B,KAAKj+E,SAAL,GAAiB,CAAjB,GAAqB,CAA/C;MACA,IAAI+sE,GAAG,GAAGh8D,4DAAM,CAAC,MAAMm7C,SAAP,EAAkB,KAAKzpE,OAAvB,CAAhB;MACAsqF,GAAG,CAACj+D,SAAJ,CAAc9B,GAAd,CAAkB8+C,YAAlB;IACH;;IACD,KAAK11B,UAAL;IACA,KAAKpO,cAAL;EACH,CAlBD;;EAmBAu0D,WAAW,CAAC5gG,SAAZ,CAAsBqhG,UAAtB,GAAmC,YAAY;IAC3C,IAAIzE,WAAW,GAAG,KAAKjoB,IAAvB;;IACA,IAAIpyE,uEAAiB,CAACq6F,WAAD,CAArB,EAAoC;MAChCA,WAAW,GAAG,GAAd;IACH;;IACD,IAAIA,WAAW,CAACxkF,WAAZ,CAAwB,GAAxB,MAAkCwkF,WAAW,CAACz7F,MAAZ,GAAqB,CAA3D,EAA+D;MAC3Dy7F,WAAW,GAAGA,WAAW,GAAG,GAA5B;IACH;;IACD,KAAKjgB,YAAL,GAAoBigB,WAApB;IACA,IAAI3C,KAAK,GAAG2C,WAAW,CAAC/6F,KAAZ,CAAkB,GAAlB,CAAZ;IACA,KAAKm2B,aAAL,CAAmB;MAAE28C,IAAI,EAAEslB,KAAK,CAAC,CAAD,CAAL,GAAW;IAAnB,CAAnB,EAA6C,IAA7C;IACA,KAAKjlB,SAAL,GAAiB,EAAjB;IACA,KAAKF,MAAL,GAAc,CAAC,SAAD,CAAd;IACA,KAAKyC,QAAL,GAAgB,EAAhB;EACH,CAdD;;EAeAqpB,WAAW,CAAC5gG,SAAZ,CAAsBkwC,UAAtB,GAAmC,YAAY;IAC3C,IAAI,KAAKksC,QAAT,EAAmB;MACfppD,8DAAQ,CAAC,CAAC,KAAKlsB,OAAN,CAAD,EAAiBykE,MAAjB,CAAR;IACH;;IACD,IAAI,KAAKopB,mBAAT,EAA8B;MAC1B3hE,8DAAQ,CAAC,CAAC,KAAKlsB,OAAN,CAAD,EAAiBukE,YAAjB,CAAR;IACH;;IACD,KAAKk3B,WAAL,CAAiB,IAAjB,EAAuB,KAAKvmB,QAA5B;IACA,KAAKwmB,gBAAL;EACH,CATD;;EAUA5B,WAAW,CAAC5gG,SAAZ,CAAsByhG,UAAtB,GAAmC,YAAY;IAC3C,IAAIgB,UAAU,GAAG,KAAKx7F,aAAL,CAAmB,KAAnB,EAA0B;MAAEiI,EAAE,EAAE,KAAKpI,OAAL,CAAaoI,EAAb,GAAkB46D;IAAxB,CAA1B,CAAjB;IACA,KAAKhjE,OAAL,CAAaa,WAAb,CAAyB86F,UAAzB;IACA,IAAIC,UAAU,GAAG,KAAKz7F,aAAL,CAAmB,KAAnB,EAA0B;MACvCiI,EAAE,EAAE,KAAKpI,OAAL,CAAaoI,EAAb,GAAkB66D,SADiB;MACNp3C,SAAS,EAAEg5C;IADL,CAA1B,CAAjB;IAGA,KAAK7kE,OAAL,CAAaa,WAAb,CAAyB+6F,UAAzB;IACA,IAAIC,cAAc,GAAG,KAAK17F,aAAL,CAAmB,KAAnB,EAA0B;MAC3CiI,EAAE,EAAE,KAAKpI,OAAL,CAAaoI,EAAb,GAAkB86D,aADqB;MACNr3C,SAAS,EAAEi5C;IADL,CAA1B,CAArB;IAGA,IAAIg3B,QAAQ,GAAG,KAAK37F,aAAL,CAAmB,KAAnB,EAA0B;MACrCiI,EAAE,EAAE,KAAKpI,OAAL,CAAaoI,EAAb,GAAkB+6D;IADe,CAA1B,CAAf;IAGA04B,cAAc,CAACh7F,WAAf,CAA2Bi7F,QAA3B;IACA,IAAIC,WAAW,GAAG,KAAK57F,aAAL,CAAmB,KAAnB,EAA0B;MACxCiI,EAAE,EAAE,KAAKpI,OAAL,CAAaoI,EAAb,GAAkB47D,UADkB;MACNn4C,SAAS,EAAEk5C;IADL,CAA1B,CAAlB;IAGA,KAAK2uB,uBAAL,GAA+B,KAAKvzF,aAAL,CAAmB,KAAnB,EAA0B;MACrDiI,EAAE,EAAE,KAAKpI,OAAL,CAAaoI,EAAb,GAAkB67D,gBAD+B;MAErDp4C,SAAS,EAAEs9C;IAF0C,CAA1B,CAA/B;IAIA4yB,WAAW,CAACl7F,WAAZ,CAAwB,KAAK6yF,uBAA7B;IACA,IAAIsI,QAAQ,GAAG,KAAK77F,aAAL,CAAmB,KAAnB,EAA0B;MACrCiI,EAAE,EAAE,KAAKpI,OAAL,CAAaoI,EAAb,GAAkBg7D;IADe,CAA1B,CAAf;IAGA24B,WAAW,CAACl7F,WAAZ,CAAwBm7F,QAAxB;IACA,IAAIC,aAAa,GAAG,KAAK97F,aAAL,CAAmB,KAAnB,EAA0B;MAC1CiI,EAAE,EAAE,KAAKpI,OAAL,CAAaoI,EAAb,GAAkBi7D,YADoB;MAE1Cx3C,SAAS,EAAEm5C,WAF+B;MAElBh5C,KAAK,EAAE;QAAE,QAAQ;MAAV;IAFW,CAA1B,CAApB;IAIA+vE,WAAW,CAACl7F,WAAZ,CAAwBo7F,aAAxB;IACA,IAAIC,OAAO,GAAG,KAAK/7F,aAAL,CAAmB,MAAnB,EAA2B;MAAE0rB,SAAS,EAAE89C;IAAb,CAA3B,CAAd;IACAoyB,WAAW,CAACl7F,WAAZ,CAAwBq7F,OAAxB;IACA,IAAIC,YAAJ;;IACA,IAAI,CAAC,KAAK5+E,SAAV,EAAqB;MACjBq+E,UAAU,CAAC/6F,WAAX,CAAuBg7F,cAAvB;MACAD,UAAU,CAAC/6F,WAAX,CAAuBk7F,WAAvB;MACAI,YAAY,GAAG,CACX;QACIxpC,IAAI,EAAE,KADV;QACiBx/C,GAAG,EAAE,KAAKsnF,sBAAL,CAA4Bz4B,QAA5B,CAAqC7mE,QAArC,EADtB;QAEIiY,GAAG,EAAE,KAAKqnF,sBAAL,CAA4B2B,QAA5B,CAAqCjhG,QAArC;MAFT,CADW,EAKX;QAAEw3D,IAAI,EAAE,KAAR;QAAex/C,GAAG,EAAE;MAApB,CALW,CAAf;IAOH,CAVD,MAWK;MACDyoF,UAAU,CAAC/6F,WAAX,CAAuBk7F,WAAvB;MACAH,UAAU,CAAC/6F,WAAX,CAAuBg7F,cAAvB;MACAM,YAAY,GAAG,CACX;QAAExpC,IAAI,EAAE,KAAR;QAAex/C,GAAG,EAAE;MAApB,CADW,EAEX;QACIw/C,IAAI,EAAE,KADV;QACiBx/C,GAAG,EAAE,KAAKsnF,sBAAL,CAA4Bz4B,QAA5B,CAAqC7mE,QAArC,EADtB;QAEIiY,GAAG,EAAE,KAAKqnF,sBAAL,CAA4B2B,QAA5B,CAAqCjhG,QAArC;MAFT,CAFW,CAAf;IAOH;;IACD,KAAKogG,WAAL,GAAmB,IAAIj7B,6DAAJ,CAAa;MAC5B67B,YAAY,EAAEA,YADc;MAE5BpuD,KAAK,EAAE,MAFqB;MAG5BxwB,SAAS,EAAE,KAHiB;MAI5BqhE,mBAAmB,EAAE,KAAKA,mBAJE;MAK5BsF,QAAQ,EAAE,KAAKzZ,cAAL,CAAoBtxE,IAApB,CAAyB,IAAzB;IALkB,CAAb,CAAnB;IAOA,KAAKoiG,WAAL,CAAiBv3D,gBAAjB,GAAoC,IAApC;IACA,KAAKu3D,WAAL,CAAiBj3D,QAAjB,CAA0Bs3D,UAA1B;IACA,IAAIS,UAAU,GAAG,KAAKl8F,aAAL,CAAmB,KAAnB,EAA0B;MAAEiI,EAAE,EAAE,KAAKpI,OAAL,CAAaoI,EAAb,GAAkBk7D;IAAxB,CAA1B,CAAjB;IACA,KAAKtjE,OAAL,CAAaa,WAAb,CAAyBw7F,UAAzB;IACA,IAAIC,QAAQ,GAAG,KAAKn8F,aAAL,CAAmB,IAAnB,EAAyB;MAAEiI,EAAE,EAAE,KAAKpI,OAAL,CAAaoI,EAAb,GAAkBw7D;IAAxB,CAAzB,CAAf;IACA,KAAK5jE,OAAL,CAAaa,WAAb,CAAyBy7F,QAAzB;IACA,IAAIC,aAAa,GAAG,KAAKp8F,aAAL,CAAmB,KAAnB,EAA0B;MAAEiI,EAAE,EAAE,KAAKpI,OAAL,CAAaoI,EAAb,GAAkBo7D;IAAxB,CAA1B,CAApB;IACA,KAAKxjE,OAAL,CAAaa,WAAb,CAAyB07F,aAAzB;IACA,IAAIC,cAAc,GAAG,KAAKr8F,aAAL,CAAmB,KAAnB,EAA0B;MAAEiI,EAAE,EAAE,KAAKpI,OAAL,CAAaoI,EAAb,GAAkBq7D;IAAxB,CAA1B,CAArB;IACA,KAAKzjE,OAAL,CAAaa,WAAb,CAAyB27F,cAAzB;IACA,IAAIC,gBAAgB,GAAG,KAAKt8F,aAAL,CAAmB,KAAnB,EAA0B;MAAEiI,EAAE,EAAE,KAAKpI,OAAL,CAAaoI,EAAb,GAAkBs7D;IAAxB,CAA1B,CAAvB;IACA,KAAK1jE,OAAL,CAAaa,WAAb,CAAyB47F,gBAAzB;EACH,CA3ED;;EA4EA3C,WAAW,CAAC5gG,SAAZ,CAAsB2vF,YAAtB,GAAqC,YAAY;IAC7C,IAAI6T,OAAO,GAAGpuE,4DAAM,CAAC,MAAM,KAAKtuB,OAAL,CAAaoI,EAAnB,GAAwB46D,UAAzB,EAAqC,KAAKhjE,OAA1C,CAApB;IACA,IAAI28F,aAAa,GAAGD,OAAO,GAAGA,OAAO,CAACzuD,YAAX,GAA0B,CAArD;;IACA,IAAI,KAAKstD,WAAT,EAAsB;MAClB,KAAKA,WAAL,CAAiBvtD,MAAjB,GAA0B,CAAC,KAAKhuC,OAAL,CAAa4wC,YAAb,GAA4B+rD,aAA7B,EAA4CxhG,QAA5C,EAA1B;MACA,KAAKogG,WAAL,CAAiBjqE,QAAjB;IACH;EACJ,CAPD;EAQA;;;EACAwoE,WAAW,CAAC5gG,SAAZ,CAAsBuxE,cAAtB,GAAuC,YAAY;IAC/C,KAAKnwD,MAAL,CAAYmwD,cAAZ,EAA4B,EAA5B;EACH,CAFD;;EAGAqvB,WAAW,CAAC5gG,SAAZ,CAAsB0jG,cAAtB,GAAuC,YAAY;IAC/C,IAAItS,GAAG,GAAGh8D,4DAAM,CAAC,MAAMm7C,SAAP,EAAkB,KAAKzpE,OAAvB,CAAhB;;IACA,IAAI,KAAKy6F,sBAAL,CAA4B9d,OAAhC,EAAyC;MACrC,KAAK4e,WAAL,CAAiB73C,MAAjB,CAAwB,KAAKnmC,SAAL,GAAiB,CAAjB,GAAqB,CAA7C;MACA+sE,GAAG,CAACj+D,SAAJ,CAAcrB,MAAd,CAAqBq+C,YAArB;IACH,CAHD,MAIK;MACD,KAAKkyB,WAAL,CAAiBC,QAAjB,CAA0B,KAAKj+E,SAAL,GAAiB,CAAjB,GAAqB,CAA/C;MACA+sE,GAAG,CAACj+D,SAAJ,CAAc9B,GAAd,CAAkB8+C,YAAlB;IACH;EACJ,CAVD;;EAWAywB,WAAW,CAAC5gG,SAAZ,CAAsBuiG,WAAtB,GAAoC,UAAUoB,MAAV,EAAkBC,MAAlB,EAA0B;IAC1D,IAAI,CAACrhG,uEAAiB,CAACohG,MAAD,CAAlB,IAA8BA,MAAM,KAAK,EAA7C,EAAiD;MAC7CjwE,iEAAW,CAAC,CAAC,KAAK5sB,OAAN,CAAD,EAAiB68F,MAAM,CAAC9hG,KAAP,CAAa,GAAb,CAAjB,CAAX;IACH;;IACD,IAAI,CAACU,uEAAiB,CAACqhG,MAAD,CAAlB,IAA8BA,MAAM,KAAK,EAA7C,EAAiD;MAC7C5wE,8DAAQ,CAAC,CAAC,KAAKlsB,OAAN,CAAD,EAAiB88F,MAAM,CAAC/hG,KAAP,CAAa,GAAb,CAAjB,CAAR;IACH;EACJ,CAPD;;EAQA++F,WAAW,CAAC5gG,SAAZ,CAAsBwnE,WAAtB,GAAoC,YAAY;IAC5CA,mEAAW,CAAC,KAAK1gE,OAAN,CAAX;EACH,CAFD;;EAGA85F,WAAW,CAAC5gG,SAAZ,CAAsBunE,WAAtB,GAAoC,YAAY;IAC5CA,mEAAW,CAAC,KAAKzgE,OAAN,CAAX;EACH,CAFD;;EAGA85F,WAAW,CAAC5gG,SAAZ,CAAsB6jG,aAAtB,GAAsC,UAAUl9F,CAAV,EAAa;IAC/CA,CAAC,CAAC6qC,cAAF;EACH,CAFD;;EAGAovD,WAAW,CAAC5gG,SAAZ,CAAsBshG,WAAtB,GAAoC,YAAY;IAC5C,OAAQ,kFAAkFpwF,IAAlF,CAAuFyd,+EAAA,EAAvF,KACD,UAAUzd,IAAV,CAAeyd,+EAAA,EAAf,CADP;EAEH,CAHD;;EAIAiyE,WAAW,CAAC5gG,SAAZ,CAAsBwiG,gBAAtB,GAAyC,YAAY;IACjD,IAAItzF,EAAE,GAAG,KAAKpI,OAAL,CAAaoI,EAAb,GAAkB87D,SAA3B;IACA,IAAIyW,SAAS,GAAG,KAAKx6E,aAAL,CAAmB,OAAnB,EAA4B;MAAEiI,EAAE,EAAEA,EAAN;MAAU4jB,KAAK,EAAE;QAAEtR,IAAI,EAAE,aAAR;QAAuB/P,IAAI,EAAE;MAA7B;IAAjB,CAA5B,CAAhB;IACA,KAAK3K,OAAL,CAAaa,WAAb,CAAyB85E,SAAzB;IACA,KAAKqiB,eAAL,GAAuB,IAAIz8B,0DAAJ,CAAW;MAC9B/6C,MAAM,EAAE6uD,aAAa,CAAC,IAAD,EAAO,eAAP,CADS;MAE9B8J,OAAO,EAAExD,SAFqB;MAG9B0D,iBAAiB,EAAE;QAAEC,MAAM,EAAE;MAAV,CAHW;MAI9BC,aAAa,EAAE,IAJe;MAK9BC,aAAa,EAAE,IALe;MAM9B7B,OAAO,EAAE,KANqB;MAO9B+B,OAAO,EAAE,IAPqB;MAQ9B3wC,KAAK,EAAE,OARuB;MAS9BzY,MAAM,EAAE,KAAKqpD,WAAL,GAAmB,KAAKA,WAAxB,GAAsC,MAAM,KAAK3+E,OAAL,CAAaoI,EATnC;MAU9B8sE,QAAQ,EAAEF,WAAW,CAAC,IAAD,EAAO,KAAKM,QAAL,GAAgB5Q,SAAhB,GAA4BF,UAAnC,CAVS;MAW9B9mD,MAAM,EAAE,KAAKA,MAXiB;MAY9B+gE,aAAa,EAAE,IAZe;MAa9BtyC,QAAQ,EAAE;QAAE43C,CAAC,EAAE,QAAL;QAAeC,CAAC,EAAE;MAAlB,CAboB;MAc9BzmE,SAAS,EAAE,KAAKA,SAdc;MAe9BqhE,mBAAmB,EAAE,KAAKA,mBAfI;MAgB9Bh+E,IAAI,EAAE,KAAKq8F,MAAL,CAAY9jG,IAAZ,CAAiB,IAAjB,CAhBwB;MAiB9B+H,KAAK,EAAE,KAAKg8F,OAAL,CAAa/jG,IAAb,CAAkB,IAAlB,CAjBuB;MAkB9B2kF,UAAU,EAAE,KAAKsZ,YAAL,CAAkBj+F,IAAlB,CAAuB,IAAvB,CAlBkB;MAmB9B8kF,WAAW,EAAE,KAAKoZ,aAAL,CAAmBl+F,IAAnB,CAAwB,IAAxB;IAnBiB,CAAX,CAAvB;IAqBA,KAAK6jG,eAAL,CAAqB14D,QAArB,CAA8B,MAAM,KAAKtkC,OAAL,CAAaoI,EAAnB,GAAwBs7D,gBAAtD;IACA,KAAKy5B,eAAL;EACH,CA3BD;;EA4BArD,WAAW,CAAC5gG,SAAZ,CAAsBikG,eAAtB,GAAwC,YAAY;IAChD,IAAIC,SAAS,GAAG,KAAKtqB,YAAL,CAAkBsqB,SAAlB,GAA8B,KAAKtqB,YAAL,CAAkBsqB,SAAhD,GAA4D,KAAKtqB,YAAL,CAAkBxvD,GAA9F;IACA,KAAKw1D,SAAL,GAAiB,IAAIjY,4DAAJ,CAAa;MAC1BkY,QAAQ,EAAEzqD,4DAAM,CAAC,MAAM,KAAKtuB,OAAL,CAAaoI,EAAnB,GAAwB47D,UAAzB,EAAqC,KAAKhkE,OAA1C,CADU;MAE1Bq9F,aAAa,EAAE;QACXC,OAAO,EAAEF,SADE;QAEXzoC,SAAS,EAAEyoC;MAFA,CAFW;MAM1B1/E,MAAM,EAAE,KAAKA,MANa;MAO1BH,SAAS,EAAE,KAAKA,SAPU;MAQ1BggF,SAAS,EAAE,KAAKC,WAAL,CAAiBrkG,IAAjB,CAAsB,IAAtB,CARe;MAS1BskG,QAAQ,EAAE,KAAKC,UAAL,CAAgBvkG,IAAhB,CAAqB,IAArB,CATgB;MAU1BwkG,SAAS,EAAE,KAAKC,QAAL,CAAczkG,IAAd,CAAmB,IAAnB,CAVe;MAW1B0kG,QAAQ,EAAE,KAAKC,UAAL,CAAgB3kG,IAAhB,CAAqB,IAArB,CAXgB;MAY1B+/D,QAAQ,EAAE,KAAK6kC,UAAL,CAAgB5kG,IAAhB,CAAqB,IAArB,CAZgB;MAa1B6kG,OAAO,EAAE,KAAKC,eAAL,CAAqB9kG,IAArB,CAA0B,IAA1B,CAbiB;MAc1B+kG,OAAO,EAAE,KAAKC,eAAL,CAAqBhlG,IAArB,CAA0B,IAA1B,CAdiB;MAe1BilG,UAAU,EAAE,KAAKC,cAAL,CAAoBD,UAfN;MAgB1BE,WAAW,EAAE,KAAKD,cAAL,CAAoBC,WAhBP;MAiB1BC,WAAW,EAAE,KAAKF,cAAL,CAAoBE,WAjBP;MAkB1BC,iBAAiB,EAAE,KAAKH,cAAL,CAAoBG,iBAlBb;MAmB1BC,eAAe,EAAE,KAAKJ,cAAL,CAAoBI,eAnBX;MAoB1BC,iBAAiB,EAAE,KAAKC,gBAAL,CAAsBxlG,IAAtB,CAA2B,IAA3B;IApBO,CAAb,CAAjB;IAsBA,KAAK2/E,SAAL,CAAex0C,QAAf,CAAwB,MAAM,KAAKtkC,OAAL,CAAaoI,EAAnB,GAAwB87D,SAAhD;EACH,CAzBD;;EA0BA41B,WAAW,CAAC5gG,SAAZ,CAAsBylG,gBAAtB,GAAyC,UAAUpgG,IAAV,EAAgB;IACrD,KAAK8sB,OAAL,CAAa,kBAAb,EAAiC9sB,IAAjC;EACH,CAFD;;EAGAu7F,WAAW,CAAC5gG,SAAZ,CAAsB0lG,cAAtB,GAAuC,YAAY;IAC/C,KAAK9lB,SAAL,CAAeslB,UAAf,GAA4B,KAAKC,cAAL,CAAoBD,UAAhD;IACA,KAAKtlB,SAAL,CAAewlB,WAAf,GAA6B,KAAKD,cAAL,CAAoBC,WAAjD;IACA,KAAKxlB,SAAL,CAAeylB,WAAf,GAA6B,KAAKF,cAAL,CAAoBE,WAAjD;IACA,KAAKzlB,SAAL,CAAe0lB,iBAAf,GAAmC,KAAKH,cAAL,CAAoBG,iBAAvD;IACA,KAAK1lB,SAAL,CAAe2lB,eAAf,GAAiC,KAAKJ,cAAL,CAAoBI,eAArD;IACA,KAAK3lB,SAAL,CAAexnD,QAAf;EACH,CAPD;;EAQAwoE,WAAW,CAAC5gG,SAAZ,CAAsBk+F,YAAtB,GAAqC,UAAU74F,IAAV,EAAgB;IACjD,IAAIilB,SAAS,GAAG;MACZC,MAAM,EAAEllB,IAAI,CAACklB,MADD;MACS67D,SAAS,EAAE,QADpB;MAC8BC,WAAW,EAAE,KAAKyd;IADhD,CAAhB;IAGA,KAAK3xE,OAAL,CAAa,iBAAb,EAAgC7H,SAAhC,EAA2C,UAAUg8D,SAAV,EAAqB;MAC5DjhF,IAAI,CAACklB,MAAL,GAAc+7D,SAAS,CAAC/7D,MAAxB;IACH,CAFD;EAGH,CAPD;;EAQAq2E,WAAW,CAAC5gG,SAAZ,CAAsBm+F,aAAtB,GAAsC,UAAU94F,IAAV,EAAgB;IAClD,IAAIilB,SAAS,GAAG;MACZC,MAAM,EAAEllB,IAAI,CAACklB,MADD;MACS67D,SAAS,EAAE,QADpB;MAC8BC,WAAW,EAAE,KAAKyd;IADhD,CAAhB;IAGA,KAAK3xE,OAAL,CAAa,kBAAb,EAAiC7H,SAAjC,EAA4C,UAAUg8D,SAAV,EAAqB;MAC7DjhF,IAAI,CAACklB,MAAL,GAAc+7D,SAAS,CAAC/7D,MAAxB;IACH,CAFD;EAGH,CAPD;;EAQAq2E,WAAW,CAAC5gG,SAAZ,CAAsB+jG,MAAtB,GAA+B,YAAY;IACvC,KAAK9C,QAAL,GAAgB,IAAhB;IACA,KAAK6C,eAAL,CAAqBh9F,OAArB,CAA6BmB,KAA7B;IACA,IAAI5C,IAAI,GAAG;MACPghF,WAAW,EAAE,KAAKyd,eADX;MAC4B1d,SAAS,EAAE,QADvC;MAEPt/E,OAAO,EAAE,KAAKg9F,eAAL,CAAqBh9F;IAFvB,CAAX;IAIA,KAAKqrB,OAAL,CAAa,WAAb,EAA0B9sB,IAA1B;EACH,CARD;;EASAu7F,WAAW,CAAC5gG,SAAZ,CAAsBgkG,OAAtB,GAAgC,YAAY;IACxC,KAAK/C,QAAL,GAAgB,KAAhB;IACA,KAAKrhB,SAAL,CAAe+lB,QAAf;IACA,IAAItgG,IAAI,GAAG;MACPghF,WAAW,EAAE,KAAKyd,eADX;MAC4B1d,SAAS,EAAE,QADvC;MAEPt/E,OAAO,EAAE,KAAKg9F,eAAL,CAAqBh9F;IAFvB,CAAX;IAIA,KAAKqrB,OAAL,CAAa,YAAb,EAA2B9sB,IAA3B;EACH,CARD;EASA;;;EACAu7F,WAAW,CAAC5gG,SAAZ,CAAsBskG,WAAtB,GAAoC,UAAUj/F,IAAV,EAAgB;IAChD,IAAI62B,MAAM,GAAG,MAAb;;IACA,IAAK,KAAKurD,SAAL,CAAetmF,MAAf,KAA0B,CAA/B,EAAmC;MAC/B,KAAK,IAAIW,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK2lF,SAAL,CAAetmF,MAAnC,EAA2CW,CAAC,EAA5C,EAAgD;QAC5C,IAAIuD,IAAI,CAACugG,QAAL,CAAcpkF,IAAd,KAAuB,KAAKimE,SAAL,CAAe3lF,CAAf,EAAkBo3E,IAAlB,CAAuB13D,IAAlD,EAAwD;UACpD0a,MAAM,GAAG,KAAKurD,SAAL,CAAe3lF,CAAf,EAAkBo6B,MAA3B;UACA,KAAKurD,SAAL,CAAevmE,MAAf,CAAsBpf,CAAtB,EAAyB,CAAzB;UACAA,CAAC,GAAG,KAAK2lF,SAAL,CAAetmF,MAAnB;QACH;MACJ;IACJ;;IACD,IAAID,IAAI,GAAGihB,IAAI,CAAC2rB,SAAL,CAAevsC,8DAAQ,CAAC,KAAKuzE,MAAL,CAAY,KAAKA,MAAL,CAAY3zE,MAAZ,GAAqB,CAAjC,CAAD,EAAsC,KAAKw0E,QAA3C,CAAvB,CAAX;IACAtwE,IAAI,CAACwgG,cAAL,GAAsB,CAAC;MAAE,QAAQ,KAAKlxB;IAAf,CAAD,EAAwB;MAAE,UAAUz4C;IAAZ,CAAxB,EAA8C;MAAE,QAAQh7B;IAAV,CAA9C,EAAgE;MAAE,YAAYmE,IAAI,CAACugG,QAAL,CAAcpkF;IAA5B,CAAhE,CAAtB;IACA,IAAI0iF,SAAS,GAAG,KAAKtqB,YAAL,CAAkBsqB,SAAlB,GAA8B,KAAKtqB,YAAL,CAAkBsqB,SAAhD,GAA4D,KAAKtqB,YAAL,CAAkBxvD,GAA9F,CAbgD,CAchD;;IACA,IAAIwvD,YAAY,GAAG;MACfxvD,GAAG,EAAE85E,SADU;MAEfzyF,IAAI,EAAE,MAFS;MAGfoT,IAAI,EAAE,IAHS;MAIfmH,QAAQ,EAAE,IAJK;MAKf9B,WAAW,EAAE,IALE;MAMfhpB,IAAI,EAAEihB,IAAI,CAAC2rB,SAAL,CAAezoC,IAAI,CAACwgG,cAApB,CANS;MAOfl6E,SAAS,EAAE,IAPI;MAQfG,SAAS,EAAE,IARI;MASfJ,UAAU,EAAE;IATG,CAAnB;IAWA,KAAKo6E,eAAL,GAAuB;MAAE5pE,MAAM,EAAE,QAAV;MAAoB09C,YAAY,EAAEA,YAAlC;MAAgDrvD,MAAM,EAAE;IAAxD,CAAvB;IACA,KAAK4H,OAAL,CAAa,YAAb,EAA2B,KAAK2zE,eAAhC,EAAiD,UAAUA,eAAV,EAA2B;MACxEzgG,IAAI,CAACwgG,cAAL,GAAsB1jF,IAAI,CAACC,KAAL,CAAW7gB,8DAAQ,CAAC,MAAD,EAASukG,eAAe,CAAClsB,YAAzB,CAAnB,CAAtB;MACAv0E,IAAI,CAACklB,MAAL,GAAcu7E,eAAe,CAACv7E,MAA9B,CAFwE,CAGxE;;MACA,IAAID,SAAS,GAAG;QACZC,MAAM,EAAE,KADI;QAEZC,WAAW,EAAEnlB,IAAI,CAAC0gG;MAFN,CAAhB;;MAIA,IAAI,OAAOxkG,8DAAQ,CAAC,YAAD,EAAeukG,eAAe,CAAClsB,YAA/B,CAAf,KAAgE,UAApE,EAAgF;QAC5Er4E,8DAAQ,CAAC,YAAD,EAAeukG,eAAe,CAAClsB,YAA/B,CAAR,CAAqDtvD,SAArD;;QACA,IAAI/oB,8DAAQ,CAAC,QAAD,EAAW+oB,SAAX,CAAZ,EAAmC;UAC/BjlB,IAAI,CAACklB,MAAL,GAAchpB,8DAAQ,CAAC,QAAD,EAAW+oB,SAAX,CAAtB;QACH;MACJ;IACJ,CAdD;EAeH,CA1CD;;EA2CAs2E,WAAW,CAAC5gG,SAAZ,CAAsBwkG,UAAtB,GAAmC,YAAY;IAC3C,KAAKwB,mBAAL,CAAyB;MAAEl2C,KAAK,EAAE;IAAT,CAAzB;;IACA,IAAI,KAAK8vB,SAAL,CAAeqmB,YAAf,GAA8B9kG,MAA9B,KAAyC,CAA7C,EAAgD;MAC5C,KAAK2iG,eAAL,CAAqBpgB,IAArB;IACH;EACJ,CALD;EAMA;;;EACAkd,WAAW,CAAC5gG,SAAZ,CAAsB0kG,QAAtB,GAAiC,UAAUr/F,IAAV,EAAgB;IAC7C,IAAInE,IAAI,GAAGihB,IAAI,CAAC2rB,SAAL,CAAevsC,8DAAQ,CAAC,KAAKuzE,MAAL,CAAY,KAAKA,MAAL,CAAY3zE,MAAZ,GAAqB,CAAjC,CAAD,EAAsC,KAAKw0E,QAA3C,CAAvB,CAAX;IACAtwE,IAAI,CAACwgG,cAAL,GAAsB,CAAC;MAAE,QAAQ,KAAKlxB;IAAf,CAAD,EAAwB;MAAE,UAAU;IAAZ,CAAxB,EAAgD;MAAE,QAAQzzE;IAAV,CAAhD,CAAtB;EACH,CAHD;EAIA;;;EACA0/F,WAAW,CAAC5gG,SAAZ,CAAsB4kG,UAAtB,GAAmC,YAAY;IAC3C,IAAI,KAAK3D,QAAT,EAAmB;MACf,KAAK6C,eAAL,CAAqBpgB,IAArB;IACH;EACJ,CAJD;EAKA;;;EACAkd,WAAW,CAAC5gG,SAAZ,CAAsB6kG,UAAtB,GAAmC,UAAUx/F,IAAV,EAAgB;IAC/C,IAAIA,IAAI,CAAC6gG,SAAL,CAAe/kG,MAAf,KAA0B,CAA9B,EAAiC;MAC7B;IACH;;IACD,KAAK+/F,cAAL,GAAsB77F,IAAI,CAAC6gG,SAAL,CAAe/kG,MAArC;IACA,KAAKggG,aAAL,GAAqB,CAArB,CAL+C,CAM/C;;IACA,IAAI5f,OAAO,GAAG/J,aAAa,CAAC,IAAD,CAA3B;;IACA,IAAI,CAAC6J,eAAe,CAACE,OAAD,CAApB,EAA+B;MAC3Bl8E,IAAI,CAACklB,MAAL,GAAc,IAAd;MACAquD,kBAAkB,CAAC,IAAD,EAAO2I,OAAP,EAAgBhN,gBAAhB,CAAlB;MACA;IACH;;IACD,KAAKuvB,eAAL,CAAqB7d,IAArB;EACH,CAdD,CAveyD,CAsfzD;;;EACA2a,WAAW,CAAC5gG,SAAZ,CAAsBgmG,mBAAtB,GAA4C,UAAU3gG,IAAV,EAAgB;IACxD,KAAK87F,aAAL,GAAqB,KAAKA,aAAL,GAAqB97F,IAAI,CAACyqD,KAA/C;;IACA,IAAI,KAAKq1C,cAAL,CAAoBgB,SAApB,IAAkC,KAAKjF,cAAL,KAAwB,KAAKC,aAAnE,EAAmF;MAC/E,KAAK2C,eAAL,CAAqBpgB,IAArB;IACH;EACJ,CALD;EAMA;EACA;;;EACAkd,WAAW,CAAC5gG,SAAZ,CAAsB+kG,eAAtB,GAAwC,UAAUjtB,KAAV,EAAiB;IACrD,IAAIzyE,IAAI,GAAG;MAAE62B,MAAM,EAAE,QAAV;MAAoBl4B,MAAM,EAAE8zE;IAA5B,CAAX;IACA,KAAK3lD,OAAL,CAAa,SAAb,EAAwB9sB,IAAxB;IACA,KAAKkyE,QAAL,GAAgB,CAACh2E,8DAAQ,CAAC,KAAKuzE,MAAL,CAAY,KAAKA,MAAL,CAAY3zE,MAAZ,GAAqB,CAAjC,CAAD,EAAsC,KAAKw0E,QAA3C,CAAT,CAAhB;IACAyC,IAAI,CAAC,IAAD,EAAO5G,WAAP,EAAoB,KAAKmD,IAAzB,CAAJ;IACA,KAAKqxB,mBAAL,CAAyB;MAAEl2C,KAAK,EAAE;IAAT,CAAzB;;IACA,IAAI,OAAOvuD,8DAAQ,CAAC,WAAD,EAAc,KAAKukG,eAAL,CAAqBlsB,YAAnC,CAAf,KAAoE,UAAxE,EAAoF;MAChFr4E,8DAAQ,CAAC,WAAD,EAAc,KAAKukG,eAAL,CAAqBlsB,YAAnC,CAAR;IACH;EACJ,CATD;EAUA;EACA;;;EACAgnB,WAAW,CAAC5gG,SAAZ,CAAsBilG,eAAtB,GAAwC,UAAUntB,KAAV,EAAiB;IACrD;IACA,IAAI3qD,QAAQ,GAAG5rB,8DAAQ,CAAC,UAAD,EAAau2E,KAAb,CAAvB;IACA,IAAI3rD,UAAU,GAAG5qB,8DAAQ,CAAC,YAAD,EAAe4rB,QAAf,CAAzB;;IACA,IAAIhB,UAAU,KAAK,EAAnB,EAAuB;MACnBjqB,8DAAQ,CAAC,YAAD,EAAeiqB,UAAf,EAA2B2rD,KAA3B,CAAR;IACH;;IACD,IAAIzyE,IAAI,GAAG;MAAE62B,MAAM,EAAE,QAAV;MAAoBjQ,KAAK,EAAE6rD;IAA3B,CAAX;IACA,KAAK3lD,OAAL,CAAa,SAAb,EAAwB9sB,IAAxB;;IACA,IAAI9D,8DAAQ,CAAC,YAAD,EAAe4rB,QAAf,CAAR,KAAqC,GAAzC,EAA8C;MAC1C,KAAK85D,UAAL,CAAgBrhF,IAAhB,CAAqBrE,8DAAQ,CAAC,MAAD,EAASu2E,KAAT,CAA7B;;MACA,IAAI,CAAC,KAAKqP,aAAV,EAAyB;QACrBlD,eAAe,CAAC,IAAD,EAAO,aAAP,CAAf;MACH;IACJ;;IACD,IAAI,OAAO1iF,8DAAQ,CAAC,WAAD,EAAc,KAAKukG,eAAL,CAAqBlsB,YAAnC,CAAf,KAAoE,UAAxE,EAAoF;MAChFr4E,8DAAQ,CAAC,WAAD,EAAc,KAAKukG,eAAL,CAAqBlsB,YAAnC,CAAR;IACH;EACJ,CAlBD;;EAmBAgnB,WAAW,CAAC5gG,SAAZ,CAAsBomG,YAAtB,GAAqC,YAAY;IAC7C5pB,WAAW,CAAC,IAAD,EAAO,KAAK7H,IAAZ,CAAX;EACH,CAFD;;EAGAisB,WAAW,CAAC5gG,SAAZ,CAAsBoiG,iBAAtB,GAA0C,YAAY;IAClD,KAAKxhF,EAAL,CAAQ6wD,aAAR,EAAuB,KAAKjK,WAA5B,EAAyC,IAAzC;IACA,KAAK5mD,EAAL,CAAQ+wD,YAAR,EAAsB,KAAKpK,WAA3B,EAAwC,IAAxC;IACA,KAAK3mD,EAAL,CAAQiwD,UAAR,EAAoB,KAAKu1B,YAAzB,EAAuC,IAAvC;IACA,KAAKxlF,EAAL,CAAQ4xD,WAAR,EAAqB,KAAKgiB,aAA1B,EAAyC,IAAzC;IACA,KAAK5zE,EAAL,CAAQ8wD,UAAR,EAAoB,KAAKs0B,mBAAzB,EAA8C,IAA9C;IACA90E,kEAAA,CAAiB,KAAKpqB,OAAtB,EAA+B,aAA/B,EAA8C,KAAK+8F,aAAnD,EAAkE,IAAlE;EACH,CAPD;;EAQAjD,WAAW,CAAC5gG,SAAZ,CAAsBqmG,oBAAtB,GAA6C,YAAY;IACrD,IAAI,KAAKpuE,WAAT,EAAsB;MAClB;IACH;;IACD,KAAKhX,GAAL,CAASwwD,aAAT,EAAwB,KAAKjK,WAA7B;IACA,KAAKvmD,GAAL,CAAS0wD,YAAT,EAAuB,KAAKpK,WAA5B;IACA,KAAKtmD,GAAL,CAAS4vD,UAAT,EAAqB,KAAKu1B,YAA1B;IACA,KAAKnlF,GAAL,CAASuxD,WAAT,EAAsB,KAAKgiB,aAA3B;IACA,KAAKvzE,GAAL,CAASywD,UAAT,EAAqB,KAAKs0B,mBAA1B;IACA90E,qEAAA,CAAoB,KAAKpqB,OAAzB,EAAkC,aAAlC,EAAiD,KAAK+8F,aAAtD;EACH,CAVD;;EAWAjD,WAAW,CAAC5gG,SAAZ,CAAsBw0F,aAAtB,GAAsC,YAAY;IAC9C,IAAIjyF,uEAAiB,CAAC,KAAK+zE,YAAN,CAArB,EAA0C;MACtC,KAAKiB,QAAL,GAAgB,CAACh2E,8DAAQ,CAAC,KAAKuzE,MAAL,CAAY,KAAKA,MAAL,CAAY3zE,MAAZ,GAAqB,CAAjC,CAAD,EAAsC,KAAKw0E,QAA3C,CAAT,CAAhB;IACH;EACJ,CAJD;;EAKAirB,WAAW,CAAC5gG,SAAZ,CAAsBo0F,aAAtB,GAAsC,YAAY;IAC9C,KAAKzE,YAAL;IACA,KAAKvuE,MAAL,CAAYkwD,SAAZ,EAAuB,EAAvB;EACH,CAHD;;EAIAsvB,WAAW,CAAC5gG,SAAZ,CAAsB80F,gBAAtB,GAAyC,UAAUnuF,CAAV,EAAa;IAClD,IAAI86E,SAAJ;;IACA,QAAQ96E,CAAC,CAACu1B,MAAV;MACI,KAAK,MAAL;QACIv1B,CAAC,CAAC6qC,cAAF;QACA,KAAK+lC,QAAL,GAAgB,CAACC,aAAa,CAAC,IAAD,CAAd,CAAhB;;QACA,IAAI,CAAC4J,gBAAgB,CAAC,KAAK7J,QAAL,CAAc,CAAd,CAAD,CAArB,EAAyC;UACrCqB,kBAAkB,CAAC,IAAD,EAAO,KAAKrB,QAAL,CAAc,CAAd,CAAP,EAAyBlD,sBAAzB,CAAlB;QACH,CAFD,MAGK;UACDiJ,YAAY,CAAC,IAAD,EAAO,WAAP,CAAZ;QACH;;QACD;;MACJ,KAAK,IAAL;QACI32E,CAAC,CAAC6qC,cAAF;QACAjG,OAAO,CAAC,IAAD,CAAP;QACA;;MACJ;;MACA,KAAK,YAAL;QACI5kC,CAAC,CAAC6qC,cAAF;QACA,KAAK0wD,QAAL,GAAgB,SAAhB;QACA,KAAKlqE,aAAL,CAAmB;UAAEsgD,IAAI,EAAE;QAAR,CAAnB,EAAwC,IAAxC;QACA9Q,mEAAW,CAAC,KAAK1gE,OAAN,CAAX;QACAuxE,YAAY,CAAC,IAAD,EAAO,SAAP,CAAZ;QACA;;MACJ;;MACA,KAAK,YAAL;QACI1xE,CAAC,CAAC6qC,cAAF;QACA,KAAK0wD,QAAL,GAAgB,YAAhB;QACA,KAAKlqE,aAAL,CAAmB;UAAEsgD,IAAI,EAAE;QAAR,CAAnB,EAA2C,IAA3C;QACA9Q,mEAAW,CAAC,KAAK1gE,OAAN,CAAX;QACAuxE,YAAY,CAAC,IAAD,EAAO,YAAP,CAAZ;QACA;;MACJ,KAAK,OAAL;QACI1xE,CAAC,CAAC6qC,cAAF;;QACA,IAAI,KAAKwwD,eAAL,CAAqBnyC,KAArB,CAA2BrsD,OAA3B,CAAmC,QAAnC,KAAgD,CAAC,CAArD,EAAwD;UACpDi+E,SAAS,GAAGrsD,4DAAM,CAAC,MAAM,KAAKtuB,OAAL,CAAaoI,EAAnB,GAAwB87D,SAAzB,EAAoC,KAAKlkE,OAAzC,CAAlB;UACA26E,SAAS,CAACC,KAAV;QACH;;QACD;IArCR;EAuCH,CAzCD;;EA0CAkf,WAAW,CAAC5gG,SAAZ,CAAsBy6C,UAAtB,GAAmC,YAAY;IAC3CvpB,kEAAA,CAAiBzwB,MAAjB,EAAyB,QAAzB,EAAmC,KAAK2zF,aAAxC,EAAuD,IAAvD;IACA,KAAKS,cAAL,GAAsB,IAAIx5C,gEAAJ,CAAmB,KAAKv0C,OAAxB,EAAiC;MACnDy1C,SAAS,EAAE,KAAKu4C,gBAAL,CAAsB70F,IAAtB,CAA2B,IAA3B,CADwC;MAEnD87C,UAAU,EAAE,KAAKA,UAFkC;MAGnDzqB,SAAS,EAAE;IAHwC,CAAjC,CAAtB;EAKH,CAPD;;EAQAsvE,WAAW,CAAC5gG,SAAZ,CAAsB2uF,YAAtB,GAAqC,YAAY;IAC7Cz9D,qEAAA,CAAoBzwB,MAApB,EAA4B,QAA5B,EAAsC,KAAK2zF,aAA3C;IACA,KAAKS,cAAL,CAAoBryE,OAApB;EACH,CAHD;;EAIAo+E,WAAW,CAAC5gG,SAAZ,CAAsBsmG,OAAtB,GAAgC,YAAY;IACxC,KAAKtuE,aAAL,CAAmB;MAAEg/C,aAAa,EAAE;IAAjB,CAAnB,EAA0C,IAA1C;IACA,KAAKqqB,UAAL;IACA,KAAKjgF,MAAL,CAAYgxD,aAAZ,EAA2B;MAAEyK,YAAY,EAAE,KAAK/H,MAAL,CAAY,CAAZ;IAAhB,CAA3B;IACAsD,IAAI,CAAC,IAAD,EAAQ,KAAKzD,IAAL,KAAc,KAAKgI,YAApB,GAAoC9L,UAApC,GAAiDC,WAAxD,EAAqE,KAAK6D,IAA1E,CAAJ;EACH,CALD;EAMA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;EACI;EACA;;;EACAisB,WAAW,CAAC5gG,SAAZ,CAAsB24B,iBAAtB,GAA0C,UAAU4I,OAAV,EAAmBC,OAAnB,EAA4B;IAClE,IAAIsT,MAAJ;;IACA,KAAK,IAAIxxC,EAAE,GAAG,CAAT,EAAY8F,EAAE,GAAGhG,MAAM,CAACjB,IAAP,CAAYo/B,OAAZ,CAAtB,EAA4Cj+B,EAAE,GAAG8F,EAAE,CAACjI,MAApD,EAA4DmC,EAAE,EAA9D,EAAkE;MAC9D,IAAI6G,IAAI,GAAGf,EAAE,CAAC9F,EAAD,CAAb;;MACA,QAAQ6G,IAAR;QACI,KAAK,cAAL;UACI,KAAKo8F,mBAAL,CAAyBhlE,OAAzB;UACA;;QACJ,KAAK,kBAAL;UACI,KAAK0+C,gBAAL,GAAwB1+C,OAAO,CAAC0+C,gBAAhC;UACA,KAAK7+D,MAAL,CAAYwvD,YAAZ,EAA0B;YAAEnsC,MAAM,EAAE,QAAV;YAAoBlD,OAAO,EAAEA,OAA7B;YAAsCC,OAAO,EAAEA;UAA/C,CAA1B;UACA;;QACJ,KAAK,qBAAL;UACI,IAAI,KAAKmzD,mBAAT,EAA8B;YAC1B3hE,8DAAQ,CAAC,CAAC,KAAKlsB,OAAN,CAAD,EAAiBukE,YAAjB,CAAR;UACH,CAFD,MAGK;YACD,IAAI,KAAK2L,aAAL,CAAmB71E,MAAnB,GAA4B,CAAhC,EAAmC;cAC/B,KAAK62B,aAAL,CAAmB;gBAAEg/C,aAAa,EAAE,KAAKA,aAAL,CAAmB7vE,KAAnB,CAAyB,KAAK6vE,aAAL,CAAmB71E,MAAnB,GAA4B,CAArD;cAAjB,CAAnB,EAA+F,IAA/F;YACH;;YACDuyB,iEAAW,CAAC,CAAC,KAAK5sB,OAAN,CAAD,EAAiBukE,YAAjB,CAAX;UACH;;UACD,KAAKjqD,MAAL,CAAYwvD,YAAZ,EAA0B;YAAEnsC,MAAM,EAAE,QAAV;YAAoBlD,OAAO,EAAEA,OAA7B;YAAsCC,OAAO,EAAEA;UAA/C,CAA1B;UACA;;QACJ,KAAK,UAAL;UACI,KAAK+gE,WAAL,CAAiB/gE,OAAO,CAACw6C,QAAzB,EAAmCz6C,OAAO,CAACy6C,QAA3C;UACA,KAAK56D,MAAL,CAAYwvD,YAAZ,EAA0B;YAAEnsC,MAAM,EAAE,QAAV;YAAoBlD,OAAO,EAAEA,OAA7B;YAAsCC,OAAO,EAAEA;UAA/C,CAA1B;UACA;;QACJ,KAAK,qBAAL;UACI,KAAKpgB,MAAL,CAAYwvD,YAAZ,EAA0B;YAAEnsC,MAAM,EAAE,aAAV;YAAyBlD,OAAO,EAAEA,OAAlC;YAA2CC,OAAO,EAAEA;UAApD,CAA1B;UACA;;QACJ,KAAK,WAAL;UACI,KAAKnd,SAAL,GAAiBkd,OAAO,CAACld,SAAzB;UACA,KAAKknB,OAAL;UACA;;QACJ,KAAK,eAAL;UACI,KAAK43C,aAAL,GAAqB5hD,OAAO,CAAC4hD,aAA7B;UACA,KAAK53C,OAAL;UACA;;QACJ,KAAK,QAAL;UACIuJ,MAAM,GAAG,CAACvyC,uEAAiB,CAACg/B,OAAO,CAACuT,MAAT,CAAlB,GAAqCxsC,gEAAU,CAACi5B,OAAO,CAACuT,MAAT,CAA/C,GAAkEvT,OAAO,CAACuT,MAAnF;UACAne,uEAAiB,CAAC,KAAK7vB,OAAN,EAAe;YAAE,UAAUguC;UAAZ,CAAf,CAAjB;UACA,KAAK66C,YAAL;UACA,KAAKvuE,MAAL,CAAYwvD,YAAZ,EAA0B;YAAEnsC,MAAM,EAAE,QAAV;YAAoBlD,OAAO,EAAEA,OAA7B;YAAsCC,OAAO,EAAEA;UAA/C,CAA1B;UACA;;QACJ,KAAK,QAAL;UACI,IAAI,CAACj/B,uEAAiB,CAACg/B,OAAO,CAACld,SAAT,CAAtB,EAA2C;YACvC,KAAK2T,aAAL,CAAmB;cAAE3T,SAAS,EAAEkd,OAAO,CAACld;YAArB,CAAnB,EAAqD,IAArD;UACH;;UACD,KAAKmiF,oBAAL,CAA0BjlE,OAA1B;UACA;;QACJ,KAAK,wBAAL;UACI,KAAKmiE,cAAL;UACA,KAAKtiF,MAAL,CAAYwvD,YAAZ,EAA0B;YAAEnsC,MAAM,EAAE,gBAAV;YAA4BlD,OAAO,EAAEA,OAArC;YAA8CC,OAAO,EAAEA;UAAvD,CAA1B;UACA;;QACJ,KAAK,MAAL;UACI,KAAK8kE,OAAL;UACA;;QACJ,KAAK,gBAAL;UACI,IAAI,CAAC/jG,uEAAiB,CAACg/B,OAAO,CAAC81C,cAAR,CAAuByiB,mBAAxB,CAAtB,EAAoE;YAChE,KAAK9hE,aAAL,CAAmB;cAAEq/C,cAAc,EAAE;gBAAEyiB,mBAAmB,EAAEv4D,OAAO,CAAC81C,cAAR,CAAuByiB;cAA9C;YAAlB,CAAnB,EAA4G,IAA5G;UACH;;UACD,IAAIv3F,uEAAiB,CAACg/B,OAAO,CAAC81C,cAAR,CAAuBxsB,UAAxB,CAArB,EAA0D;YACtD,KAAK7yB,aAAL,CAAmB;cAAEq/C,cAAc,EAAE;gBAAExsB,UAAU,EAAEtpB,OAAO,CAAC81C,cAAR,CAAuBxsB;cAArC;YAAlB,CAAnB,EAA0F,IAA1F;UACH;;UACD,IAAItoD,uEAAiB,CAACg/B,OAAO,CAAC81C,cAAR,CAAuBC,UAAxB,CAArB,EAA0D;YACtD,KAAKt/C,aAAL,CAAmB;cAAEq/C,cAAc,EAAE;gBAAEC,UAAU,EAAE/1C,OAAO,CAAC81C,cAAR,CAAuBC;cAArC;YAAlB,CAAnB,EAA0F,IAA1F;UACH;;UACD,KAAKl2D,MAAL,CAAYwvD,YAAZ,EAA0B;YAAEnsC,MAAM,EAAE,eAAV;YAA2BlD,OAAO,EAAEA,OAApC;YAA6CC,OAAO,EAAEA;UAAtD,CAA1B;UACA;;QACJ,KAAK,eAAL;UACI,IAAI,KAAK82C,IAAL,KAAc,SAAlB,EAA6B;YACzB,KAAKl3D,MAAL,CAAYwvD,YAAZ,EAA0B;cAAEnsC,MAAM,EAAE,aAAV;cAAyBlD,OAAO,EAAEA,OAAlC;cAA2CC,OAAO,EAAEA;YAApD,CAA1B;UACH,CAFD,MAGK,IAAI,KAAK82C,IAAL,KAAc,YAAlB,EAAgC;YACjC,KAAKl3D,MAAL,CAAYwvD,YAAZ,EAA0B;cAAEnsC,MAAM,EAAE,gBAAV;cAA4BlD,OAAO,EAAEA,OAArC;cAA8CC,OAAO,EAAEA;YAAvD,CAA1B;UACH;;UACD;;QACJ,KAAK,mBAAL;UACI,KAAKpgB,MAAL,CAAYwvD,YAAZ,EAA0B;YAAEnsC,MAAM,EAAE,QAAV;YAAoBlD,OAAO,EAAEA,OAA7B;YAAsCC,OAAO,EAAEA;UAA/C,CAA1B;UACA;;QACJ,KAAK,iBAAL;UACI,KAAKpgB,MAAL,CAAYwvD,YAAZ,EAA0B;YAAEnsC,MAAM,EAAE,QAAV;YAAoBlD,OAAO,EAAEA,OAA7B;YAAsCC,OAAO,EAAEA;UAA/C,CAA1B;UACA;;QACJ,KAAK,eAAL;UACI,KAAKpgB,MAAL,CAAYwvD,YAAZ,EAA0B;YAAEnsC,MAAM,EAAE,gBAAV;YAA4BlD,OAAO,EAAEA,OAArC;YAA8CC,OAAO,EAAEA;UAAvD,CAA1B;UACA;;QACJ,KAAK,iBAAL;UACI,KAAKmuD,YAAL;UACA,KAAKvuE,MAAL,CAAYwvD,YAAZ,EAA0B;YAAEnsC,MAAM,EAAE,SAAV;YAAqBlD,OAAO,EAAEA,OAA9B;YAAuCC,OAAO,EAAEA;UAAhD,CAA1B;UACA;;QACJ,KAAK,gBAAL;UACI,KAAKkkE,cAAL;UACA;;QACJ,KAAK,MAAL;UACI,IAAInkE,OAAO,CAAC+2C,IAAR,KAAiB,SAArB,EAAgC;YAC5B,KAAKl3D,MAAL,CAAYwvD,YAAZ,EAA0B;cAAEnsC,MAAM,EAAE,aAAV;cAAyBlD,OAAO,EAAEA,OAAlC;cAA2CC,OAAO,EAAEA;YAApD,CAA1B;UACH,CAFD,MAGK,IAAID,OAAO,CAAC+2C,IAAR,KAAiB,YAArB,EAAmC;YACpC,KAAKl3D,MAAL,CAAYwvD,YAAZ,EAA0B;cAAEnsC,MAAM,EAAE,gBAAV;cAA4BlD,OAAO,EAAEA,OAArC;cAA8CC,OAAO,EAAEA;YAAvD,CAA1B;UACH;;UACD;;QACJ,KAAK,OAAL;UACI7K,uEAAiB,CAAC,KAAK7vB,OAAN,EAAe;YAAE,SAAS,CAACvE,uEAAiB,CAACg/B,OAAO,CAACsT,KAAT,CAAlB,GAAoCvsC,gEAAU,CAACi5B,OAAO,CAACsT,KAAT,CAA9C,GAAgEtT,OAAO,CAACsT;UAAnF,CAAf,CAAjB;UACA,KAAKzzB,MAAL,CAAYwvD,YAAZ,EAA0B;YAAEnsC,MAAM,EAAE,QAAV;YAAoBlD,OAAO,EAAEA,OAA7B;YAAsCC,OAAO,EAAEA;UAA/C,CAA1B;UACA;;QACJ,KAAK,WAAL;UACI+J,OAAO,CAAC,IAAD,CAAP;UACA,KAAKnqB,MAAL,CAAYkxD,YAAZ,EAA0B,EAA1B;UACA;;QACJ,KAAK,QAAL;UACI/mC,OAAO,CAAC,IAAD,CAAP;UACA,KAAKnqB,MAAL,CAAYkxD,YAAZ,EAA0B,EAA1B;;UACA,IAAI,KAAKgG,IAAL,KAAc,SAAlB,EAA6B;YACzB,KAAKl3D,MAAL,CAAYmyD,UAAZ,EAAwB,EAAxB;UACH;;UACD;;QACJ,KAAK,aAAL;UACI,IAAI,KAAKuwB,eAAT,EAA0B;YACtB,KAAKA,eAAL,CAAqB1nE,MAArB,GAA8BmF,OAAO,CAACkkD,WAAtC;UACH;;UACD,IAAI,KAAKjC,SAAT,EAAoB;YAChB,KAAKA,SAAL,CAAepnD,MAAf,GAAwBmF,OAAO,CAACkkD,WAAhC;UACH;;UACD,IAAI,KAAKM,YAAT,EAAuB;YACnB,KAAKA,YAAL,CAAkB3pD,MAAlB,GAA2BmF,OAAO,CAACkkD,WAAnC;UACH;;UACD,IAAI,KAAKkF,SAAT,EAAoB;YAChB,KAAKA,SAAL,CAAevuD,MAAf,GAAwBmF,OAAO,CAACkkD,WAAhC;UACH;;UACD;MA9HR;IAgIH;EACJ,CArID;EAsIA;;;EACAmb,WAAW,CAAC5gG,SAAZ,CAAsBumG,mBAAtB,GAA4C,UAAUhlE,OAAV,EAAmB;IAC3D,IAAI,CAACh/B,uEAAiB,CAACg/B,OAAO,CAACq4C,YAAR,CAAqBxvD,GAAtB,CAAtB,EAAkD;MAC9C,KAAK4N,aAAL,CAAmB;QAAE4hD,YAAY,EAAE;UAAExvD,GAAG,EAAEmX,OAAO,CAACq4C,YAAR,CAAqBxvD;QAA5B;MAAhB,CAAnB,EAAwE,IAAxE;IACH;;IACD,IAAI,CAAC7nB,uEAAiB,CAACg/B,OAAO,CAACq4C,YAAR,CAAqBsqB,SAAtB,CAAtB,EAAwD;MACpD,KAAKlsE,aAAL,CAAmB;QAAE4hD,YAAY,EAAE;UAAEsqB,SAAS,EAAE3iE,OAAO,CAACq4C,YAAR,CAAqBsqB;QAAlC;MAAhB,CAAnB,EAAoF,IAApF;IACH;;IACD,IAAI,CAAC3hG,uEAAiB,CAACg/B,OAAO,CAACq4C,YAAR,CAAqBwK,WAAtB,CAAtB,EAA0D;MACtD,KAAKpsD,aAAL,CAAmB;QAAE4hD,YAAY,EAAE;UAAEwK,WAAW,EAAE7iD,OAAO,CAACq4C,YAAR,CAAqBwK;QAApC;MAAhB,CAAnB,EAAwF,IAAxF;IACH;;IACD,IAAI,CAAC7hF,uEAAiB,CAACg/B,OAAO,CAACq4C,YAAR,CAAqBF,WAAtB,CAAtB,EAA0D;MACtD,KAAK1hD,aAAL,CAAmB;QAAE4hD,YAAY,EAAE;UAAEF,WAAW,EAAEn4C,OAAO,CAACq4C,YAAR,CAAqBF;QAApC;MAAhB,CAAnB,EAAwF,IAAxF;IACH;;IACD,KAAK1hD,aAAL,CAAmB;MAAE28C,IAAI,EAAE;IAAR,CAAnB,EAAkC,IAAlC;IACA,KAAK38C,aAAL,CAAmB;MAAEg/C,aAAa,EAAE;IAAjB,CAAnB,EAA0C,IAA1C;;IACA73C,MAAM,CAACn/B,SAAP,CAAiBurC,OAAjB,CAAyBtlC,IAAzB,CAA8B,IAA9B;EACH,CAhBD;EAiBA;;;EACA26F,WAAW,CAAC5gG,SAAZ,CAAsBwmG,oBAAtB,GAA6C,UAAUjlE,OAAV,EAAmB;IAC5D,KAAKq+C,SAAL,CAAep7D,MAAf,GAAwB+c,OAAO,CAAC/c,MAAhC;;IACA2a,MAAM,CAACn/B,SAAP,CAAiBurC,OAAjB,CAAyBtlC,IAAzB,CAA8B,IAA9B;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;;;EACI26F,WAAW,CAAC5gG,SAAZ,CAAsBwiB,OAAtB,GAAgC,YAAY;IACxC,IAAI,KAAKyV,WAAT,EAAsB;MAClB;IACH;;IACD,IAAI,CAAC,KAAKN,UAAV,EAAsB;MAClB,KAAKvW,MAAL,CAAYoB,OAAZ,EAAqB,EAArB;IACH;;IACD,KAAKo9D,SAAL,CAAep9D,OAAf;IACA,KAAKo9D,SAAL,GAAiB,IAAjB;IACA,KAAKkkB,eAAL,CAAqBthF,OAArB;IACA,KAAKshF,eAAL,GAAuB,IAAvB;IACA,KAAKzB,WAAL,CAAiB7/E,OAAjB;IACA,KAAK6/E,WAAL,GAAmB,IAAnB;;IACA,IAAI,KAAK7e,SAAT,EAAoB;MAChB,KAAKA,SAAL,CAAehhE,OAAf;MACA,KAAKghE,SAAL,GAAiB,IAAjB;IACH;;IACD,IAAI,KAAKmH,SAAT,EAAoB;MAChB,KAAKA,SAAL,CAAenoE,OAAf;MACA,KAAKmoE,SAAL,GAAiB,IAAjB;IACH;;IACD,IAAI,KAAK5E,YAAT,EAAuB;MACnB,KAAKA,YAAL,CAAkBvjE,OAAlB;MACA,KAAKujE,YAAL,GAAoB,IAApB;IACH;;IACD,KAAKj/E,OAAL,CAAau5B,eAAb,CAA6B,OAA7B;IACA,KAAKv5B,OAAL,CAAau5B,eAAb,CAA6B,UAA7B;IACA,KAAKgmE,oBAAL;IACA,KAAK1X,YAAL;IACA,KAAK4T,WAAL,CAAiB,KAAKvmB,QAAtB,EAAgC,IAAhC;IACAtoD,iEAAW,CAAC,CAAC,KAAK5sB,OAAN,CAAD,EAAiB,CAACopE,GAAD,EAAM3E,MAAN,EAAcF,YAAd,CAAjB,CAAX;IACA,KAAKvkE,OAAL,CAAaiB,SAAb,GAAyB,EAAzB;;IACAo3B,MAAM,CAACn/B,SAAP,CAAiBwiB,OAAjB,CAAyBvc,IAAzB,CAA8B,IAA9B;EACH,CAjCD;EAkCA;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACI26F,WAAW,CAAC5gG,SAAZ,CAAsB6hF,YAAtB,GAAqC,UAAUrgE,IAAV,EAAgB;IACjD,KAAKJ,MAAL,CAAY8yD,UAAZ,EAAwB;MAAEh4C,MAAM,EAAE;IAAV,CAAxB,EADiD,CAEjD;;IACA,IAAIqlD,OAAO,GAAG,CAAC/J,aAAa,CAAC,IAAD,CAAd,CAAd;IACA,KAAKD,QAAL,GAAgBgK,OAAhB;;IACA,IAAI//D,IAAJ,EAAU;MACN,IAAI,eAAetQ,IAAf,CAAoBsQ,IAApB,CAAJ,EAA+B;QAC3B,IAAIxd,MAAM,GAAG;UACT8zE,KAAK,EAAE,IADE;UAET7rD,KAAK,EAAE;YACHmxD,IAAI,EAAE,KADH;YAEH32E,OAAO,EAAE00E,aAAa,CAAC,IAAD,EAAO,oBAAP,CAAb,CAA0Cv5E,OAA1C,CAAkD,KAAlD,EAAyD,MAAM4f,IAAN,GAAa,GAAtE,CAFN;YAGH67D,UAAU,EAAE;UAHT;QAFE,CAAb;QAQAC,YAAY,CAAC,IAAD,EAAO,OAAP,EAAgBt5E,MAAhB,CAAZ;MACH,CAVD,MAWK;QACD,IAAI,CAACo9E,gBAAgB,CAACG,OAAO,CAAC,CAAD,CAAR,CAArB,EAAmC;UAC/B3I,kBAAkB,CAAC,IAAD,EAAO2I,OAAO,CAAC,CAAD,CAAd,EAAmBlN,sBAAnB,CAAlB;QACH,CAFD,MAGK;UACDwN,YAAY,CAAC,IAAD,EAAOrgE,IAAP,CAAZ;QACH;MACJ;IACJ,CApBD,MAqBK;MACD8/D,eAAe,CAAC,IAAD,CAAf;IACH;EACJ,CA7BD;EA8BA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIsf,WAAW,CAAC5gG,SAAZ,CAAsBi5F,WAAtB,GAAoC,UAAU7jB,GAAV,EAAe;IAC/C,KAAKh0D,MAAL,CAAY8yD,UAAZ,EAAwB;MAAEh4C,MAAM,EAAE,aAAV;MAAyBk5C,GAAG,EAAEA;IAA9B,CAAxB;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;;;EACIwrB,WAAW,CAAC5gG,SAAZ,CAAsBymG,mBAAtB,GAA4C,UAAU52C,KAAV,EAAiB;IACzD,IAAI,CAACttD,uEAAiB,CAACstD,KAAD,CAAtB,EAA+B;MAC3B,KAAK62C,aAAL,CAAmBlH,WAAnB,CAA+B3vC,KAA/B,EAAsC,KAAtC;IACH;EACJ,CAJD;EAKA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI+wC,WAAW,CAAC5gG,SAAZ,CAAsBk5F,aAAtB,GAAsC,UAAU9jB,GAAV,EAAe;IACjD,KAAKh0D,MAAL,CAAY8yD,UAAZ,EAAwB;MAAEh4C,MAAM,EAAE,eAAV;MAA2Bk5C,GAAG,EAAEA;IAAhC,CAAxB;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;;;EACIwrB,WAAW,CAAC5gG,SAAZ,CAAsB2mG,kBAAtB,GAA2C,UAAU92C,KAAV,EAAiB;IACxD,IAAI,CAACttD,uEAAiB,CAACstD,KAAD,CAAtB,EAA+B;MAC3B,KAAK62C,aAAL,CAAmBlH,WAAnB,CAA+B3vC,KAA/B,EAAsC,IAAtC;IACH;EACJ,CAJD;EAKA;AACJ;AACA;AACA;AACA;AACA;;;EACI+wC,WAAW,CAAC5gG,SAAZ,CAAsB4mG,gBAAtB,GAAyC,UAAU/2C,KAAV,EAAiB;IACtD,IAAI,CAACttD,uEAAiB,CAACstD,KAAD,CAAlB,IAA6B,CAACttD,uEAAiB,CAAC,KAAKskG,iBAAL,CAAuB7I,WAAxB,CAAnD,EAAyF;MACrF,KAAK6I,iBAAL,CAAuBlH,WAAvB,CAAmC9vC,KAAnC;IACH;EACJ,CAJD;EAKA;AACJ;AACA;AACA;AACA;AACA;;;EACI+wC,WAAW,CAAC5gG,SAAZ,CAAsB8mG,gBAAtB,GAAyC,UAAUh/C,IAAV,EAAgB;IACrD,IAAI,KAAK++C,iBAAT,EAA4B;MACxB,OAAO,KAAKA,iBAAL,CAAuBpH,YAAvB,CAAoC33C,IAApC,CAAP;IACH,CAFD,MAGK;MACD,OAAO,CAAC,CAAR;IACH;EACJ,CAPD;EAQA;AACJ;AACA;AACA;AACA;AACA;;;EACI84C,WAAW,CAAC5gG,SAAZ,CAAsB+mG,mBAAtB,GAA4C,UAAUj/C,IAAV,EAAgB;IACxD,IAAI,KAAK4+C,aAAT,EAAwB;MACpB,OAAO,KAAKA,aAAL,CAAmBjH,YAAnB,CAAgC33C,IAAhC,CAAP;IACH,CAFD,MAGK;MACD,OAAO,CAAC,CAAR;IACH;EACJ,CAPD;EAQA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACI;;;EACA84C,WAAW,CAAC5gG,SAAZ,CAAsBgnG,WAAtB,GAAoC,UAAUhlB,UAAV,EAAsB;IACtD,KAAKA,UAAL,GAAkBA,UAAU,GAAGA,UAAH,GAAgB,IAA5C;IACA,KAAKhqD,aAAL,CAAmB;MAAEg/C,aAAa,EAAE;IAAjB,CAAnB,EAA0C,IAA1C;IACA,KAAK51D,MAAL,CAAY6wD,gBAAZ,EAA8B,EAA9B;IACA,KAAK6E,UAAL,GAAkB,IAAlB;;IACA,IAAI,KAAKF,mBAAL,CAAyBC,SAAzB,CAAmC/vE,OAAnC,CAA2CpF,KAA3C,KAAqD,EAAzD,EAA6D;MACzD,KAAKk1E,mBAAL,CAAyBC,SAAzB,CAAmC/vE,OAAnC,CAA2CpF,KAA3C,GAAmD,EAAnD;IACH;;IACD03B,MAAM,CAAC,IAAD,EAAO43C,SAAP,CAAN;EACH,CATD;EAUA;AACJ;AACA;AACA;AACA;EACI;;;EACA4vB,WAAW,CAAC5gG,SAAZ,CAAsBinG,gBAAtB,GAAyC,YAAY;IACjD,KAAK7lF,MAAL,CAAY6yD,mBAAZ,EAAiC,EAAjC;IACA,OAAO,KAAKsD,QAAZ;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIqpB,WAAW,CAAC5gG,SAAZ,CAAsBm5F,QAAtB,GAAiC,UAAUjqF,EAAV,EAAc;IAC3C,KAAKkS,MAAL,CAAY8yD,UAAZ,EAAwB;MAAEh4C,MAAM,EAAE,UAAV;MAAsBhtB,EAAE,EAAEA;IAA1B,CAAxB;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;;;EACI0xF,WAAW,CAAC5gG,SAAZ,CAAsBknG,YAAtB,GAAqC,YAAY;IAC7C37D,OAAO,CAAC,IAAD,CAAP;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;;;EACIq1D,WAAW,CAAC5gG,SAAZ,CAAsBmnG,aAAtB,GAAsC,YAAY;IAC9C,KAAKxX,YAAL;IACA,KAAKvuE,MAAL,CAAYywD,aAAZ,EAA2B,EAA3B;EACH,CAHD;EAIA;AACJ;AACA;AACA;AACA;;;EACI+uB,WAAW,CAAC5gG,SAAZ,CAAsBw1B,SAAtB,GAAkC,YAAY;IAC1C,KAAKpU,MAAL,CAAY8yD,UAAZ,EAAwB;MAAEh4C,MAAM,EAAE;IAAV,CAAxB;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;;;EACI0kE,WAAW,CAAC5gG,SAAZ,CAAsB0zF,cAAtB,GAAuC,YAAY;IAC/C,KAAKtyE,MAAL,CAAY8yD,UAAZ,EAAwB;MAAEh4C,MAAM,EAAE;IAAV,CAAxB;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACI0kE,WAAW,CAAC5gG,SAAZ,CAAsBo5F,UAAtB,GAAmC,UAAUlqF,EAAV,EAAcsS,IAAd,EAAoB;IACnD,KAAKJ,MAAL,CAAY8yD,UAAZ,EAAwB;MAAEh4C,MAAM,EAAE,YAAV;MAAwBhtB,EAAE,EAAEA,EAA5B;MAAgCmzE,OAAO,EAAE7gE;IAAzC,CAAxB;EACH,CAFD;EAGA;AACJ;AACA;AACA;AACA;;;EACIo/E,WAAW,CAAC5gG,SAAZ,CAAsBonG,WAAtB,GAAoC,YAAY;IAC5C;IACA,IAAI7lB,OAAO,GAAG,CAAC/J,aAAa,CAAC,IAAD,CAAd,CAAd;IACA,KAAKD,QAAL,GAAgBgK,OAAhB;IACAC,UAAU,CAAC,IAAD,CAAV;EACH,CALD;EAMA;AACJ;AACA;AACA;AACA;AACA;;;EACIof,WAAW,CAAC5gG,SAAZ,CAAsBmiG,MAAtB,GAA+B,UAAUkF,GAAV,EAAe;IAC1C,IAAIA,GAAJ,EAAS;MACL,KAAK9E,WAAL,CAAiB,IAAjB,EAAuBryB,GAAvB;IACH,CAFD,MAGK;MACD,KAAKqyB,WAAL,CAAiBryB,GAAjB,EAAsB,IAAtB;IACH;;IACD,IAAI,KAAK0P,SAAT,EAAoB;MAChB,KAAKkkB,eAAL,CAAqBz/E,SAArB,GAAiCgjF,GAAjC;MACA,KAAKznB,SAAL,CAAev7D,SAAf,GAA2BgjF,GAA3B;IACH;EACJ,CAXD;;EAYA,IAAIjG,aAAJ;;EACAT,YAAY,CAAC,CACTpkE,6DAAO,CAAC,EAAD,EAAKisC,YAAL,CADE,CAAD,EAETo4B,WAAW,CAAC5gG,SAFH,EAEc,cAFd,EAE8B,KAAK,CAFnC,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,KAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,kBAFd,EAEkC,KAAK,CAFvC,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,IAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,qBAFd,EAEqC,KAAK,CAF1C,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,IAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,oBAFd,EAEoC,KAAK,CAFzC,CAAZ;;EAGA2gG,YAAY,CAAC,CACTpkE,6DAAO,CAAC,EAAD,EAAK+sC,mBAAL,CADE,CAAD,EAETs3B,WAAW,CAAC5gG,SAFH,EAEc,qBAFd,EAEqC,KAAK,CAF1C,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,EAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,UAFd,EAE0B,KAAK,CAF/B,CAAZ;;EAGA2gG,YAAY,CAAC,CACTpkE,6DAAO,CAAC,EAAD,EAAK2sC,mBAAL,CADE,CAAD,EAET03B,WAAW,CAAC5gG,SAFH,EAEc,qBAFd,EAEqC,KAAK,CAF1C,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,IAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,qBAFd,EAEqC,KAAK,CAF1C,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,KAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,mBAFd,EAEmC,KAAK,CAFxC,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,KAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,sBAFd,EAEsC,KAAK,CAF3C,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,OAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,QAFd,EAEwB,KAAK,CAF7B,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,YAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,MAFd,EAEsB,KAAK,CAF3B,CAAZ;;EAGA2gG,YAAY,CAAC,CACTpkE,6DAAO,CAAC,EAAD,EAAKgtC,sBAAL,CADE,CAAD,EAETq3B,WAAW,CAAC5gG,SAFH,EAEc,wBAFd,EAEwC,KAAK,CAF7C,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,GAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,MAFd,EAEsB,KAAK,CAF3B,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,IAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,aAFd,EAE6B,KAAK,CAFlC,CAAZ;;EAGA2gG,YAAY,CAAC,CACTpkE,6DAAO,CAAC,EAAD,EAAKosC,cAAL,CADE,CAAD,EAETi4B,WAAW,CAAC5gG,SAFH,EAEc,gBAFd,EAEgC,KAAK,CAFrC,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,EADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,eAFd,EAE+B,KAAK,CAFpC,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,IAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,mBAFd,EAEmC,KAAK,CAFxC,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,IAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,eAFd,EAE+B,KAAK,CAFpC,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,KAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,iBAFd,EAEiC,KAAK,CAFtC,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,IAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,eAFd,EAE+B,KAAK,CAFpC,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,WAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,WAFd,EAE2B,KAAK,CAFhC,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,MAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,QAFd,EAEwB,KAAK,CAF7B,CAAZ;;EAGA2gG,YAAY,CAAC,CACTpkE,6DAAO,CAAC,EAAD,EAAKmsC,eAAL,CADE,CAAD,EAETk4B,WAAW,CAAC5gG,SAFH,EAEc,iBAFd,EAEiC,KAAK,CAFtC,CAAZ;;EAGA2gG,YAAY,CAAC,CACTpkE,6DAAO,CAAC,EAAD,EAAKmtC,cAAL,CADE,CAAD,EAETk3B,WAAW,CAAC5gG,SAFH,EAEc,gBAFd,EAEgC,KAAK,CAFrC,CAAZ;;EAGA2gG,YAAY,CAAC,CACTxkE,8DAAQ,CAAC,MAAD,CADC,CAAD,EAETykE,WAAW,CAAC5gG,SAFH,EAEc,OAFd,EAEuB,KAAK,CAF5B,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,UAFd,EAE0B,KAAK,CAF/B,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,UAFd,EAE0B,KAAK,CAF/B,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,gBAFd,EAEgC,KAAK,CAFrC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,iBAFd,EAEiC,KAAK,CAFtC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,kBAFd,EAEkC,KAAK,CAFvC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,iBAFd,EAEiC,KAAK,CAFtC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,YAFd,EAE4B,KAAK,CAFjC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,SAFd,EAEyB,KAAK,CAF9B,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,WAFd,EAE2B,KAAK,CAFhC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,eAFd,EAE+B,KAAK,CAFpC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,cAFd,EAE8B,KAAK,CAFnC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,cAFd,EAE8B,KAAK,CAFnC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,aAFd,EAE6B,KAAK,CAFlC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,eAFd,EAE+B,KAAK,CAFpC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,YAFd,EAE4B,KAAK,CAFjC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,WAFd,EAE2B,KAAK,CAFhC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,UAFd,EAE0B,KAAK,CAF/B,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,SAFd,EAEyB,KAAK,CAF9B,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,YAFd,EAE4B,KAAK,CAFjC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,WAFd,EAE2B,KAAK,CAFhC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,SAFd,EAEyB,KAAK,CAF9B,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,cAFd,EAE8B,KAAK,CAFnC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,eAFd,EAE+B,KAAK,CAFpC,CAAZ;;EAGA2gG,YAAY,CAAC,CACT/7F,2DAAK,EADI,CAAD,EAETg8F,WAAW,CAAC5gG,SAFH,EAEc,kBAFd,EAEkC,KAAK,CAFvC,CAAZ;;EAGA4gG,WAAW,GAAGQ,aAAa,GAAGT,YAAY,CAAC,CACvC5jE,uEADuC,CAAD,EAEvC6jE,WAFuC,CAA1C;EAGA,OAAOA,WAAP;AACH,CArtC0C,CAqtCzCh2D,2DArtCyC,CAA3C;AAutCA;AACA;AACA;;AAEA;AACA;AACA;;;AACA,IAAI08D,SAAS;AAAG;AAAyB,YAAY;EACjD;AACJ;AACA;AACA;AACA;AACA;AACA;EACI,SAASC,UAAT,CAAoBnhG,MAApB,EAA4B;IACxB,KAAKohG,OAAL,GAAe,CAAC,QAAD,EAAW,QAAX,EAAqB,UAArB,EAAiC,KAAjC,EAAwC,MAAxC,EAAgD,OAAhD,CAAf;IACA,KAAKC,MAAL,GAAc,CAAC,QAAD,EAAW,QAAX,EAAqB,UAArB,EAAiC,KAAjC,EAAwC,MAAxC,CAAd;IACA,KAAKC,QAAL,GAAgB,CAAC,QAAD,EAAW,UAAX,EAAuB,KAAvB,EAA8B,MAA9B,EAAsC,SAAtC,CAAhB;IACA,KAAKC,SAAL,GAAiB,CAAC,WAAD,EAAc,QAAd,EAAwB,QAAxB,EAAkC,SAAlC,CAAjB;IACA,KAAKvhG,MAAL,GAAcA,MAAd;IACA,KAAKslC,MAAL;IACA,KAAKtqC,gBAAL;EACH;;EACDmmG,UAAU,CAACvnG,SAAX,CAAqB0rC,MAArB,GAA8B,YAAY;IACtC,IAAItmC,KAAK,GAAG,IAAZ;;IACA,KAAKyqD,KAAL,GAAa,KAAK+3C,eAAL,CAAqB,KAAKC,QAAL,CAAc,KAAKzhG,MAAL,CAAY47F,eAAZ,CAA4BnyC,KAA5B,CAAkCnlD,GAAlC,CAAsC,UAAUo9C,IAAV,EAAgB;MAAE,OAAOA,IAAI,CAACxL,IAAL,EAAP;IAAqB,CAA7E,CAAd,CAArB,CAAb;IACA,IAAIhyB,SAAS,GAAG;MAAEulC,KAAK,EAAE,KAAKA;IAAd,CAAhB;IACA,KAAKzpD,MAAL,CAAY+rB,OAAZ,CAAoB,eAApB,EAAqC7H,SAArC,EAAgD,UAAUw9E,iBAAV,EAA6B;MACzE1iG,KAAK,CAACyqD,KAAN,GAAci4C,iBAAiB,CAACj4C,KAAhC;MACAzqD,KAAK,CAAC2iG,UAAN,GAAmB,IAAI9/B,gEAAJ,CAAY;QAC3BpY,KAAK,EAAEzqD,KAAK,CAACyqD,KADc;QAE3Bm4C,OAAO,EAAE5iG,KAAK,CAAC6iG,oBAAN,CAA2BhoG,IAA3B,CAAgCmF,KAAhC,CAFkB;QAG3B8iG,YAAY,EAAE,OAHa;QAI3BC,OAAO,EAAE/iG,KAAK,CAACgjG,SAAN,CAAgBnoG,IAAhB,CAAqBmF,KAArB,CAJkB;QAK3BsgF,mBAAmB,EAAEtgF,KAAK,CAACgB,MAAN,CAAas/E,mBALP;QAM3BrhE,SAAS,EAAEjf,KAAK,CAACgB,MAAN,CAAaie;MANG,CAAZ,CAAnB;MAQAjf,KAAK,CAAC2iG,UAAN,CAAiBj9D,gBAAjB,GAAoC,IAApC;;MACA1lC,KAAK,CAAC2iG,UAAN,CAAiB38D,QAAjB,CAA0B,MAAMhmC,KAAK,CAACgB,MAAN,CAAaU,OAAb,CAAqBoI,EAA3B,GAAgC46D,UAA1D;IACH,CAZD;EAaH,CAjBD;;EAkBAy9B,UAAU,CAACvnG,SAAX,CAAqBy/F,YAArB,GAAoC,UAAU33C,IAAV,EAAgB;IAChD,IAAI43C,MAAM,GAAG,KAAK2I,KAAL,CAAWvgD,IAAX,CAAb;;IACA,KAAK,IAAIhmD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK+tD,KAAL,CAAW1uD,MAA/B,EAAuCW,CAAC,EAAxC,EAA4C;MACxC,IAAI,KAAK+tD,KAAL,CAAW/tD,CAAX,EAAcoN,EAAd,KAAqBwwF,MAAzB,EAAiC;QAC7B,OAAO59F,CAAP;MACH;IACJ;;IACD,OAAO,CAAC,CAAR;EACH,CARD;;EASAylG,UAAU,CAACvnG,SAAX,CAAqB6nG,QAArB,GAAgC,UAAUh4C,KAAV,EAAiB;IAC7C,IAAIy4C,SAAS,GAAGz4C,KAAK,CAAC1oD,KAAN,EAAhB;;IACA,IAAI,KAAKf,MAAL,CAAYmpB,QAAZ,IAAwB,KAAKnpB,MAAL,CAAYuuF,mBAAxC,EAA6D;MACzD2T,SAAS,CAAC1iG,IAAV,CAAe,WAAf;IACH;;IACD,OAAO0iG,SAAP;EACH,CAND;EAOA;;;EACAf,UAAU,CAACvnG,SAAX,CAAqBooG,SAArB,GAAiC,UAAU/iG,IAAV,EAAgB;IAC7C,IAAID,KAAK,GAAG,IAAZ;;IACA,IAAI7C,uEAAiB,CAAC8C,IAAI,CAACyiD,IAAN,CAAjB,IAAgC,CAACziD,IAAI,CAACyiD,IAAL,CAAU54C,EAA/C,EAAmD;MAC/C;IACH;;IACD,IAAIq5F,IAAI,GAAGljG,IAAI,CAACyiD,IAAL,CAAU54C,EAAV,CAAawE,MAAb,CAAoB,CAAC,KAAKtN,MAAL,CAAYU,OAAZ,CAAoBoI,EAApB,GAAyB,MAA1B,EAAkC/N,MAAtD,CAAX,CAL6C,CAM7C;;IACA,IAAIogF,OAAJ;;IACA,IAAIgnB,IAAI,KAAK,SAAT,IAAsBA,IAAI,KAAK,WAA/B,IAA8CA,IAAI,KAAK,QAA3D,EAAqE;MACjEhnB,OAAO,GAAG,CAAC/J,aAAa,CAAC,KAAKpxE,MAAN,CAAd,CAAV;MACA,KAAKA,MAAL,CAAYmxE,QAAZ,GAAuBgK,OAAvB;IACH,CAHD,MAIK;MACD,KAAKn7E,MAAL,CAAYgb,MAAZ,CAAmB2xD,YAAnB,EAAiC,EAAjC;MACAwO,OAAO,GAAG,KAAKn7E,MAAL,CAAYmxE,QAAtB;IACH;;IACD,IAAIjtD,SAAS,GAAG;MAAEC,MAAM,EAAE,KAAV;MAAiB2vD,WAAW,EAAEqH,OAA9B;MAAuCz5B,IAAI,EAAEziD,IAAI,CAACyiD;IAAlD,CAAhB;IACA,KAAK1hD,MAAL,CAAY+rB,OAAZ,CAAoB,cAApB,EAAoC7H,SAApC,EAA+C,UAAUk+E,gBAAV,EAA4B;MACvE,IAAIlI,MAAJ;MACA,IAAIlkE,MAAJ;;MACA,IAAI,CAACosE,gBAAgB,CAACj+E,MAAtB,EAA8B;QAC1B,QAAQg+E,IAAR;UACI,KAAK,QAAL;YACInsE,MAAM,GAAGrG,6DAAO,CAAC1wB,IAAI,CAACi6C,aAAL,CAAmBljB,MAApB,EAA4B,MAAM2vC,OAAlC,CAAhB;;YACA,IAAI3vC,MAAM,IAAIA,MAAM,CAACjJ,SAAP,CAAiBM,QAAjB,CAA0B,iBAA1B,CAAd,EAA4D;cACxDpuB,IAAI,CAACklB,MAAL,GAAc,IAAd;YACH;;YACD;;UACJ,KAAK,WAAL;YACI+2D,eAAe,CAACl8E,KAAK,CAACgB,MAAP,CAAf;YACA;;UACJ,KAAK,KAAL;YACI4yE,QAAQ,CAAC5zE,KAAK,CAACgB,MAAP,CAAR;YACA;;UACJ,KAAK,MAAL;YACI0yE,SAAS,CAAC1zE,KAAK,CAACgB,MAAP,CAAT;YACA;;UACJ,KAAK,QAAL;YACI,KAAK,IAAItE,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGy/E,OAAO,CAACpgF,MAA5B,EAAoCW,CAAC,EAArC,EAAyC;cACrC,IAAI,CAAC4+E,aAAa,CAACa,OAAO,CAACz/E,CAAD,CAAR,CAAlB,EAAgC;gBAC5B82E,kBAAkB,CAACxzE,KAAK,CAACgB,MAAP,EAAem7E,OAAO,CAACz/E,CAAD,CAAtB,EAA2BsyE,cAA3B,CAAlB;gBACA;cACH;YACJ;;YACDkJ,YAAY,CAACl4E,KAAK,CAACgB,MAAP,EAAe,QAAf,CAAZ;YACA;;UACJ,KAAK,SAAL;YACIhB,KAAK,CAACgB,MAAN,CAAagb,MAAb,CAAoBoxD,WAApB,EAAiC,EAAjC;;YACA8tB,MAAM,GAAGl7F,KAAK,CAACgB,MAAN,CAAa4wE,aAAtB;;YACA,IAAI5xE,KAAK,CAACgB,MAAN,CAAakwE,YAAb,KAA8B,gBAAlC,EAAoD;cAChDgqB,MAAM,GAAG,EAAT;YACH;;YACDxd,UAAU,CAAC19E,KAAK,CAACgB,MAAP,EAAek6F,MAAf,EAAuBl7F,KAAK,CAACgB,MAAN,CAAauuE,IAApC,EAA0C,SAA1C,CAAV;YACA;;UACJ,KAAK,OAAL;YACIvvE,KAAK,CAACgB,MAAN,CAAa42E,UAAb,GAA0B,EAA1B;YACAF,YAAY,CAAC13E,KAAK,CAACgB,MAAP,CAAZ;YACA;;UACJ,KAAK,SAAL;YACImlC,OAAO,CAACnmC,KAAK,CAACgB,MAAP,CAAP;YACA;;UACJ,KAAK,UAAL;YACIu6E,UAAU,CAACv7E,KAAK,CAACgB,MAAP,CAAV;YACA;;UACJ,KAAK,QAAL;YACI,IAAI,CAACs6E,aAAa,CAACa,OAAO,CAAC,CAAD,CAAR,CAAlB,EAAgC;cAC5B3I,kBAAkB,CAACxzE,KAAK,CAACgB,MAAP,EAAem7E,OAAO,CAAC,CAAD,CAAtB,EAA2BnN,cAA3B,CAAlB;YACH,CAFD,MAGK;cACDhvE,KAAK,CAACgB,MAAN,CAAagb,MAAb,CAAoBsxD,UAApB,EAAgC,EAAhC;;cACA4K,YAAY,CAACl4E,KAAK,CAACgB,MAAP,EAAe,QAAf,CAAZ;YACH;;YACD;;UACJ,KAAK,QAAL;YACIo7E,UAAU,CAACp8E,KAAK,CAACgB,MAAP,CAAV;YACA;;UACJ,KAAK,WAAL;YACIhB,KAAK,CAACgB,MAAN,CAAagb,MAAb,CAAoB8wD,aAApB,EAAmC,EAAnC;;YACA;;UACJ,KAAK,WAAL;YACI9sE,KAAK,CAACgB,MAAN,CAAagb,MAAb,CAAoB+wD,YAApB,EAAkC,EAAlC;;YACA;QA5DR;MA8DH;IACJ,CAnED;EAoEH,CArFD;;EAsFAo1B,UAAU,CAACvnG,SAAX,CAAqBioG,oBAArB,GAA4C,YAAY;IACpD,IAAI,CAAC1lG,uEAAiB,CAAC6yB,4DAAM,CAAC,MAAM,KAAKizE,KAAL,CAAW,QAAX,CAAP,EAA6B,KAAKjiG,MAAL,CAAYU,OAAzC,CAAP,CAAtB,EAAiF;MAC7E,IAAI+oD,KAAK,GAAG,CACR;QAAE3gD,EAAE,EAAE,KAAKu5F,UAAL,CAAgB,MAAhB,CAAN;QAA+BxvF,IAAI,EAAEkiE,aAAa,CAAC,KAAK/0E,MAAN,EAAc,MAAd,CAAlD;QACIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYmlD,MAAZ,KAAuB,MAAvB,GAAgC6gB,aAAhC,GAAgD;MAD7D,CADQ,EAGR;QAAEl9D,EAAE,EAAE,KAAKu5F,UAAL,CAAgB,MAAhB,CAAN;QAA+BxvF,IAAI,EAAEkiE,aAAa,CAAC,KAAK/0E,MAAN,EAAc,MAAd,CAAlD;QACIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYmlD,MAAZ,KAAuB,MAAvB,GAAgC6gB,aAAhC,GAAgD;MAD7D,CAHQ,EAKR;QAAEl9D,EAAE,EAAE,KAAKu5F,UAAL,CAAgB,MAAhB,CAAN;QAA+BxvF,IAAI,EAAEkiE,aAAa,CAAC,KAAK/0E,MAAN,EAAc,cAAd,CAAlD;QACIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYmlD,MAAZ,KAAuB,cAAvB,GAAwC6gB,aAAxC,GAAwD;MADrE,CALQ,EAOR;QAAEo0B,SAAS,EAAE;MAAb,CAPQ,EAQR;QAAEtxF,EAAE,EAAE,KAAKu5F,UAAL,CAAgB,WAAhB,CAAN;QAAoCxvF,IAAI,EAAEkiE,aAAa,CAAC,KAAK/0E,MAAN,EAAc,WAAd,CAAvD;QACIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYo0E,SAAZ,KAA0B,WAA1B,GAAwCrO,cAAxC,GAAyD;MADtE,CARQ,EAUR;QAAEj9D,EAAE,EAAE,KAAKu5F,UAAL,CAAgB,YAAhB,CAAN;QAAqCxvF,IAAI,EAAEkiE,aAAa,CAAC,KAAK/0E,MAAN,EAAc,YAAd,CAAxD;QACIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYo0E,SAAZ,KAA0B,YAA1B,GAAyCrO,cAAzC,GAA0D;MADvE,CAVQ,EAYR;QAAEj9D,EAAE,EAAE,KAAKu5F,UAAL,CAAgB,MAAhB,CAAN;QAA+BxvF,IAAI,EAAEkiE,aAAa,CAAC,KAAK/0E,MAAN,EAAc,MAAd,CAAlD;QACIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYo0E,SAAZ,KAA0B,MAA1B,GAAmCrO,cAAnC,GAAoD;MADjE,CAZQ,CAAZ;MAeA,KAAKu8B,SAAL,GAAiB,IAAI3gC,wEAAJ,CAAmB;QAChClY,KAAK,EAAEA,KADyB;QAClBmsB,QAAQ,EAAEF,WAAW,CAAC,KAAK11E,MAAN,EAAcklE,UAAd,CADH;QAEhCl2C,MAAM,EAAE6mD,kBAAkB,CAACh8E,IAAnB,CAAwB,IAAxB,EAA8B,KAAKmG,MAAnC,CAFwB;QAGhCs/E,mBAAmB,EAAE,KAAKt/E,MAAL,CAAYs/E,mBAHD;QAIhCrhE,SAAS,EAAE,KAAKje,MAAL,CAAYie,SAJS;QAIEgrE,OAAO,EAAEpgB;MAJX,CAAnB,CAAjB;MAMA,KAAKy5B,SAAL,CAAe59D,gBAAf,GAAkC,IAAlC;MACA,KAAK49D,SAAL,CAAet9D,QAAf,CAAwB,MAAM,KAAKi9D,KAAL,CAAW,QAAX,CAA9B;IACH;;IACD,IAAI,CAAC9lG,uEAAiB,CAAC6yB,4DAAM,CAAC,MAAM,KAAKizE,KAAL,CAAW,MAAX,CAAP,EAA2B,KAAKjiG,MAAL,CAAYU,OAAvC,CAAP,CAAtB,EAA+E;MAC3E,IAAI6hG,QAAQ,GAAG,kBAAkBr5B,SAAlB,GAA8B,GAA9B,GAAoCnB,SAApC,GAAgD,WAA/D;MACA,IAAIy6B,aAAa,GAAG,kBAAkBr5B,UAAlB,GAA+B,GAA/B,GAAqCpB,SAArC,GAAiD,WAArE;MACA,IAAI9E,WAAW,GAAG,CACd;QACIn6D,EAAE,EAAE,KAAKu5F,UAAL,CAAgB,OAAhB,CADR;QACkCxvF,IAAI,EAAE2vF,aAAa,GAAGztB,aAAa,CAAC,KAAK/0E,MAAN,EAAc,iBAAd,CADrE;QAEIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,GAAiC,EAAjC,GAAsCnM;MAFnD,CADc,EAKd;QACIj9D,EAAE,EAAE,KAAKu5F,UAAL,CAAgB,SAAhB,CADR;QACoCxvF,IAAI,EAAE0vF,QAAQ,GAAGxtB,aAAa,CAAC,KAAK/0E,MAAN,EAAc,cAAd,CADlE;QAEIipF,OAAO,EAAE,KAAKjpF,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,GAAiCnM,cAAjC,GAAkD;MAF/D,CALc,CAAlB;MAUA,KAAK08B,YAAL,GAAoB,IAAI9gC,wEAAJ,CAAmB;QACnCsnB,OAAO,EAAE,KAAKjpF,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,GAAiChJ,SAAjC,GAA6CC,UADnB;QAEnCyM,QAAQ,EAAEF,WAAW,CAAC,KAAK11E,MAAN,EAAc,kBAAkBklE,UAAhC,CAFc;QAGnCzb,KAAK,EAAEwZ,WAH4B;QAGfj0C,MAAM,EAAE,KAAKi9C,YAAL,CAAkBpyE,IAAlB,CAAuB,IAAvB,CAHO;QAInCokB,SAAS,EAAE,KAAKje,MAAL,CAAYie,SAJY;QAKnC4gE,OAAO,EAAE,mCAAmC9J,aAAa,CAAC,KAAK/0E,MAAN,EAAc,MAAd,CAAhD,GAAwE;MAL9C,CAAnB,CAApB;MAOA,KAAKyiG,YAAL,CAAkB/9D,gBAAlB,GAAqC,IAArC;MACA,KAAK+9D,YAAL,CAAkBz9D,QAAlB,CAA2B,MAAM,KAAKi9D,KAAL,CAAW,MAAX,CAAjC;IACH;;IACD,KAAKS,SAAL,CAAe,KAAKtB,OAApB,EAA6B,IAA7B;IACA,KAAKuB,UAAL;IACA,IAAIrf,UAAU,GAAGl0D,+DAAS,CAAC,QAAD,EAAW,KAAKuyE,UAAL,CAAgBjhG,OAA3B,CAA1B;;IACA,IAAI5C,OAAO,GAAG,UAAU2lF,QAAV,EAAoB;MAC9B;MACAH,UAAU,CAACG,QAAD,CAAV,CAAqBC,SAArB,GAAiC,UAAUnjF,CAAV,EAAa;QAC1C,IAAIA,CAAC,CAACy0C,OAAF,KAAc,EAAd,IAAoB,CAACz0C,CAAC,CAACy1B,MAAF,CAASjJ,SAAT,CAAmBM,QAAnB,CAA4B,YAA5B,CAAzB,EAAoE;UAChE9sB,CAAC,CAAC6qC,cAAF;QACH;MACJ,CAJD;;MAKAk4C,UAAU,CAACG,QAAD,CAAV,CAAqBrB,OAArB,GAA+B,UAAU7hF,CAAV,EAAa;QACxC,IAAIA,CAAC,CAACy0C,OAAF,KAAc,EAAd,IAAoB,CAACz0C,CAAC,CAACy1B,MAAF,CAASjJ,SAAT,CAAmBM,QAAnB,CAA4B,YAA5B,CAAzB,EAAoE;UAChEi2D,UAAU,CAACG,QAAD,CAAV,CAAqBnI,KAArB;QACH;MACJ,CAJD;IAKH,CAZD;;IAaA,KAAK,IAAImI,QAAQ,GAAG,CAApB,EAAuBA,QAAQ,GAAGH,UAAU,CAACvoF,MAA7C,EAAqD0oF,QAAQ,EAA7D,EAAiE;MAC7D3lF,OAAO,CAAC2lF,QAAD,CAAP;IACH;;IACD,KAAKzjF,MAAL,CAAY+gG,aAAZ;EACH,CArED;;EAsEAI,UAAU,CAACvnG,SAAX,CAAqBgpG,kBAArB,GAA0C,YAAY;IAClD,IAAI,KAAKN,SAAT,EAAoB;MAChB,IAAI74C,KAAK,GAAG,KAAK64C,SAAL,CAAe74C,KAA3B;;MACA,KAAK,IAAIo5C,SAAS,GAAG,CAArB,EAAwBA,SAAS,GAAGp5C,KAAK,CAAC1uD,MAA1C,EAAkD8nG,SAAS,EAA3D,EAA+D;QAC3D,IAAIp5C,KAAK,CAACo5C,SAAD,CAAL,CAAiB/5F,EAAjB,KAAwB,KAAKu5F,UAAL,CAAgB,MAAhB,CAA5B,EAAqD;UACjD54C,KAAK,CAACo5C,SAAD,CAAL,CAAiB5Z,OAAjB,GAA2B,KAAKjpF,MAAL,CAAYmlD,MAAZ,KAAuB,MAAvB,GAAgC6gB,aAAhC,GAAgD,EAA3E;QACH,CAFD,MAGK,IAAIvc,KAAK,CAACo5C,SAAD,CAAL,CAAiB/5F,EAAjB,KAAwB,KAAKu5F,UAAL,CAAgB,MAAhB,CAA5B,EAAqD;UACtD54C,KAAK,CAACo5C,SAAD,CAAL,CAAiB5Z,OAAjB,GAA2B,KAAKjpF,MAAL,CAAYmlD,MAAZ,KAAuB,MAAvB,GAAgC6gB,aAAhC,GAAgD,EAA3E;QACH,CAFI,MAGA,IAAIvc,KAAK,CAACo5C,SAAD,CAAL,CAAiB/5F,EAAjB,KAAwB,KAAKu5F,UAAL,CAAgB,MAAhB,CAA5B,EAAqD;UACtD,IAAI,KAAKriG,MAAL,CAAYmlD,MAAZ,KAAuB,cAAvB,IAAyC,KAAKnlD,MAAL,CAAYmlD,MAAZ,KAAuB,aAApE,EAAmF;YAC/EsE,KAAK,CAACo5C,SAAD,CAAL,CAAiB5Z,OAAjB,GAA2B,KAAKjpF,MAAL,CAAYmlD,MAAZ,KAAuB,KAAKnlD,MAAL,CAAYmlD,MAAnC,GAA4C6gB,aAA5C,GAA4D,EAAvF;UACH,CAFD,MAGK;YACDvc,KAAK,CAACo5C,SAAD,CAAL,CAAiB5Z,OAAjB,GAA2B,KAAKjpF,MAAL,CAAYmlD,MAAZ,KAAuB,cAAvB,GAAwC6gB,aAAxC,GAAwD,EAAnF;UACH;QACJ,CAPI,MAQA,IAAIvc,KAAK,CAACo5C,SAAD,CAAL,CAAiB/5F,EAAjB,KAAwB,KAAKu5F,UAAL,CAAgB,WAAhB,CAA5B,EAA0D;UAC3D54C,KAAK,CAACo5C,SAAD,CAAL,CAAiB5Z,OAAjB,GAA2B,KAAKjpF,MAAL,CAAYo0E,SAAZ,KAA0B,WAA1B,GAAwCrO,cAAxC,GAAyD,EAApF;QACH,CAFI,MAGA,IAAItc,KAAK,CAACo5C,SAAD,CAAL,CAAiB/5F,EAAjB,KAAwB,KAAKu5F,UAAL,CAAgB,YAAhB,CAA5B,EAA2D;UAC5D54C,KAAK,CAACo5C,SAAD,CAAL,CAAiB5Z,OAAjB,GAA2B,KAAKjpF,MAAL,CAAYo0E,SAAZ,KAA0B,YAA1B,GAAyCrO,cAAzC,GAA0D,EAArF;QACH,CAFI,MAGA,IAAItc,KAAK,CAACo5C,SAAD,CAAL,CAAiB/5F,EAAjB,KAAwB,KAAKu5F,UAAL,CAAgB,MAAhB,CAA5B,EAAqD;UACtD54C,KAAK,CAACo5C,SAAD,CAAL,CAAiB5Z,OAAjB,GAA2B,KAAKjpF,MAAL,CAAYo0E,SAAZ,KAA0B,MAA1B,GAAmCrO,cAAnC,GAAoD,EAA/E;QACH;MACJ;IACJ;EACJ,CA7BD;;EA8BAo7B,UAAU,CAACvnG,SAAX,CAAqByoG,UAArB,GAAkC,UAAUv5F,EAAV,EAAc;IAC5C,OAAO,KAAK9I,MAAL,CAAYU,OAAZ,CAAoBoI,EAApB,GAAyB,OAAzB,GAAmCA,EAAE,CAAC8P,WAAH,EAA1C;EACH,CAFD;;EAGAuoF,UAAU,CAACvnG,SAAX,CAAqBqyE,YAArB,GAAoC,UAAUhtE,IAAV,EAAgB;IAChD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC,IAAIjzE,IAAI,CAACyiD,IAAL,CAAU54C,EAAV,KAAiB,KAAKu5F,UAAL,CAAgB,OAAhB,CAArB,EAA+C;QAC3CpwB,YAAY,CAAC,KAAKjyE,MAAN,EAAc,YAAd,CAAZ;MACH;IACJ,CAJD,MAKK;MACD,IAAIf,IAAI,CAACyiD,IAAL,CAAU54C,EAAV,KAAiB,KAAKu5F,UAAL,CAAgB,SAAhB,CAArB,EAAiD;QAC7CpwB,YAAY,CAAC,KAAKjyE,MAAN,EAAc,SAAd,CAAZ;MACH;IACJ;EACJ,CAXD;;EAYAmhG,UAAU,CAACvnG,SAAX,CAAqB4nG,eAArB,GAAuC,UAAU1mG,IAAV,EAAgB;IACnD,IAAI2uD,KAAK,GAAG,EAAZ;IACA,IAAIhrC,IAAI,GAAG,MAAX;;IACA,IAAI,KAAKze,MAAL,CAAYg2E,QAAhB,EAA0B;MACtBv3D,IAAI,GAAG,UAAP;IACH;;IACD,KAAK,IAAI/iB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,IAAI,CAACC,MAAzB,EAAiCW,CAAC,EAAlC,EAAsC;MAClC,IAAIgmD,IAAI,GAAG,KAAK,CAAhB;MACA,IAAI43C,MAAM,GAAG,KAAK2I,KAAL,CAAWnnG,IAAI,CAACY,CAAD,CAAf,CAAb;MACA,IAAImtF,QAAQ,GAAG9T,aAAa,CAAC,KAAK/0E,MAAN,EAAclF,IAAI,CAACY,CAAD,CAAlB,CAA5B;MACA,IAAIonG,WAAW,GAAG/tB,aAAa,CAAC,KAAK/0E,MAAN,EAAc,aAAalF,IAAI,CAACY,CAAD,CAA/B,CAA/B;MACA,IAAIqnG,WAAW,GAAG,mDAAmDla,QAAnD,GAA8D,SAAhF;;MACA,QAAQ/tF,IAAI,CAACY,CAAD,CAAZ;QACI,KAAK,GAAL;UACIgmD,IAAI,GAAG;YAAEr2C,IAAI,EAAE;UAAR,CAAP;UACA;;QACJ,KAAK,QAAL;UACIq2C,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8Bma,WAAW,EAAEF,WAA3C;YAAwDG,UAAU,EAAE56B,WAApE;YAAiF66B,UAAU,EAAEzkF;UAA7F,CAAP;UACA;;QACJ,KAAK,QAAL;UACIijC,IAAI,GAAG;YACH54C,EAAE,EAAEwwF,MADD;YACS0J,WAAW,EAAEF,WADtB;YAEHjmD,QAAQ,EAAE,iBAAiBy8C,MAAjB,GAA0B,gDAA1B,GAA6EyJ,WAA7E,GAA2F;UAFlG,CAAP;UAIA;;QACJ,KAAK,SAAL;UACIrhD,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8Bma,WAAW,EAAEF,WAA3C;YAAwDG,UAAU,EAAEn6B,YAApE;YAAkFo6B,UAAU,EAAEzkF;UAA9F,CAAP;UACA;;QACJ,KAAK,WAAL;UACIijC,IAAI,GAAG;YACH54C,EAAE,EAAEwwF,MADD;YACSzmF,IAAI,EAAEg2E,QADf;YACyBma,WAAW,EAAEF,WADtC;YACmDK,UAAU,EAAE95B,UAD/D;YAC2E73B,QAAQ,EAAE,MADrF;YAEH4xD,KAAK,EAAE;UAFJ,CAAP;UAIA;;QACJ,KAAK,MAAL;UACI1hD,IAAI,GAAG;YACH54C,EAAE,EAAEwwF,MADD;YACS0J,WAAW,EAAEF,WADtB;YACmCG,UAAU,EAAE,KAAKjjG,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,GAAiChJ,SAAjC,GAA6CC,UAD5F;YAEH33B,QAAQ,EAAE,MAFP;YAEe4xD,KAAK,EAAE,OAFtB;YAE+BvwF,IAAI,EAAEg2E,QAFrC;YAE+Cqa,UAAU,EAAE,UAF3D;YAGHrmD,QAAQ,EAAE,iBAAiBy8C,MAAjB,GAA0B,2DAA1B,GACNvkB,aAAa,CAAC,KAAK/0E,MAAN,EAAc,MAAd,CADP,GAC+B;UAJtC,CAAP;UAMA;;QACJ,KAAK,SAAL;UACI0hD,IAAI,GAAG;YACH54C,EAAE,EAAEwwF,MADD;YACS0J,WAAW,EAAEF,WADtB;YACmCG,UAAU,EAAEr6B,YAD/C;YAC6Dp3B,QAAQ,EAAE,MADvE;YAC+E4xD,KAAK,EAAE,OADtF;YAEHvwF,IAAI,EAAEg2E,QAFH;YAEaqa,UAAU,EAAE;UAFzB,CAAP;UAIA;;QACJ,KAAK,WAAL;UACIxhD,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8Bma,WAAW,EAAEF,WAA3C;YAAwDG,UAAU,EAAEt6B,cAApE;YAAoFu6B,UAAU,EAAEzkF;UAAhG,CAAP;UACA;;QACJ,KAAK,KAAL;UACIijC,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8Bma,WAAW,EAAEF,WAA3C;YAAwDG,UAAU,EAAE36B,QAApE;YAA8E46B,UAAU,EAAEzkF;UAA1F,CAAP;UACA;;QACJ,KAAK,MAAL;UACIijC,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8Bma,WAAW,EAAEF,WAA3C;YAAwDG,UAAU,EAAE16B,SAApE;YAA+E26B,UAAU,EAAEzkF;UAA3F,CAAP;UACA;;QACJ,KAAK,OAAL;UACIijC,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8Bma,WAAW,EAAEF,WAA3C;YAAwDG,UAAU,EAAEz6B,UAApE;YAAgF06B,UAAU,EAAEzkF;UAA5F,CAAP;UACA;;QACJ,KAAK,QAAL;UACIijC,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8Bma,WAAW,EAAEF,WAA3C;YAAwDG,UAAU,EAAEx6B,WAApE;YAAiFy6B,UAAU,EAAEzkF;UAA7F,CAAP;UACA;;QACJ,KAAK,QAAL;UACIijC,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8Bma,WAAW,EAAEF,WAA3C;YAAwDG,UAAU,EAAEv6B,WAApE;YAAiFw6B,UAAU,EAAEzkF;UAA7F,CAAP;UACA;;QACJ,KAAK,UAAL;UACIijC,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8Bma,WAAW,EAAEF,WAA3C;YAAwDG,UAAU,EAAEj6B,aAApE;YAAmFk6B,UAAU,EAAEzkF;UAA/F,CAAP;UACA;;QACJ,KAAK,WAAL;UACIijC,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8Bma,WAAW,EAAEF,WAA3C;YAAwDG,UAAU,EAAEl6B,cAApE;YAAoFm6B,UAAU,EAAEzkF;UAAhG,CAAP;UACA;;QACJ;UACIijC,IAAI,GAAG;YAAE54C,EAAE,EAAEwwF,MAAN;YAAczmF,IAAI,EAAEg2E,QAApB;YAA8Bma,WAAW,EAAEF;UAA3C,CAAP;UACA;MA9DR;;MAgEAr5C,KAAK,CAACjqD,IAAN,CAAWkiD,IAAX;IACH;;IACD,OAAO+H,KAAP;EACH,CA/ED;;EAgFA03C,UAAU,CAACvnG,SAAX,CAAqBqoG,KAArB,GAA6B,UAAUn5F,EAAV,EAAc;IACvC,OAAO,KAAK9I,MAAL,CAAYU,OAAZ,CAAoBoI,EAApB,GAAyB,MAAzB,GAAkCA,EAAE,CAAC8P,WAAH,EAAzC;EACH,CAFD;;EAGAuoF,UAAU,CAACvnG,SAAX,CAAqBoB,gBAArB,GAAwC,YAAY;IAChD,KAAKgF,MAAL,CAAYwa,EAAZ,CAAegwD,YAAf,EAA6B,KAAKj4C,iBAAlC,EAAqD,IAArD;IACA,KAAKvyB,MAAL,CAAYwa,EAAZ,CAAeqxD,gBAAf,EAAiC,KAAKw3B,kBAAtC,EAA0D,IAA1D;IACA,KAAKrjG,MAAL,CAAYwa,EAAZ,CAAeyxD,YAAf,EAA6B,KAAKof,cAAlC,EAAkD,IAAlD;IACA,KAAKrrF,MAAL,CAAYwa,EAAZ,CAAeiyD,SAAf,EAA0B,KAAKA,SAA/B,EAA0C,IAA1C;IACA,KAAKzsE,MAAL,CAAYwa,EAAZ,CAAekyD,SAAf,EAA0B,KAAKA,SAA/B,EAA0C,IAA1C;IACA,KAAK1sE,MAAL,CAAYwa,EAAZ,CAAe4B,OAAf,EAAwB,KAAKA,OAA7B,EAAsC,IAAtC;IACA,KAAKpc,MAAL,CAAYwa,EAAZ,CAAe0xD,YAAf,EAA6B,KAAK02B,kBAAlC,EAAsD,IAAtD;EACH,CARD;;EASAzB,UAAU,CAACvnG,SAAX,CAAqB0pG,eAArB,GAAuC,UAAU/iG,CAAV,EAAa;IAChD,IAAIvB,KAAK,GAAG,IAAZ;;IACA,IAAIuB,CAAC,CAAC46B,OAAF,CAAUygE,eAAV,CAA0BnyC,KAA1B,KAAoC/vD,SAAxC,EAAmD;MAC/C,KAAK+vD,KAAL,GAAa,KAAK+3C,eAAL,CAAqB,KAAKC,QAAL,CAAclhG,CAAC,CAAC46B,OAAF,CAAUygE,eAAV,CAA0BnyC,KAA1B,CAAgCnlD,GAAhC,CAAoC,UAAUo9C,IAAV,EAAgB;QAAE,OAAOA,IAAI,CAACxL,IAAL,EAAP;MAAqB,CAA3E,CAAd,CAArB,CAAb;MACA,IAAIhyB,SAAS,GAAG;QAAEulC,KAAK,EAAE,KAAKA;MAAd,CAAhB;MACA,KAAKzpD,MAAL,CAAY+rB,OAAZ,CAAoB,eAApB,EAAqC7H,SAArC,EAAgD,UAAUw9E,iBAAV,EAA6B;QACzE,IAAI1iG,KAAK,CAACsjG,SAAV,EAAqB;UACjBtjG,KAAK,CAACsjG,SAAN,CAAgBlmF,OAAhB;QACH;;QACD,IAAIpd,KAAK,CAACyjG,YAAV,EAAwB;UACpBzjG,KAAK,CAACyjG,YAAN,CAAmBrmF,OAAnB;QACH;;QACDpd,KAAK,CAACyqD,KAAN,GAAci4C,iBAAiB,CAACj4C,KAAhC;QACAzqD,KAAK,CAAC2iG,UAAN,CAAiBl4C,KAAjB,GAAyBzqD,KAAK,CAACyqD,KAA/B;;QACAzqD,KAAK,CAAC2iG,UAAN,CAAiB3vE,QAAjB;;QACAhzB,KAAK,CAAC6iG,oBAAN;MACH,CAXD;IAYH;EACJ,CAlBD;;EAmBAV,UAAU,CAACvnG,SAAX,CAAqBypG,kBAArB,GAA0C,YAAY;IAClD,KAAKV,UAAL;IACA,KAAKD,SAAL,CAAe,KAAKrB,MAApB,EAA4B,IAA5B;IACA,KAAKqB,SAAL,CAAe,KAAKnB,SAApB,EAA+B,KAA/B;;IACA,IAAI,KAAKvhG,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAzC,EAA4C;MACxC,KAAK2nG,SAAL,CAAe,KAAKrB,MAApB,EAA4B,KAA5B;MACA,KAAKqB,SAAL,CAAe,KAAKnB,SAApB,EAA+B,IAA/B;IACH,CAHD,MAIK,IAAI,KAAKvhG,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,GAAmC,CAAvC,EAA0C;MAC3C,KAAK2nG,SAAL,CAAe,KAAKpB,QAApB,EAA8B,KAA9B;MACA,KAAKoB,SAAL,CAAe,KAAKnB,SAApB,EAA+B,IAA/B;IACH;;IACD,IAAIt0E,GAAG,GAAG+B,4DAAM,CAAC,MAAM,KAAKizE,KAAL,CAAW,WAAX,CAAP,EAAgC,KAAKN,UAAL,CAAgBjhG,OAAhD,CAAhB;;IACA,IAAI,KAAKV,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,GAAmC,CAAnC,IAAwCkyB,GAAxC,IAA+C,CAAC,KAAKjtB,MAAL,CAAYspF,oBAAhE,EAAsF;MAClF,IAAI5G,GAAG,GAAG,KAAK,CAAf;;MACA,IAAI,KAAK1iF,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAzC,EAA4C;QACxC2nF,GAAG,GAAG,KAAK1iF,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,GAAmC,GAAnC,GAAyCg6E,aAAa,CAAC,KAAK/0E,MAAN,EAAc,gBAAd,CAA5D;MACH,CAFD,MAGK;QACD0iF,GAAG,GAAG,KAAK1iF,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,GAAmC,GAAnC,GAAyCg6E,aAAa,CAAC,KAAK/0E,MAAN,EAAc,iBAAd,CAA5D;MACH;;MACDgvB,4DAAM,CAAC,kBAAD,EAAqB/B,GAArB,CAAN,CAAgCmiD,WAAhC,GAA8CsT,GAA9C;MACA,KAAKif,UAAL,CAAgB4B,QAAhB,CAAyBt2E,GAAG,CAAC4mB,aAA7B,EAA4C,KAA5C;IACH;EACJ,CAxBD;;EAyBAstD,UAAU,CAACvnG,SAAX,CAAqB8oG,SAArB,GAAiC,UAAUc,KAAV,EAAiBC,MAAjB,EAAyB;IACtD,KAAK,IAAI/nG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8nG,KAAK,CAACzoG,MAA1B,EAAkCW,CAAC,EAAnC,EAAuC;MACnC,IAAIuxB,GAAG,GAAG+B,4DAAM,CAAC,MAAM,KAAKizE,KAAL,CAAWuB,KAAK,CAAC9nG,CAAD,CAAhB,CAAP,EAA6B,KAAKsE,MAAL,CAAYU,OAAzC,CAAhB;;MACA,IAAIusB,GAAJ,EAAS;QACL,KAAK00E,UAAL,CAAgB4B,QAAhB,CAAyBt2E,GAAG,CAAC4mB,aAA7B,EAA4C4vD,MAA5C;MACH;IACJ;EACJ,CAPD;;EAQAtC,UAAU,CAACvnG,SAAX,CAAqB+oG,UAArB,GAAkC,YAAY;IAC1C,IAAI11E,GAAG,GAAG+B,4DAAM,CAAC,MAAM,KAAKizE,KAAL,CAAW,WAAX,CAAP,EAAgC,KAAKN,UAAL,CAAgBjhG,OAAhD,CAAhB;;IACA,IAAIusB,GAAJ,EAAS;MACL,KAAK00E,UAAL,CAAgB4B,QAAhB,CAAyBt2E,GAAG,CAAC4mB,aAA7B,EAA4C,IAA5C;IACH;EACJ,CALD;;EAMAstD,UAAU,CAACvnG,SAAX,CAAqB6yE,SAArB,GAAiC,YAAY;IACzC,KAAKi2B,SAAL,CAAe,CAAC,OAAD,CAAf,EAA0B,KAA1B;EACH,CAFD;;EAGAvB,UAAU,CAACvnG,SAAX,CAAqB8yE,SAArB,GAAiC,YAAY;IACzC,KAAKg2B,SAAL,CAAe,CAAC,OAAD,CAAf,EAA0B,IAA1B;EACH,CAFD;;EAGAvB,UAAU,CAACvnG,SAAX,CAAqByxF,cAArB,GAAsC,YAAY;IAC9C,IAAI,KAAKoX,YAAT,EAAuB;MACnB,KAAKA,YAAL,CAAkBxZ,OAAlB,GAA4B,KAAKjpF,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,GAAiChJ,SAAjC,GAA6CC,UAAzE;MACA,IAAI1f,KAAK,GAAG,KAAKg5C,YAAL,CAAkBh5C,KAA9B;;MACA,KAAK,IAAIo5C,SAAS,GAAG,CAArB,EAAwBA,SAAS,GAAGp5C,KAAK,CAAC1uD,MAA1C,EAAkD8nG,SAAS,EAA3D,EAA+D;QAC3D,IAAIp5C,KAAK,CAACo5C,SAAD,CAAL,CAAiB/5F,EAAjB,KAAwB,KAAKu5F,UAAL,CAAgB,OAAhB,CAA5B,EAAsD;UAClD54C,KAAK,CAACo5C,SAAD,CAAL,CAAiB5Z,OAAjB,GAA2B,KAAKjpF,MAAL,CAAYkyE,IAAZ,KAAqB,YAArB,GAAoCnM,cAApC,GAAqD,EAAhF;QACH,CAFD,MAGK,IAAItc,KAAK,CAACo5C,SAAD,CAAL,CAAiB/5F,EAAjB,KAAwB,KAAKu5F,UAAL,CAAgB,SAAhB,CAA5B,EAAwD;UACzD54C,KAAK,CAACo5C,SAAD,CAAL,CAAiB5Z,OAAjB,GAA2B,KAAKjpF,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,GAAiCnM,cAAjC,GAAkD,EAA7E;QACH;MACJ;IACJ;EACJ,CAbD;;EAcAo7B,UAAU,CAACvnG,SAAX,CAAqBsB,mBAArB,GAA2C,YAAY;IACnD,KAAK8E,MAAL,CAAY6a,GAAZ,CAAgB2vD,YAAhB,EAA8B,KAAKj4C,iBAAnC;IACA,KAAKvyB,MAAL,CAAY6a,GAAZ,CAAgBgxD,gBAAhB,EAAkC,KAAKw3B,kBAAvC;IACA,KAAKrjG,MAAL,CAAY6a,GAAZ,CAAgBoxD,YAAhB,EAA8B,KAAKof,cAAnC;IACA,KAAKrrF,MAAL,CAAY6a,GAAZ,CAAgB4xD,SAAhB,EAA2B,KAAKA,SAAhC;IACA,KAAKzsE,MAAL,CAAY6a,GAAZ,CAAgB6xD,SAAhB,EAA2B,KAAKA,SAAhC;IACA,KAAK1sE,MAAL,CAAY6a,GAAZ,CAAgBuB,OAAhB,EAAyB,KAAKA,OAA9B;IACA,KAAKpc,MAAL,CAAY6a,GAAZ,CAAgBqxD,YAAhB,EAA8B,KAAK02B,kBAAnC;EACH,CARD;EASA;AACJ;AACA;AACA;AACA;AACA;;;EACIzB,UAAU,CAACvnG,SAAX,CAAqBk5B,aAArB,GAAqC,YAAY;IAC7C,OAAO,SAAP;EACH,CAFD;;EAGAquE,UAAU,CAACvnG,SAAX,CAAqB24B,iBAArB,GAAyC,UAAUhyB,CAAV,EAAa;IAClD,IAAIA,CAAC,CAAC89B,MAAF,KAAa,KAAKvL,aAAL,EAAb,IAAqCvyB,CAAC,CAAC89B,MAAF,KAAa,QAAtD,EAAgE;MAC5D;MACA;IACH;;IACD,KAAK,IAAInhC,EAAE,GAAG,CAAT,EAAY8F,EAAE,GAAGhG,MAAM,CAACjB,IAAP,CAAYwE,CAAC,CAAC46B,OAAd,CAAtB,EAA8Cj+B,EAAE,GAAG8F,EAAE,CAACjI,MAAtD,EAA8DmC,EAAE,EAAhE,EAAoE;MAChE,IAAI6G,IAAI,GAAGf,EAAE,CAAC9F,EAAD,CAAb;;MACA,QAAQ6G,IAAR;QACI,KAAK,UAAL;UACI,IAAI,KAAKu+F,SAAT,EAAoB;YAChB,KAAKA,SAAL,CAAe1sB,QAAf,GAA0BF,WAAW,CAAC,KAAK11E,MAAN,EAAcklE,UAAd,CAArC;UACH;;UACD,IAAI,KAAKu9B,YAAT,EAAuB;YACnB,KAAKA,YAAL,CAAkB7sB,QAAlB,GAA6BF,WAAW,CAAC,KAAK11E,MAAN,EAAc,kBAAkBklE,UAAhC,CAAxC;UACH;;UACD;;QACJ,KAAK,QAAL;QACA,KAAK,OAAL;UACI,KAAKy8B,UAAL,CAAgB+B,eAAhB;UACA;;QACJ,KAAK,iBAAL;UACI,KAAKJ,eAAL,CAAqB/iG,CAArB;UACA;MAfR;IAiBH;EACJ,CAzBD;;EA0BA4gG,UAAU,CAACvnG,SAAX,CAAqBwiB,OAArB,GAA+B,YAAY;IACvC,IAAI,KAAKpc,MAAL,CAAY6xB,WAAhB,EAA6B;MACzB;IACH;;IACD,KAAK32B,mBAAL;;IACA,IAAI,KAAKonG,SAAT,EAAoB;MAChB,KAAKA,SAAL,CAAelmF,OAAf;IACH;;IACD,IAAI,KAAKqmF,YAAT,EAAuB;MACnB,KAAKA,YAAL,CAAkBrmF,OAAlB;IACH;;IACD,KAAKulF,UAAL,CAAgBvlF,OAAhB;IACA,KAAKpc,MAAL,CAAY+gG,aAAZ;EACH,CAbD;;EAcAI,UAAU,CAACvnG,SAAX,CAAqBw/F,WAArB,GAAmC,UAAU3vC,KAAV,EAAiBk6C,QAAjB,EAA2B;IAC1D,KAAK,IAAIjoG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+tD,KAAK,CAAC1uD,MAA1B,EAAkCW,CAAC,EAAnC,EAAuC;MACnC,IAAIuxB,GAAG,GAAG+B,4DAAM,CAAC,MAAM,KAAKizE,KAAL,CAAWx4C,KAAK,CAAC/tD,CAAD,CAAhB,CAAP,EAA6B,KAAKsE,MAAL,CAAYU,OAAzC,CAAhB;;MACA,IAAIusB,GAAJ,EAAS;QACL,KAAK00E,UAAL,CAAgBvI,WAAhB,CAA4BnsE,GAAG,CAAC4mB,aAAhC,EAA+C8vD,QAA/C;MACH;IACJ;EACJ,CAPD;;EAQA,OAAOxC,UAAP;AACH,CA1ewC,EAAzC;;AA4eA,IAAIyC,cAAc;AAAG;AAAyB,YAAY;EACtD,SAASA,cAAT,CAAwBzgG,QAAxB,EAAkC;IAC9B,KAAK0gG,mBAAL,GAA2B1gG,QAA3B;IACA,KAAK2gG,iBAAL,GAAyB3gG,QAAQ,CAAC2uE,oBAAlC;EACH;EACD;AACJ;AACA;;;EACI8xB,cAAc,CAAChqG,SAAf,CAAyB6vF,mBAAzB,GAA+C,YAAY;IACvD;IACA,IAAIsa,gBAAgB,GAAG,KAAKD,iBAAL,CAAuBr6C,KAA9C,CAFuD,CAGvD;;IACA,IAAI6mC,SAAS,GAAGyT,gBAAgB,CAAChjG,KAAjB,CAAuB,CAAvB,EAA0B,CAA1B,CAAhB,CAJuD,CAKvD;;IACA,IAAI2oF,YAAY,GAAGhoB,8EAAA,CAA4B7gE,+DAA5B,EAA2CyvF,SAA3C,EAAsD,KAAKwT,iBAAL,CAAuBxb,OAA7E,CAAnB,CANuD,CAOvD;;IACA,KAAKsB,QAAL,GAAgBvsF,KAAK,CAACzD,SAAN,CAAgBmH,KAAhB,CAAsBlB,IAAtB,CAA2BuvB,+DAAS,CAAC,MAAMw2C,SAAP,EAAkB8jB,YAAlB,CAApC,CAAhB,CARuD,CASvD;;IACA,KAAKoa,iBAAL,CAAuBpjG,OAAvB,CAA+Ba,WAA/B,CAA2CmoF,YAA3C,EAVuD,CAWvD;;IACA,KAAKmZ,SAAL,GAAiB,KAAK1Y,YAAL,CAAkBntF,MAAM,CAACjB,IAAP,CAAY,KAAK+nG,iBAAL,CAAuB/xB,QAAnC,EAA6Ch3E,MAA/D,CAAjB,CAZuD,CAavD;;IACA,KAAK+oG,iBAAL,CAAuBpjG,OAAvB,CAA+BsjG,UAA/B,CAA0Ct4E,MAA1C,GAduD,CAevD;;IACA,KAAKo4E,iBAAL,CAAuBr6C,KAAvB,GAA+Bs6C,gBAAgB,CAAChjG,KAAjB,CAAuB,CAAvB,EAA0B,KAAK8hG,SAA/B,CAA/B;EACH,CAjBD;EAkBA;AACJ;AACA;AACA;;;EACIe,cAAc,CAAChqG,SAAf,CAAyBwwF,kBAAzB,GAA8C,YAAY;IACtD;IACA,KAAK6Z,YAAL,GAAoB,CAAC,KAAKH,iBAAL,CAAuB/xB,QAAvB,CAAgCh3E,MAAhC,GAAyC,KAAK8nG,SAA/C,IAA4D,KAAKqB,YAAjE,GAChB,CAAC,KAAKJ,iBAAL,CAAuB/xB,QAAvB,CAAgCh3E,MAAhC,GAAyC,KAAK8nG,SAA/C,IAA4D,KAAKqB,YADjD,GACgE,KAAKA,YADzF,CAFsD,CAItD;;IACA,KAAKC,UAAL,GAAkB,KAAKN,mBAAL,CAAyBhjG,aAAzB,CAAuC,KAAvC,CAAlB;IACA,KAAKsjG,UAAL,CAAgBp3E,SAAhB,CAA0B9B,GAA1B,CAA8B,eAA9B;IACA,KAAK64E,iBAAL,CAAuBpjG,OAAvB,CAA+B4tB,iBAA/B,CAAiDD,YAAjD,CAA8D,KAAK81E,UAAnE,EAA+E,KAAKL,iBAAL,CAAuBpjG,OAAvB,CAA+B4tB,iBAA/B,CAAiD01E,UAAhI;IACA,KAAKI,aAAL,GAAqB,KAAKP,mBAAL,CAAyBhjG,aAAzB,CAAuC,KAAvC,CAArB;IACA,KAAKujG,aAAL,CAAmBr3E,SAAnB,CAA6B9B,GAA7B,CAAiC,kBAAjC;IACA,KAAK64E,iBAAL,CAAuBpjG,OAAvB,CAA+B4tB,iBAA/B,CAAiDD,YAAjD,CAA8D,KAAK+1E,aAAnE,EAAkF,IAAlF,EAVsD,CAWtD;;IACA,IAAIvS,WAAW,GAAGj2F,QAAQ,CAACvB,MAAM,CAAC4iC,gBAAP,CAAwB,KAAK6mE,iBAAL,CAAuBla,QAAvB,CAAgC,CAAhC,CAAxB,EAA4D1sD,gBAA5D,CAA6E,YAA7E,CAAD,EAA6F,EAA7F,CAAR,GACdthC,QAAQ,CAACvB,MAAM,CAAC4iC,gBAAP,CAAwB,KAAK6mE,iBAAL,CAAuBla,QAAvB,CAAgC,CAAhC,CAAxB,EAA4D1sD,gBAA5D,CAA6E,eAA7E,CAAD,EAAgG,EAAhG,CADZ,CAZsD,CActD;;IACA,KAAKmnE,cAAL,GAAsB,KAAKP,iBAAL,CAAuBla,QAAvB,CAAgC,CAAhC,EAAmC3tD,qBAAnC,GAA2DyS,MAA3D,GAAoEmjD,WAA1F,CAfsD,CAgBtD;;IACA,KAAKyS,WAAL,GAAoBtnG,MAAM,CAACjB,IAAP,CAAY,KAAK+nG,iBAAL,CAAuB/xB,QAAnC,EAA6Ch3E,MAA7C,GAAsD,KAAKmpG,YAA5D,GAA4E,KAAKG,cAApG,CAjBsD,CAkBtD;;IACA,KAAKF,UAAL,CAAgBv2E,KAAhB,CAAsB8gB,MAAtB,GAA+B,IAAI,IAAnC;IACA,KAAK01D,aAAL,CAAmBx2E,KAAnB,CAAyB8gB,MAAzB,GAAkC,KAAK41D,WAAL,GAAmB,IAArD,CApBsD,CAqBtD;;IACA,KAAKC,gBAAL,GAAwB,CAAxB;IACA,KAAKC,mBAAL,GAA2B,KAAKF,WAAhC,CAvBsD,CAwBtD;;IACA,KAAKG,QAAL,GAAgB,CAAhB,CAzBsD,CA0BtD;;IACA,KAAKC,aAAL,GAAqB,KAAK7B,SAA1B;EACH,CA5BD;EA6BA;AACJ;AACA;AACA;AACA;;;EACIe,cAAc,CAAChqG,SAAf,CAAyBuwF,YAAzB,GAAwC,UAAUwa,gBAAV,EAA4B;IAChE;IACA,IAAIC,WAAW,GAAGhpG,QAAQ,CAACvB,MAAM,CAAC4iC,gBAAP,CAAwB,KAAK2sD,QAAL,CAAc,CAAd,CAAxB,EAA0C1sD,gBAA1C,CAA2D,cAA3D,CAAD,EAA6E,EAA7E,CAAR,GACdthC,QAAQ,CAACvB,MAAM,CAAC4iC,gBAAP,CAAwB,KAAK2sD,QAAL,CAAc,CAAd,CAAxB,EAA0C1sD,gBAA1C,CAA2D,aAA3D,CAAD,EAA4E,EAA5E,CADZ,CAFgE,CAIhE;;IACA,KAAKgnE,YAAL,GAAoB38F,IAAI,CAACC,KAAL,CAAWyS,UAAU,CAAC/X,gEAAU,CAAC,KAAK4hG,iBAAL,CAAuBpjG,OAAvB,CAA+B4tB,iBAA/B,CAAiD+kB,WAAlD,CAAX,CAAV,IAAwF,KAAKu2C,QAAL,CAAc,CAAd,EAAiB97D,WAAjB,GAA+B82E,WAAvH,CAAX,CAApB,CALgE,CAMhE;;IACA,IAAI/B,SAAS,GAAG,KAAKqB,YAAL,GAAqB38F,IAAI,CAACs9F,KAAL,CAAW5qF,UAAU,CAAC/X,gEAAU,CAAC,KAAK4hG,iBAAL,CAAuBpjG,OAAvB,CAA+B4wC,YAAhC,CAAX,CAAV,GAAsE,KAAKs4C,QAAL,CAAc,CAAd,EAAiBj7C,YAAlG,CAArC,CAPgE,CAQhE;;IACA,IAAIk0D,SAAS,GAAG8B,gBAAhB,EAAkC;MAC9B9B,SAAS,GAAG8B,gBAAZ;IACH;;IACD,OAAO9B,SAAP;EACH,CAbD;EAcA;AACJ;AACA;AACA;;;EACIe,cAAc,CAAChqG,SAAf,CAAyBywF,eAAzB,GAA2C,UAAUjuE,OAAV,EAAmB;IAC1D,IAAI,CAACA,OAAL,EAAc;MACV;MACA0O,kEAAA,CAAiB,KAAKg5E,iBAAL,CAAuBpjG,OAAvB,CAA+B4tB,iBAAhD,EAAmE,QAAnE,EAA6E,KAAKw2E,iBAAlF,EAAqG,IAArG;IACH,CAHD,MAIK;MACD;MACAh6E,qEAAA,CAAoB,KAAKg5E,iBAAL,CAAuBpjG,OAAvB,CAA+B4tB,iBAAnD,EAAsE,QAAtE,EAAgF,KAAKw2E,iBAArF;IACH;EACJ,CATD;EAUA;AACJ;AACA;AACA;;;EACIlB,cAAc,CAAChqG,SAAf,CAAyBkrG,iBAAzB,GAA6C,YAAY;IACrD,IAAI9hG,EAAJ,CADqD,CAErD;;;IACA,IAAI+hG,cAAc,GAAG,CAArB,CAHqD,CAIrD;;IACA,KAAKC,cAAL,GAAsB7oG,uEAAiB,CAAC,KAAK6oG,cAAN,CAAjB,GAAyC,CAAzC,GAA6C,KAAKA,cAAxE;IACA,IAAI36D,MAAM,GAAG,KAAK46D,iBAAL,CAAuBF,cAAvB,CAAb,CANqD,CAOrD;;IACA,KAAKR,gBAAL,GAAwB,KAAKF,cAAL,GAAsB98F,IAAI,CAACC,KAAL,CAAW6iC,MAAM,GAAG,KAAKg6D,cAAzB,CAA9C,CARqD,CASrD;;IACA,KAAKG,mBAAL,GAA2B,KAAKF,WAAL,GAAmB,KAAKC,gBAAnD,CAVqD,CAWrD;IACA;;IACAvhG,EAAE,GAAGqnC,MAAM,IAAI,KAAKi6D,WAAf,GACD,CAAC,KAAKC,gBAAN,EAAwB,KAAKC,mBAA7B,CADC,GACmD,CAAC,KAAKF,WAAN,EAAmB,CAAnB,CADxD,EAC+E,KAAKC,gBAAL,GAAwBvhG,EAAE,CAAC,CAAD,CADzG,EAC8G,KAAKwhG,mBAAL,GAA2BxhG,EAAE,CAAC,CAAD,CAD3I,CAbqD,CAerD;;IACA,IAAI,KAAKuhG,gBAAL,KAA0BtqF,UAAU,CAAC,KAAKkqF,UAAL,CAAgBv2E,KAAhB,CAAsB8gB,MAAvB,CAAxC,EAAwE;MACpE,KAAKy1D,UAAL,CAAgBv2E,KAAhB,CAAsB8gB,MAAtB,GAA+B,KAAK61D,gBAAL,GAAwB,IAAvD;MACA,KAAKH,aAAL,CAAmBx2E,KAAnB,CAAyB8gB,MAAzB,GAAkC,KAAK81D,mBAAL,GAA2B,IAA7D,CAFoE,CAGpE;;MACA,IAAIn6D,MAAM,GAAG,KAAK26D,cAAlB,EAAkC;QAC9B;QACA,IAAIP,QAAQ,GAAGl9F,IAAI,CAACs9F,KAAL,CAAa,KAAKN,gBAAL,GAAwB,KAAKF,cAA9B,GAAgD,KAAKI,QAAjE,CAAf;QACA,KAAKS,cAAL,CAAoBT,QAApB,EAA8B,IAA9B;MACH,CAJD,MAKK;QACD;QACA,IAAIA,QAAQ,GAAGl9F,IAAI,CAACs9F,KAAL,CAAY,KAAKJ,QAAL,GAAiB,KAAKF,gBAAL,GAAwB,KAAKF,cAA1D,CAAf;QACA,KAAKa,cAAL,CAAoBT,QAApB,EAA8B,KAA9B;MACH;IACJ,CA9BoD,CA+BrD;;;IACA,KAAKA,QAAL,GAAgBl9F,IAAI,CAACs9F,KAAL,CAAW,KAAKN,gBAAL,GAAwB,KAAKF,cAAxC,CAAhB;IACA,KAAKW,cAAL,GAAsB36D,MAAtB,CAjCqD,CAkCrD;;IACA,KAAKy5D,iBAAL,CAAuBla,QAAvB,GAAkCvsF,KAAK,CAACzD,SAAN,CAAgBmH,KAAhB,CAAsBlB,IAAtB,CAA2BuvB,+DAAS,CAAC,MAAMw2C,SAAP,EAAkB,KAAKk+B,iBAAL,CAAuBpjG,OAAzC,CAApC,CAAlC;IACA,KAAKojG,iBAAL,CAAuBr6C,KAAvB,GAA+B,KAAKq6C,iBAAL,CAAuB/xB,QAAvB,CAAgChxE,KAAhC,CAAsC,KAAK2jG,aAAL,GACjE,KAAK7B,SADsB,EACX,KAAK6B,aADM,CAA/B;EAEH,CAtCD;EAuCA;AACJ;AACA;AACA;AACA;;;EACId,cAAc,CAAChqG,SAAf,CAAyBqrG,iBAAzB,GAA6C,UAAUF,cAAV,EAA0B;IACnE;IACA;IACA,OAAS,KAAKjB,iBAAL,CAAuBpjG,OAAvB,CAA+B4tB,iBAA/B,CAAiDiO,SAAjD,GAA6DwoE,cAA9D,IAAiF,CAAlF,GAAuF,CAAvF,GACF,KAAKjB,iBAAL,CAAuBpjG,OAAvB,CAA+B4tB,iBAA/B,CAAiDiO,SAAjD,GAA6DwoE,cADlE;EAEH,CALD;EAMA;AACJ;AACA;AACA;AACA;;;EACInB,cAAc,CAAChqG,SAAf,CAAyBsrG,cAAzB,GAA0C,UAAUT,QAAV,EAAoBU,eAApB,EAAqC;IAC3E;IACA,KAAK,IAAIzpG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+oG,QAApB,EAA8B/oG,CAAC,EAA/B,EAAmC;MAC/B,KAAK0pG,QAAL,CAAcD,eAAd;IACH;EACJ,CALD;EAMA;AACJ;AACA;AACA;;;EACIvB,cAAc,CAAChqG,SAAf,CAAyBwrG,QAAzB,GAAoC,UAAUD,eAAV,EAA2B;IAC3D,IAAInmG,KAAK,GAAG,IAAZ;;IACA,IAAImmG,eAAJ,EAAqB;MACjB;MACA,KAAK17C,KAAL,GAAa,KAAKq6C,iBAAL,CAAuB/xB,QAAvB,CAAgChxE,KAAhC,CAAsC,KAAK2jG,aAA3C,EAA0D,KAAKA,aAAL,GAAqB,KAAKR,YAApF,CAAb,CAFiB,CAGjB;;MACA,IAAI,KAAKz6C,KAAL,CAAW1uD,MAAX,GAAoB,CAAxB,EAA2B;QACvB,IAAI2uF,YAAY,GAAGhoB,8EAAA,CAA4B7gE,+DAA5B,EAA2C,KAAK4oD,KAAhD,EAAuD,KAAKq6C,iBAAL,CAAuBxb,OAA9E,CAAnB;QACA,KAAKsB,QAAL,GAAgBvsF,KAAK,CAACzD,SAAN,CAAgBmH,KAAhB,CAAsBlB,IAAtB,CAA2BuvB,+DAAS,CAAC,MAAMw2C,SAAP,EAAkB8jB,YAAlB,CAApC,CAAhB;QACA,KAAKE,QAAL,CAAc3rF,OAAd,CAAsB,UAAUm5F,KAAV,EAAiB;UACnCp4F,KAAK,CAAC8kG,iBAAN,CAAwBpjG,OAAxB,CAAgC4tB,iBAAhC,CAAkDD,YAAlD,CAA+D+oE,KAA/D,EAAsEp4F,KAAK,CAAColG,aAA5E;QACH,CAFD,EAHuB,CAMvB;;QACA,KAAKM,aAAL,GAAsB,KAAKZ,iBAAL,CAAuB/xB,QAAvB,CAAgCh3E,MAAhC,IAA0C,KAAK2pG,aAAL,GAAqB,KAAKR,YAArE,GACjB,KAAKQ,aAAL,GAAqB,KAAKR,YADT,GACwB,KAAKQ,aAAL,GAAqB,KAAKT,YADvE,CAPuB,CASvB;;QACA,KAAK,IAAIvoG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAKwoG,YAAzB,EAAuCxoG,CAAC,EAAxC,EAA4C;UACxCmzB,4DAAM,CAAC,KAAKs1E,UAAL,CAAgB3mB,kBAAjB,CAAN;QACH;MACJ;IACJ,CAlBD,MAmBK;MACD;MACA,IAAI6nB,aAAa,GAAG,KAAK,CAAzB;MACA,IAAIC,aAAa,GAAG,KAAK,CAAzB;;MACA,IAAI,KAAKZ,aAAL,KAAuB,KAAKZ,iBAAL,CAAuB/xB,QAAvB,CAAgCh3E,MAA3D,EAAmE;QAC/D;QACAsqG,aAAa,GAAG,KAAKX,aAAL,IAAsB,KAAK7B,SAAL,GAAiB,KAAKqB,YAAtB,GAAqC,KAAKD,YAAhE,CAAhB,CAF+D,CAG/D;;QACA,KAAKS,aAAL,GAAuB,KAAKA,aAAL,GAAqB,KAAKT,YAA3B,GAA2C,KAAKpB,SAAjD,GACjB,KAAKA,SADY,GACC,KAAK6B,aAAL,GAAqB,KAAKT,YADhD,CAJ+D,CAM/D;;QACAqB,aAAa,GAAG,IAAhB;MACH,CARD,MASK;QACD;QACAD,aAAa,GAAG,KAAKX,aAAL,GAAqB,KAAK7B,SAA1C,CAFC,CAGD;;QACA,KAAK6B,aAAL,GAAuB,KAAKA,aAAL,GAAqB,KAAKR,YAA3B,GAA2C,KAAKrB,SAAjD,GACjB,KAAKA,SADY,GACC,KAAK6B,aAAL,GAAqB,KAAKR,YADhD;MAEH,CAnBA,CAoBD;;;MACA,IAAIqB,cAAc,GAAIF,aAAa,GAAG,KAAKnB,YAArB,GAAoC,CAArC,GAA0CmB,aAAa,GAAG,KAAKnB,YAA/D,GAA8E,CAAnG,CArBC,CAsBD;;MACA,KAAKz6C,KAAL,GAAa,KAAKq6C,iBAAL,CAAuB/xB,QAAvB,CAAgChxE,KAAhC,CAAsCwkG,cAAtC,EAAsDF,aAAtD,CAAb;;MACA,IAAI,KAAK57C,KAAL,CAAW1uD,MAAX,GAAoB,CAAxB,EAA2B;QACvB;QACA,IAAI2uF,YAAY,GAAGhoB,8EAAA,CAA4B7gE,+DAA5B,EAA2C,KAAK4oD,KAAhD,EAAuD,KAAKq6C,iBAAL,CAAuBxb,OAA9E,CAAnB,CAFuB,CAGvB;;QACA,KAAKsB,QAAL,GAAgBvsF,KAAK,CAACzD,SAAN,CAAgBmH,KAAhB,CAAsBlB,IAAtB,CAA2BuvB,+DAAS,CAAC,MAAMw2C,SAAP,EAAkB8jB,YAAlB,CAApC,CAAhB,CAJuB,CAKvB;;QACA,KAAK,IAAItoF,GAAG,GAAG,KAAKwoF,QAAL,CAAc7uF,MAA7B,EAAqCqG,GAAG,GAAG,CAA3C,EAA8CA,GAAG,EAAjD,EAAqD;UACjD,KAAK0iG,iBAAL,CAAuBpjG,OAAvB,CAA+B4tB,iBAA/B,CAAiDD,YAAjD,CAA8D,KAAKu7D,QAAL,CAAcxoF,GAAG,GAAG,CAApB,CAA9D,EAAsF,KAAK+iG,UAAL,CAAgB3mB,kBAAtG;QACH,CARsB,CASvB;;;QACA,KAAK,IAAI9hF,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAK4pG,aAAD,GAAkB,KAAKrB,YAAvB,GAAsC,KAAKC,YAA/C,CAAjB,EAA+ExoG,CAAC,EAAhF,EAAoF;UAChFmzB,4DAAM,CAAC,KAAKu1E,aAAL,CAAmBoB,sBAApB,CAAN;QACH;MACJ;IACJ;EACJ,CA5DD;EA6DA;AACJ;AACA;AACA;AACA;AACA;;;EACI5B,cAAc,CAAChqG,SAAf,CAAyBk5B,aAAzB,GAAyC,YAAY;IACjD,OAAO,gBAAP;EACH,CAFD;EAGA;AACJ;AACA;;;EACI8wE,cAAc,CAAChqG,SAAf,CAAyBwiB,OAAzB,GAAmC,YAAY;IAC3C;IACA,IAAI,KAAKynF,mBAAL,CAAyBhyE,WAA7B,EAA0C;MACtC;IACH,CAJ0C,CAK3C;;;IACA,IAAI,CAAC11B,uEAAiB,CAAC,KAAK2nG,iBAAL,CAAuBpjG,OAAvB,CAA+B4tB,iBAAhC,CAAtB,EAA0E;MACtE,KAAK+7D,eAAL,CAAqB,IAArB;IACH;EACJ,CATD;;EAUA,OAAOuZ,cAAP;AACH,CArP6C,EAA9C;AAuPA;AACA;AACA;;AAEA;AACA;AACA;;;AACA,IAAI6B,cAAc;AAAG;AAAyB,YAAY;EACtD;AACJ;AACA;AACA;AACA;AACA;;EACI;EACA,SAASA,cAAT,CAAwBzlG,MAAxB,EAAgC;IAC5B,KAAK0lG,WAAL,GAAmB,EAAnB;IACA,KAAKC,SAAL,GAAiB,EAAjB;IACA,KAAKC,UAAL,GAAkB,KAAlB;IACA,KAAKrxD,MAAL,GAAc,KAAd;IACA,KAAKsxD,aAAL,GAAqB,KAArB;IACA,KAAKC,cAAL,GAAsB,KAAtB;IACA,KAAKC,YAAL,GAAoB,KAApB;IACA,KAAKC,iBAAL,GAAyB,KAAzB;IACA,KAAKC,kBAAL,GAA0B,KAA1B;IACA,KAAKC,YAAL,GAAoB,IAApB,CAV4B,CAW5B;;IACA,KAAKC,gBAAL,GAAwB,IAAxB,CAZ4B,CAa5B;;IACA,KAAKC,iBAAL,GAAyB,KAAzB,CAd4B,CAe5B;;IACA,KAAKC,iBAAL,GAAyB,KAAzB;IACA,KAAKrmG,MAAL,GAAcA,MAAd;IACA,KAAKhF,gBAAL;IACA,KAAK26C,UAAL,GAAkB;MACd6xC,QAAQ,EAAE,WADI;MAEdC,GAAG,EAAE,QAFS;MAGdC,GAAG,EAAE,QAHS;MAIdC,KAAK,EAAE,KAAK3nF,MAAL,CAAY4nF,KAAZ,GAAoB,OAApB,GAA8B,QAJvB;MAKdC,KAAK,EAAE,KAAK7nF,MAAL,CAAY4nF,KAAZ,GAAoB,OAApB,GAA8B,QALvB;MAMdE,KAAK,EAAE,KAAK9nF,MAAL,CAAY4nF,KAAZ,GAAoB,OAApB,GAA8B,QANvB;MAOd0e,UAAU,EAAE,cAPE;MAQdC,QAAQ,EAAE,WARI;MASdxe,EAAE,EAAE;IATU,CAAlB;EAWH;;EACD0d,cAAc,CAAC7rG,SAAf,CAAyB4sG,MAAzB,GAAkC,YAAY;IAC1C,IAAI,CAACrqG,uEAAiB,CAAC,KAAKu8E,OAAN,CAAtB,EAAsC;MAClC;IACH,CAHyC,CAI1C;;;IACA,IAAI+tB,QAAQ,GAAGtrG,8DAAQ,CAAC,KAAK6E,MAAL,CAAY0uE,MAAZ,CAAmB,CAAnB,CAAD,EAAwB,KAAK1uE,MAAL,CAAYuvE,QAApC,CAAvB;IACAzzE,8DAAQ,CAAC,UAAD,EAAa,aAAb,EAA4B2qG,QAA5B,CAAR,CAN0C,CAO1C;;IACA,IAAInkD,IAAI,GAAG,EAAX;IACA,IAAIx5C,EAAE,GAAG3N,8DAAQ,CAAC,IAAD,EAAOsrG,QAAP,CAAjB;;IACA,IAAI,CAACtqG,uEAAiB,CAAC2M,EAAD,CAAtB,EAA4B;MACxBhN,8DAAQ,CAAC,SAAD,EAAYgN,EAAZ,EAAgBw5C,IAAhB,CAAR;IACH;;IACD,IAAI,CAACg4B,aAAa,CAACmsB,QAAD,CAAlB,EAA8B;MAC1B3qG,8DAAQ,CAAC,OAAD,EAAUg/E,cAAc,CAAC2rB,QAAD,CAAxB,EAAoCnkD,IAApC,CAAR;IACH;;IACD,IAAI,CAACnmD,uEAAiB,CAACmmD,IAAD,CAAtB,EAA8B;MAC1BxmD,8DAAQ,CAAC,cAAD,EAAiBwmD,IAAjB,EAAuBmkD,QAAvB,CAAR;IACH;;IACD,KAAK/tB,OAAL,GAAe,IAAI5W,iEAAJ,CAAa;MACxB3d,MAAM,EAAE;QACJoN,UAAU,EAAE,CAACk1C,QAAD,CADR;QACoB39F,EAAE,EAAE,QADxB;QACkC49F,QAAQ,EAAE,SAD5C;QACuD7sC,QAAQ,EAAE,cADjE;QACiFD,QAAQ,EAAE,cAD3F;QAC2G/mD,IAAI,EAAE,MADjH;QAEJ8zF,WAAW,EAAE,UAFT;QAEqB1d,OAAO,EAAE,UAF9B;QAE0CC,cAAc,EAAE,cAF1D;QAE0E0d,OAAO,EAAE;MAFnF,CADgB;MAKxBtnB,mBAAmB,EAAE,KAAKt/E,MAAL,CAAYs/E,mBALT;MAMxBlL,SAAS,EAAE,KAAKp0E,MAAL,CAAYm7F,sBAAZ,CAAmC/mB,SANtB;MAOxByyB,aAAa,EAAE,KAAKC,eAAL,CAAqBjtG,IAArB,CAA0B,IAA1B,CAPS;MAQxBktG,YAAY,EAAE,KAAKC,cAAL,CAAoBntG,IAApB,CAAyB,IAAzB,CARU;MASxBotG,aAAa,EAAE,KAAKC,YAAL,CAAkBrtG,IAAlB,CAAuB,IAAvB,CATS;MAUxBstG,WAAW,EAAE,KAAKC,aAAL,CAAmBvtG,IAAnB,CAAwB,IAAxB,CAVW;MAWxBwtG,YAAY,EAAE,IAXU;MAYxBC,WAAW,EAAE,KAAKC,aAAL,CAAmB1tG,IAAnB,CAAwB,IAAxB,CAZW;MAaxB2tG,QAAQ,EAAE,KAAKC,UAAL,CAAgB5tG,IAAhB,CAAqB,IAArB,CAbc;MAcxBokB,SAAS,EAAE,KAAKje,MAAL,CAAYie,SAdC;MAexBypF,SAAS,EAAE,KAAKC,WAAL,CAAiB9tG,IAAjB,CAAsB,IAAtB;IAfa,CAAb,CAAf;IAiBA,KAAK6+E,OAAL,CAAah0C,gBAAb,GAAgC,IAAhC;IACA,KAAKg0C,OAAL,CAAa1zC,QAAb,CAAsB,MAAM,KAAKhlC,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+B+6D,OAArD;IACA,KAAKxvB,UAAL;EACH,CAvCD;;EAwCAoxD,cAAc,CAAC7rG,SAAf,CAAyB+tG,WAAzB,GAAuC,YAAY;IAC/C,IAAI3oG,KAAK,GAAG,IAAZ;;IACA,IAAI,CAAC,KAAKgB,MAAL,CAAYg2E,QAAb,IAAyB,KAAK0C,OAAlC,EAA2C;MACvC,IAAI,KAAK14E,MAAL,CAAY65E,gBAAhB,EAAkC;QAC9B,IAAI,KAAKD,OAAT,EAAkB;UACd,KAAKA,OAAL,CAAax9D,OAAb;QACH;;QACD,KAAKw9D,OAAL,GAAe,IAAIrxC,2DAAJ,CAAc,KAAKmwC,OAAL,CAAah4E,OAA3B,EAAoC;UAC/C4yC,QAAQ,EAAE,KAAKtzC,MAAL,CAAYwqF,kBADyB;UAE/Ch+C,UAAU,EAAE,MAAMy9B,OAF6B;UAG/Cj9B,QAAQ,EAAE,CAHqC;UAI/CW,QAAQ,EAAE,KAAK3tC,MAAL,CAAYU,OAJyB;UAK/C2uC,IAAI,EAAE2qC,eAAe,CAACngF,IAAhB,CAAqB,IAArB,EAA2B,KAAKmG,MAAhC,CALyC;UAM/CstC,SAAS,EAAE,UAAUruC,IAAV,EAAgB;YACvB06E,gBAAgB,CAAC36E,KAAK,CAACgB,MAAP,EAAef,IAAf,EAAqBD,KAAK,CAAC46E,OAA3B,CAAhB;UACH,CAR8C;UAS/C3nC,QAAQ,EAAEmnC,eAAe,CAACv/E,IAAhB,CAAqB,IAArB,EAA2B,KAAKmG,MAAhC,CATqC;UAU/C6tC,cAAc,EAAE,IAV+B;UAW/CsC,gBAAgB,EAAE,IAX6B;UAY/CP,MAAM,EAAE,KAAK+9B,UAAL,CAAgB9zE,IAAhB,CAAqB,IAArB;QAZuC,CAApC,CAAf;MAcH,CAlBD,MAmBK,IAAI,CAAC,KAAKmG,MAAL,CAAY65E,gBAAb,IAAiC,KAAKD,OAA1C,EAAmD;QACpD,KAAKA,OAAL,CAAax9D,OAAb;MACH;IACJ;EACJ,CA1BD;;EA2BAqpF,cAAc,CAAC7rG,SAAf,CAAyB+zE,UAAzB,GAAsC,UAAU1uE,IAAV,EAAgB;IAClD,IAAIutC,UAAU,GAAGvtC,IAAI,CAACs0C,MAAL,CAAYvd,MAA7B;;IACA,IAAI,CAACwW,UAAU,CAACzf,SAAX,CAAqBM,QAArB,CAA8B48C,OAA9B,CAAL,EAA6C;MACzC,OAAO,IAAP;IACH;;IACD,IAAIwgB,MAAM,GAAG96D,6DAAO,CAAC6c,UAAD,EAAa,IAAb,CAApB;IACA,KAAKxsC,MAAL,CAAYo3E,QAAZ,GAAuB,EAAvB;IACA,KAAKp3E,MAAL,CAAY0vC,QAAZ,GAAuB,EAAvB;IACA,KAAK1vC,MAAL,CAAYgwE,cAAZ,GAA6B,EAA7B;IACA,KAAKhwE,MAAL,CAAYgwE,cAAZ,GAA6B,CAACya,MAAD,CAA7B;IACA,KAAKzqF,MAAL,CAAYu3E,SAAZ,GAAwB,EAAxB;IACAlH,SAAS,CAAC,KAAKrwE,MAAN,EAAcyqF,MAAd,CAAT,CAXkD,CAYlD;;IACA,KAAKzqF,MAAL,CAAY0vC,QAAZ,GAAuB,KAAKk4D,WAAL,CAAiBnd,MAAjB,CAAvB;IACA,KAAKzqF,MAAL,CAAYo3E,QAAZ,GAAuB,KAAKywB,WAAL,CAAiBpd,MAAjB,EAAyB,KAAKzqF,MAAL,CAAY0vC,QAAZ,CAAqB,CAArB,EAAwBt0B,IAAjD,CAAvB;IACA,KAAKpb,MAAL,CAAYu3E,SAAZ,CAAsB/3E,IAAtB,CAA2B,KAAKQ,MAAL,CAAY0vC,QAAZ,CAAqB,CAArB,EAAwBt0B,IAAnD;IACAy9D,wBAAwB,CAAC,KAAK74E,MAAN,CAAxB;IACA,OAAO,KAAKA,MAAL,CAAYm5E,kBAAnB;EACH,CAlBD;;EAmBAssB,cAAc,CAAC7rG,SAAf,CAAyBiuG,WAAzB,GAAuC,UAAUpd,MAAV,EAAkB53E,IAAlB,EAAwB;IAC3D,IAAI07D,IAAI,GAAG,KAAKu5B,WAAL,CAAiBrd,MAAjB,EAAyB53E,IAAzB,CAAX;IACA,OAAOu9D,aAAa,CAAC7B,IAAD,CAApB;EACH,CAHD;;EAIAk3B,cAAc,CAAC7rG,SAAf,CAAyBkuG,WAAzB,GAAuC,UAAU7nG,IAAV,EAAgB4S,IAAhB,EAAsB;IACzD,IAAI/J,EAAE,GAAG7I,IAAI,CAACqwB,YAAL,CAAkB,SAAlB,CAAT;IACA,IAAIg+C,OAAO,GAAG,KAAKtuE,MAAL,CAAYyuE,KAAZ,GAAoB3lE,EAApB,GAAyB+J,IAAvC;IACA,OAAO27D,OAAO,CAACvuE,IAAD,EAAOquE,OAAP,EAAgB,KAAKtuE,MAAL,CAAYyuE,KAA5B,CAAd;EACH,CAJD;;EAKAg3B,cAAc,CAAC7rG,SAAf,CAAyB6tG,UAAzB,GAAsC,UAAUxoG,IAAV,EAAgB;IAClD,IAAIilB,SAAS,GAAG;MACZxjB,OAAO,EAAEzB,IAAI,CAACgB,IADF;MAEZ6zE,WAAW,EAAE70E,IAAI,CAAC8oG,QAFN;MAGZ1pE,MAAM,EAAE;IAHI,CAAhB;IAKA,KAAKr+B,MAAL,CAAY+rB,OAAZ,CAAoB,UAApB,EAAgC7H,SAAhC;EACH,CAPD,CAtIsD,CA8ItD;;;EACAuhF,cAAc,CAAC7rG,SAAf,CAAyBouG,QAAzB,GAAoC,UAAUt2B,KAAV,EAAiB17C,MAAjB,EAAyBiyE,OAAzB,EAAkC;IAClE;IACA,IAAIC,WAAW,GAAGjzB,cAAc,CAACvD,KAAD,CAAhC;;IACA,IAAIw2B,WAAW,CAACntG,MAAZ,GAAqB,CAArB,KACCmtG,WAAW,CAAC,CAAD,CAAX,CAAe9tB,UAAf,IAA6B,IAA7B,IAAqC,KAAKwtB,WAAL,CAAiB5xE,MAAjB,EAAyB,CAAzB,EAA4BokD,UAA5B,IAA0C,IAA/E,IAAuF8tB,WAAW,CAAC,CAAD,CAAX,CAAe9tB,UAAf,KAA8B,KAAKwtB,WAAL,CAAiB5xE,MAAjB,EAAyB,CAAzB,EAA4BokD,UADlJ,CAAJ,EACmK;MAC/J,IAAIttE,QAAQ,GAAG,CAAf,CAD+J,CAE/J;;MACA,IAAIwpE,OAAO,GAAG4xB,WAAd;;MACA,OAAOp7F,QAAQ,GAAGo7F,WAAW,CAACntG,MAA9B,EAAsC;QAClC;QACAu7E,OAAO,CAACxpE,QAAD,CAAP,CAAkBq7F,QAAlB,GAA6B,aAA7B,CAFkC,CAGlC;;QACA,IAAI7lD,IAAI,GAAG,EAAX;QACA,IAAIx5C,EAAE,GAAG3N,8DAAQ,CAAC,IAAD,EAAOm7E,OAAO,CAACxpE,QAAD,CAAd,CAAjB;;QACA,IAAI,CAAC3Q,uEAAiB,CAAC2M,EAAD,CAAtB,EAA4B;UACxBhN,8DAAQ,CAAC,SAAD,EAAYgN,EAAZ,EAAgBw5C,IAAhB,CAAR;QACH;;QACD,IAAI,CAACg4B,aAAa,CAAChE,OAAO,CAACxpE,QAAD,CAAR,CAAlB,EAAuC;UACnChR,8DAAQ,CAAC,OAAD,EAAUg/E,cAAc,CAACxE,OAAO,CAACxpE,QAAD,CAAR,CAAxB,EAA6Cw1C,IAA7C,CAAR;QACH;;QACD,IAAI,CAACnmD,uEAAiB,CAACmmD,IAAD,CAAtB,EAA8B;UAC1BxmD,8DAAQ,CAAC,cAAD,EAAiBwmD,IAAjB,EAAuBg0B,OAAO,CAACxpE,QAAD,CAA9B,CAAR;QACH;;QACDA,QAAQ;MACX,CApB8J,CAqB/J;;;MACA,KAAK4rE,OAAL,CAAa0vB,QAAb,CAAsBF,WAAtB,EAAmClyE,MAAnC,EAA2C,IAA3C,EAAiDiyE,OAAjD;IACH;EACJ,CA5BD,CA/IsD,CA4KtD;;;EACAxC,cAAc,CAAC7rG,SAAf,CAAyBktG,eAAzB,GAA2C,UAAU7nG,IAAV,EAAgB;IACvD,IAAI,CAACA,IAAI,CAACkhF,YAAN,IAAsB,CAAC,KAAK4lB,YAA5B,IAA4C,CAAC,KAAKC,iBAAlD,IAAuE,CAAC,KAAKH,aAA7E,IAA8F,CAAC,KAAKC,cAApG,IAAsH,KAAKO,iBAA/H,EAAkJ;MAC9I,KAAKA,iBAAL,GAAyB,KAAzB;MACA,KAAKD,iBAAL,GAAyB,KAAzB;MACA;IACH;;IACD,IAAI,CAAC,KAAKF,YAAV,EAAwB;MACpB,KAAKlmG,MAAL,CAAYkwE,YAAZ,GAA2B,gBAA3B,CADoB,CAEpB;;MACA,IAAI63B,QAAQ,GAAG,KAAKH,WAAL,CAAiBzsG,8DAAQ,CAAC,IAAD,EAAO8D,IAAI,CAAC8oG,QAAZ,CAAzB,CAAf;;MACA,IAAI9oG,IAAI,CAACgB,IAAL,CAAUqwB,YAAV,CAAuB,UAAvB,MAAuC,KAAKtwB,MAAL,CAAY0uE,MAAZ,CAAmB,KAAK1uE,MAAL,CAAY0uE,MAAZ,CAAmB3zE,MAAnB,GAA4B,CAA/C,CAAvC,IAA4F,CAAC,KAAKgrG,YAAlG,IAAkH,CAAC,KAAKK,iBAAxH,IAA6I,KAAKJ,iBAAtJ,EAAyK;QACrK,KAAKI,iBAAL,GAAyB,KAAzB;;QACA,IAAI,CAAC,KAAKJ,iBAAV,EAA6B;UACzB,KAAKA,iBAAL,GAAyB,IAAzB;UACA,IAAIqC,cAAc,GAAG;YAAEvyE,MAAM,EAAE72B,IAAI,CAAC62B,MAAf;YAAuBg+C,WAAW,EAAEi0B,QAAQ,CAAC,CAAD,CAA5C;YAAiD5nB,YAAY,EAAElhF,IAAI,CAACkhF;UAApE,CAArB;UACA,KAAKngF,MAAL,CAAY+rB,OAAZ,CAAoB,YAApB,EAAkCs8E,cAAlC;QACH;;QACD,IAAI,CAAC,KAAKtC,YAAV,EAAwB;UACpB,IAAI7hF,SAAS,GAAG;YAAEC,MAAM,EAAE,KAAV;YAAiB2vD,WAAW,EAAEi0B,QAAQ,CAAC,CAAD,CAAtC;YAA2C1pE,MAAM,EAAE;UAAnD,CAAhB;UACA,KAAKr+B,MAAL,CAAY+rB,OAAZ,CAAoB,UAApB,EAAgC7H,SAAhC;UACAjlB,IAAI,CAACklB,MAAL,GAAcD,SAAS,CAACC,MAAxB;QACH;;QACD,IAAIllB,IAAI,CAACklB,MAAT,EAAiB;UACb,KAAKkiF,iBAAL,GAAyB,KAAKD,iBAAL,GAAyB,KAAKD,gBAAL,CAAsB,CAAtB,MAA6BlnG,IAAI,CAACgB,IAAL,CAAUqwB,YAAV,CAAuB,UAAvB,CAAtD,GAA2F,KAApH;UACA,KAAK81E,iBAAL,GAAyB,IAAzB;UACA,KAAKJ,iBAAL,GAAyB,KAAzB;UACA,KAAKG,gBAAL,GAAwB,KAAKztB,OAAL,CAAa/I,aAArC;UACA,KAAK+I,OAAL,CAAa/I,aAAb,GAA6B,CAAC1wE,IAAI,CAACgB,IAAL,CAAUqwB,YAAV,CAAuB,UAAvB,CAAD,CAA7B;QACH;MACJ,CAnBD,MAoBK,IAAI,KAAK61E,gBAAL,CAAsB,CAAtB,MAA6BlnG,IAAI,CAACgB,IAAL,CAAUqwB,YAAV,CAAuB,UAAvB,CAAjC,EAAqE;QACtE,IAAI+3E,cAAc,GAAG;UAAEvyE,MAAM,EAAE72B,IAAI,CAAC62B,MAAf;UAAuBg+C,WAAW,EAAEi0B,QAAQ,CAAC,CAAD,CAA5C;UAAiD5nB,YAAY,EAAE,KAAKimB;QAApE,CAArB;QACA,KAAKpmG,MAAL,CAAY+rB,OAAZ,CAAoB,YAApB,EAAkCs8E,cAAlC;MACH;IACJ;EACJ,CAnCD,CA7KsD,CAiNtD;;;EACA5C,cAAc,CAAC7rG,SAAf,CAAyBugG,0BAAzB,GAAsD,UAAUl6F,IAAV,EAAgB;IAClE,IAAInF,IAAI,GAAG,KAAK49E,OAAL,CAAakvB,WAAb,CAAyB3nG,IAAzB,CAAX,CADkE,CAElE;;IACA,KAAKD,MAAL,CAAY4wE,aAAZ,GAA4B,EAA5B;IACA,KAAK5wE,MAAL,CAAYmxE,QAAZ,GAAuBr2E,IAAvB;IACA,KAAKu9F,UAAL,GAAkBp4F,IAAlB;IACA,KAAKD,MAAL,CAAYkwE,YAAZ,GAA2B,gBAA3B;IACA,IAAIhsD,SAAS,GAAG;MAAEC,MAAM,EAAE,KAAV;MAAiB2vD,WAAW,EAAEh5E,IAAI,CAAC,CAAD,CAAlC;MAAuCujC,MAAM,EAAE;IAA/C,CAAhB;IACA,KAAKr+B,MAAL,CAAY+rB,OAAZ,CAAoB,UAApB,EAAgC7H,SAAhC;IACA,KAAKkiF,iBAAL,GAAyB,IAAzB;;IACA,IAAI,CAACliF,SAAS,CAACC,MAAf,EAAuB;MACnBkqD,UAAU,CAACpuE,IAAD,EAAO,KAAKD,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAAP,EAAgC,KAAKnxE,MAArC,CAAV;MACAgyE,IAAI,CAAC,KAAKhyE,MAAN,EAAc,KAAK6lG,aAAL,GAAqB/4B,QAArB,GAAgC1B,WAA9C,EAA2D,KAAKprE,MAAL,CAAYuuE,IAAvE,CAAJ;MACA,KAAKvuE,MAAL,CAAYmoF,WAAZ,GAA0BloF,IAA1B;MACA,KAAK4lG,aAAL,GAAqB,KAAKC,cAAL,GAAsB,KAAKC,YAAL,GAAoB,KAA/D;MACA,KAAKrtB,OAAL,CAAa/I,aAAb,GAA6B,CAAC1vE,IAAI,CAACqwB,YAAL,CAAkB,UAAlB,CAAD,CAA7B;IACH;EACJ,CAjBD;;EAkBAm1E,cAAc,CAAC7rG,SAAf,CAAyBotG,cAAzB,GAA0C,UAAU/nG,IAAV,EAAgB;IACtD,IAAI,KAAKe,MAAL,CAAYwwE,mBAAZ,IAAmC,KAAKxwE,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAnE,IAAgF,CAAC,KAAKy1B,YAA1F,EAAwG;MACpG,KAAKlmG,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAhC,CAA0C/vE,OAA1C,CAAkDpF,KAAlD,GAA0D,EAA1D;MACA,KAAK0E,MAAL,CAAY0wE,UAAZ,GAAyB,KAAzB;MACA,KAAK01B,iBAAL,GAAyB,KAAzB;IACH;;IACD,KAAKpmG,MAAL,CAAY0sF,aAAZ,GAA4B,EAA5B;;IACA,IAAI,CAACztF,IAAI,CAACkhF,YAAN,IAAsB,CAAC,KAAK4lB,YAA5B,IAA4C,CAAC,KAAKC,iBAAlD,IAAuE,CAAC,KAAKH,aAA7E,IAA8F,CAAC,KAAKC,cAAxG,EAAwH;MACpH,KAAK9lG,MAAL,CAAY0uE,MAAZ,GAAqBC,SAAS,CAAC1vE,IAAI,CAACgB,IAAN,CAA9B;MACA;IACH;;IACD,KAAKo4F,UAAL,GAAkBp5F,IAAI,CAACgB,IAAvB;IACA,KAAKD,MAAL,CAAYkwE,YAAZ,GAA2B,gBAA3B,CAZsD,CAatD;;IACA,IAAI63B,QAAQ,GAAG,KAAKH,WAAL,CAAiBzsG,8DAAQ,CAAC,IAAD,EAAO8D,IAAI,CAAC8oG,QAAZ,CAAzB,CAAf;IACA,KAAK/nG,MAAL,CAAY4wE,aAAZ,GAA4B,EAA5B;IACA,KAAK5wE,MAAL,CAAYmxE,QAAZ,GAAuB42B,QAAvB;IACA,IAAItN,YAAY,GAAG,KAAKz6F,MAAL,CAAYuuE,IAA/B;IACA,IAAI+5B,KAAK,GAAGt5E,4DAAM,CAAC,gBAAgB,KAAK0pD,OAAL,CAAa/I,aAAb,CAA2B,CAA3B,CAAhB,GAAgD,IAAjD,EAAuD,KAAK+I,OAAL,CAAah4E,OAApE,CAAlB;;IACA,IAAI,CAAC,KAAKqlG,YAAN,IAAsB,KAAKC,iBAA3B,IAAgDsC,KAAK,CAACvlG,aAAN,CAAoB,cAApB,EAAoCpB,SAApC,KAAkD,KAAK3B,MAAL,CAAY4uE,SAAZ,CAAsB,KAAK5uE,MAAL,CAAY4uE,SAAZ,CAAsB7zE,MAAtB,GAA+B,CAArD,CAAtG,EAA+J;MAC3JszE,UAAU,CAACpvE,IAAI,CAACgB,IAAN,EAAY,KAAKD,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAAZ,EAAqC,KAAKnxE,MAA1C,CAAV;IACH,CAFD,MAGK;MACD,KAAKA,MAAL,CAAY0uE,MAAZ,GAAqBC,SAAS,CAAC1vE,IAAI,CAACgB,IAAN,CAA9B;MACA,KAAKD,MAAL,CAAYmoF,WAAZ,GAA0BlpF,IAAI,CAACgB,IAA/B;IACH;;IACD,KAAKsoG,gBAAL,GAAwB,IAAxB;;IACA,IAAItpG,IAAI,CAACgB,IAAL,CAAU8C,aAAV,CAAwB,MAAM0mE,KAA9B,KAAwCxqE,IAAI,CAACgB,IAAL,CAAU8C,aAAV,CAAwB,MAAM6iE,SAA9B,MAA6C,IAAzF,EAA+F;MAC3F,KAAK2iC,gBAAL,GAAwB,KAAxB;IACH;;IACD,IAAI9N,YAAY,KAAK,KAAKz6F,MAAL,CAAYuuE,IAAjC,EAAuC;MACnC,IAAI,CAAC,KAAKw3B,YAAN,IAAsB,KAAKC,iBAA/B,EAAkD;QAC9Ch0B,IAAI,CAAC,KAAKhyE,MAAN,EAAc,KAAK6lG,aAAL,GAAqB/4B,QAArB,GAAgC1B,WAA9C,EAA2D,KAAKprE,MAAL,CAAYuuE,IAAvE,CAAJ;QACA,KAAK63B,iBAAL,GAAyB,IAAzB;MACH;;MACD,KAAKpmG,MAAL,CAAYmoF,WAAZ,GAA0BlpF,IAAI,CAACgB,IAA/B;IACH;;IACD,KAAK4lG,aAAL,GAAqB,KAAKC,cAAL,GAAsB,KAAKC,YAAL,GAAoB,KAAKC,iBAAL,GAAyB,KAAxF;EACH,CAtCD;EAuCA;EACA;;;EACAP,cAAc,CAAC7rG,SAAf,CAAyB4uG,UAAzB,GAAsC,UAAUvpG,IAAV,EAAgB;IAClD,KAAK4mG,aAAL,GAAqB,IAArB;IACA,KAAK4C,gBAAL,CAAsBxpG,IAAI,CAAC,CAAD,CAA1B;EACH,CAHD;EAIA;;;EACAwmG,cAAc,CAAC7rG,SAAf,CAAyBstG,YAAzB,GAAwC,UAAUjoG,IAAV,EAAgB;IACpD,IAAI,CAACA,IAAI,CAACkhF,YAAN,IAAsB,CAAC,KAAK5rC,MAAhC,EAAwC;MACpC;IACH;;IACD,IAAIt1C,IAAI,CAACgB,IAAL,CAAU8C,aAAV,CAAwB,MAAM6iE,SAA9B,MAA6C,IAAjD,EAAuD;MACnD,IAAI/yD,IAAI,GAAG1X,8DAAQ,CAAC,MAAD,EAAS8D,IAAI,CAAC8oG,QAAd,CAAnB;MACA,IAAIj/F,EAAE,GAAG7J,IAAI,CAACgB,IAAL,CAAUqwB,YAAV,CAAuB,SAAvB,CAAT;MACA,IAAI4+C,IAAI,GAAG/yE,uEAAiB,CAAC2M,EAAD,CAAjB,GAAwB,KAAxB,GAAgC,IAA3C;MACA,IAAIwlE,OAAO,GAAGnyE,uEAAiB,CAAC2M,EAAD,CAAjB,GAAwB+J,IAAxB,GAA+B/J,EAA7C;MACA,IAAIylE,IAAI,GAAGC,OAAO,CAACvvE,IAAI,CAACgB,IAAN,EAAYquE,OAAZ,EAAqBY,IAArB,CAAlB;MACA,KAAKq5B,gBAAL,GAAwBtpG,IAAI,CAACgB,IAAL,CAAUqwB,YAAV,CAAuB,UAAvB,CAAxB;MACA,KAAKtwB,MAAL,CAAYw4E,UAAZ,GAAyB,KAAK+vB,gBAA9B;MACA,KAAKvoG,MAAL,CAAYmxE,QAAZ,GAAuB,KAAKy2B,WAAL,CAAiBzsG,8DAAQ,CAAC,IAAD,EAAO8D,IAAI,CAAC8oG,QAAZ,CAAzB,CAAvB;MACA/1B,IAAI,CAAC,KAAKhyE,MAAN,EAAcmsE,UAAd,EAA0BoC,IAA1B,CAAJ;MACA,KAAK03B,kBAAL,GAA0B,IAA1B;IACH;EACJ,CAhBD;EAiBA;;;EACAR,cAAc,CAAC7rG,SAAf,CAAyB8uG,cAAzB,GAA0C,UAAUzpG,IAAV,EAAgB;IACtD,KAAK+oG,QAAL,CAAc/oG,IAAI,CAACyyE,KAAnB,EAA0B,KAAK62B,gBAA/B,EAAiD,KAAjD;IACA,KAAKvoG,MAAL,CAAYw4E,UAAZ,GAAyB,IAAzB;IACA,KAAKytB,kBAAL,GAA0B,KAA1B;EACH,CAJD;;EAKAR,cAAc,CAAC7rG,SAAf,CAAyBwtG,aAAzB,GAAyC,UAAUnoG,IAAV,EAAgB;IACrD,KAAKe,MAAL,CAAYkwE,YAAZ,GAA2B,gBAA3B;IACA,KAAKi2B,gBAAL,GAAwB,KAAKztB,OAAL,CAAa/I,aAArC;IACA,KAAK0oB,UAAL,GAAkBp5F,IAAI,CAACgB,IAAvB;;IACA,IAAKhB,IAAI,CAACrE,KAAL,CAAW86C,KAAX,KAAqB,CAAtB,IAA6Bz2C,IAAI,CAACgB,IAAL,CAAUqwB,YAAV,CAAuB,UAAvB,MAAuC,KAAKooD,OAAL,CAAa/I,aAAb,CAA2B,CAA3B,CAAxE,EAAwG;MACpG,KAAKo2B,YAAL,GAAoB,IAApB;MACA,KAAKK,iBAAL,GAAyB,IAAzB;MACA,KAAK1tB,OAAL,CAAa/I,aAAb,GAA6B,CAAC1wE,IAAI,CAACgB,IAAL,CAAUqwB,YAAV,CAAuB,UAAvB,CAAD,CAA7B;IACH,CAJD,MAKK,IAAIrxB,IAAI,CAACgB,IAAL,CAAUqwB,YAAV,CAAuB,UAAvB,MAAuC,KAAKooD,OAAL,CAAa/I,aAAb,CAA2B,CAA3B,CAAvC,IAAwE,KAAK3vE,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAjH,EAAoH;MACrH,KAAKiF,MAAL,CAAY4xB,aAAZ,CAA0B;QAAEg/C,aAAa,EAAE;MAAjB,CAA1B,EAAiD,IAAjD;MACA,IAAImpB,MAAM,GAAI,KAAK/5F,MAAL,CAAYkyE,IAAZ,KAAqB,YAAtB,GAAsC,gBAAtC,GAAyD,aAAtE;MACA,KAAKlyE,MAAL,CAAYgb,MAAZ,CAAmBwvD,YAAnB,EAAiC;QAAEnsC,MAAM,EAAE07D,MAAV;QAAkB5+D,OAAO,EAAE;UAAEy1C,aAAa,EAAE;QAAjB;MAA3B,CAAjC;IACH,CAJI,MAKA,IAAI3xE,IAAI,CAACgB,IAAL,CAAUqwB,YAAV,CAAuB,UAAvB,MAAuC,KAAKooD,OAAL,CAAa/I,aAAb,CAA2B,CAA3B,CAAvC,IAAwE,CAAC,KAAKy2B,iBAA9E,IAAmG,CAAC,KAAKH,kBAA7G,EAAiI;MAClI,IAAIhnG,IAAI,CAACrE,KAAL,CAAW86C,KAAX,KAAqB,CAAzB,EAA4B;QACxB,KAAKqwD,YAAL,GAAoB,IAApB;MACH;;MACD,KAAKC,iBAAL,GAAyB,IAAzB;MACA,KAAKI,iBAAL,GAAyB,IAAzB;MACA,KAAK1tB,OAAL,CAAa/I,aAAb,GAA6B,CAAC1wE,IAAI,CAACgB,IAAL,CAAUqwB,YAAV,CAAuB,UAAvB,CAAD,CAA7B;IACH;EACJ,CAtBD;EAuBA;;;EACAm1E,cAAc,CAAC7rG,SAAf,CAAyB2tG,aAAzB,GAAyC,UAAUtoG,IAAV,EAAgB;IACrD,IAAI,CAAC9C,uEAAiB,CAAC8C,IAAI,CAAC0pG,SAAN,CAAtB,EAAwC;MACpC1pG,IAAI,CAACklB,MAAL,GAAc,IAAd;IACH;EACJ,CAJD;;EAKAshF,cAAc,CAAC7rG,SAAf,CAAyB6yF,aAAzB,GAAyC,UAAUxtF,IAAV,EAAgB;IACrD,KAAKe,MAAL,CAAYyvE,KAAZ,GAAoB,KAApB,CADqD,CAErD;;IACA,IAAI6E,SAAS,GAAGn5E,8DAAQ,CAAC,KAAK6E,MAAL,CAAY0uE,MAAZ,CAAmB,KAAK1uE,MAAL,CAAY0uE,MAAZ,CAAmB3zE,MAAnB,GAA4B,CAA/C,CAAD,EAAoD,KAAKiF,MAAL,CAAYu0E,OAAhE,CAAxB;;IACA,IAAI,KAAKg0B,gBAAL,KAA0B,KAA9B,EAAqC;MACjC,IAAID,KAAK,GAAGt5E,4DAAM,CAAC,gBAAgB,KAAK0pD,OAAL,CAAa/I,aAAb,CAA2B,CAA3B,CAAhB,GAAgD,IAAjD,EAAuD,KAAK+I,OAAL,CAAah4E,OAApE,CAAlB;MACA,IAAI+nF,EAAE,GAAI,CAACtsF,uEAAiB,CAACmsG,KAAD,CAAnB,GAA8Bt5E,4DAAM,CAAC,MAAM82C,WAAP,EAAoBwiC,KAApB,CAApC,GAAiE,IAA1E;;MACA,IAAInsG,uEAAiB,CAACssF,EAAD,CAArB,EAA2B;QACvB,KAAKuf,QAAL,CAAc/oG,IAAI,CAACyyE,KAAnB,EAA0B,KAAKgH,OAAL,CAAa/I,aAAb,CAA2B,CAA3B,CAA1B,EAAyD,CAAC,KAAKi2B,UAA/D;MACH;;MACD,KAAK2C,gBAAL,GAAwB,EAAxB;IACH;;IACD,KAAK3C,UAAL,GAAkB,KAAlB;;IACA,IAAIzpG,uEAAiB,CAACm4E,SAAD,CAArB,EAAkC;MAC9Bx4E,8DAAQ,CAAC,KAAKkE,MAAL,CAAY0uE,MAAZ,CAAmB,KAAK1uE,MAAL,CAAY0uE,MAAZ,CAAmB3zE,MAAnB,GAA4B,CAA/C,CAAD,EAAoDkE,IAAI,CAACyyE,KAAzD,EAAgE,KAAK1xE,MAAL,CAAYu0E,OAA5E,CAAR;IACH;;IACD,IAAI,KAAKv0E,MAAL,CAAYw5E,SAAZ,CAAsB2lB,eAAtB,IAAyC,CAAE,KAAKn/F,MAAL,CAAYyuE,KAA3D,EAAmE;MAC/D,KAAKm6B,UAAL,CAAgB3pG,IAAhB;IACH;EACJ,CAnBD;;EAoBAwmG,cAAc,CAAC7rG,SAAf,CAAyBgvG,UAAzB,GAAsC,UAAU3pG,IAAV,EAAgB;IAClD,IAAI,KAAKy5E,OAAT,EAAkB;MACd,IAAI5vE,EAAE,GAAG,KAAK4vE,OAAL,CAAa/I,aAAb,CAA2B,CAA3B,CAAT;MACA,KAAKk5B,cAAL,CAAoB5pG,IAApB,EAA0B6J,EAA1B;IACH;EACJ,CALD;;EAMA28F,cAAc,CAAC7rG,SAAf,CAAyBivG,cAAzB,GAA0C,UAAU5pG,IAAV,EAAgB6J,EAAhB,EAAoB;IAC1D,IAAIggG,QAAQ,GAAG,KAAKpwB,OAAL,CAAaqwB,aAAb,CAA2B3rG,OAA3B,CAAmC0L,EAAnC,MAA2C,CAAC,CAA5C,GAAgD,KAAhD,GAAwD,IAAvE;IACA,KAAKkgG,gBAAL,CAAsBlgG,EAAtB;IACA,KAAKk/F,QAAL,CAAc/oG,IAAI,CAACyyE,KAAnB,EAA0B5oE,EAA1B,EAA8B,CAACggG,QAA/B;EACH,CAJD;;EAKArD,cAAc,CAAC7rG,SAAf,CAAyBovG,gBAAzB,GAA4C,UAAUlgG,EAAV,EAAc;IACtD,IAAIw/F,KAAK,GAAGt5E,4DAAM,CAAC,gBAAgBlmB,EAAhB,GAAqB,IAAtB,EAA4B,KAAK4vE,OAAL,CAAah4E,OAAzC,CAAlB;IACA,IAAIV,MAAM,GAAGgvB,4DAAM,CAAC,MAAM82C,WAAP,EAAoBwiC,KAApB,CAAnB;IACA,IAAIW,MAAM,GAAGjpG,MAAM,GAAG3C,KAAK,CAACzD,SAAN,CAAgBmH,KAAhB,CAAsBlB,IAAtB,CAA2BG,MAAM,CAACoiD,QAAlC,CAAH,GAAiD,IAApE;;IACA,IAAI6mD,MAAJ,EAAY;MACR,KAAKvwB,OAAL,CAAagtB,WAAb,CAAyBuD,MAAzB;IACH;EACJ,CAPD;;EAQAxD,cAAc,CAAC7rG,SAAf,CAAyBsvG,SAAzB,GAAqC,UAAUjqG,IAAV,EAAgB;IACjD,IAAIkqG,KAAK,GAAG,KAAKnpG,MAAL,CAAY0uE,MAAZ,CAAmB,KAAK1uE,MAAL,CAAY0uE,MAAZ,CAAmB3zE,MAAnB,GAA4B,CAA/C,CAAZ;IACA,KAAK29E,OAAL,CAAa0wB,SAAb,CAAuB,KAAK1wB,OAAL,CAAa/I,aAApC;IACA,KAAK+I,OAAL,CAAa/I,aAAb,GAA6B,CAACw5B,KAAD,CAA7B;IACA,KAAKZ,gBAAL,GAAwB,KAAxB;IACA,KAAK9b,aAAL,CAAmBxtF,IAAnB;EACH,CAND;;EAOAwmG,cAAc,CAAC7rG,SAAf,CAAyBgzF,UAAzB,GAAsC,UAAU3tF,IAAV,EAAgB;IAClD,IAAI,KAAKe,MAAL,CAAYkwE,YAAZ,KAA6B,gBAAjC,EAAmD;MAC/C,IAAIjxE,IAAI,CAAC+2B,MAAL,CAAYjzB,aAAZ,CAA0B,MAAM0mE,KAAhC,CAAJ,EAA4C;QACxC,KAAKiP,OAAL,CAAa0wB,SAAb,CAAuB,KAAK1wB,OAAL,CAAa/I,aAApC;MACH;IACJ;EACJ,CAND;;EAOA81B,cAAc,CAAC7rG,SAAf,CAAyBomG,YAAzB,GAAwC,UAAU/gG,IAAV,EAAgB;IACpD,KAAKunG,MAAL;IACA,KAAKwB,QAAL,CAAc/oG,IAAI,CAACyyE,KAAnB,EAA0Bv2E,8DAAQ,CAAC,QAAD,EAAW8D,IAAI,CAAC24E,GAAhB,CAAlC,EAAwD,KAAxD;EACH,CAHD;;EAIA6tB,cAAc,CAAC7rG,SAAf,CAAyBmyF,aAAzB,GAAyC,UAAU9sF,IAAV,EAAgB;IACrD,KAAKunG,MAAL;IACA,IAAI19F,EAAE,GAAG3N,8DAAQ,CAAC,QAAD,EAAW8D,IAAI,CAAC24E,GAAhB,CAAjB;IACA,KAAKoxB,gBAAL,CAAsBlgG,EAAtB;IACA,KAAKk/F,QAAL,CAAc/oG,IAAI,CAACyyE,KAAnB,EAA0B5oE,EAA1B,EAA8B,KAA9B;IACA,KAAK4vE,OAAL,CAAa/I,aAAb,GAA6B,CAAC,KAAK3vE,MAAL,CAAY0uE,MAAZ,CAAmB,KAAK1uE,MAAL,CAAY0uE,MAAZ,CAAmB3zE,MAAnB,GAA4B,CAA/C,CAAD,CAA7B;EACH,CAND;;EAOA0qG,cAAc,CAAC7rG,SAAf,CAAyBoyF,WAAzB,GAAuC,UAAU/sF,IAAV,EAAgB;IACnD,KAAK2pG,UAAL,CAAgB3pG,IAAhB;EACH,CAFD;;EAGAwmG,cAAc,CAAC7rG,SAAf,CAAyBsyF,cAAzB,GAA0C,YAAY;IAClD,IAAI,KAAKlsF,MAAL,CAAYkwE,YAAZ,KAA6B,gBAAjC,EAAmD;MAC/C,KAAKm5B,cAAL;IACH;EACJ,CAJD;;EAKA5D,cAAc,CAAC7rG,SAAf,CAAyBwyF,YAAzB,GAAwC,YAAY;IAChD,IAAI,KAAKpsF,MAAL,CAAYkwE,YAAZ,KAA6B,gBAAjC,EAAmD;MAC/C,KAAKo5B,gBAAL;MACA,IAAI1d,MAAM,GAAGzwF,8DAAQ,CAAC,MAAD,EAAS,KAAK6E,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAAT,CAArB;MACAyJ,MAAM,CAAC,KAAK56E,MAAN,EAAc,CAAC4rF,MAAD,CAAd,EAAwB,KAAK5rF,MAAL,CAAYuuE,IAApC,EAA0C,QAA1C,CAAN;IACH;EACJ,CAND;EAOA;;;EACAk3B,cAAc,CAAC7rG,SAAf,CAAyByyF,WAAzB,GAAuC,UAAUptF,IAAV,EAAgB;IACnD,IAAI,KAAKe,MAAL,CAAYkwE,YAAZ,KAA6B,gBAAjC,EAAmD;MAC/C,IAAIuG,YAAY,GAAG,KAAKiC,OAAL,CAAa/I,aAAb,CAA2B,CAA3B,CAAnB;MACA,IAAI45B,WAAW,GAAGv6E,4DAAM,CAAC,gBAAgBynD,YAAhB,GAA+B,IAAhC,EAAsC,KAAKiC,OAAL,CAAah4E,OAAnD,CAAxB;MACA,IAAI8oG,eAAe,GAAG75E,6DAAO,CAAC45E,WAAD,EAAc,MAAMzjC,WAApB,CAAP,CAAwCjyB,aAA9D;MACA,KAAK6kC,OAAL,CAAa/I,aAAb,GAA6B,CAAC65B,eAAe,CAACl5E,YAAhB,CAA6B,UAA7B,CAAD,CAA7B;MACA,KAAKooD,OAAL,CAAa1mD,QAAb;IACH;;IACD,KAAK42E,UAAL,CAAgB3pG,IAAhB;EACH,CATD;;EAUAwmG,cAAc,CAAC7rG,SAAf,CAAyB0yF,YAAzB,GAAwC,UAAUrtF,IAAV,EAAgB;IACpD,KAAK2pG,UAAL,CAAgB3pG,IAAhB;EACH,CAFD;;EAGAwmG,cAAc,CAAC7rG,SAAf,CAAyB2yF,YAAzB,GAAwC,YAAY;IAChD,IAAI,KAAKvsF,MAAL,CAAYkwE,YAAZ,KAA6B,gBAAjC,EAAmD;MAC/C,KAAKsc,gBAAL;IACH;EACJ,CAJD;EAKA;;;EACAiZ,cAAc,CAAC7rG,SAAf,CAAyB6vG,iBAAzB,GAA6C,UAAUxqG,IAAV,EAAgB;IACzD,IAAI6J,EAAE,GAAG,KAAKo9F,YAAL,GAAoB,KAAKA,YAAzB,GAAwC,KAAKlmG,MAAL,CAAY0uE,MAAZ,CAAmB,KAAK1uE,MAAL,CAAY0uE,MAAZ,CAAmB3zE,MAAnB,GAA4B,CAA/C,CAAjD;IACA,KAAK6qG,UAAL,GAAkB,KAAKltB,OAAL,CAAaqwB,aAAb,CAA2B3rG,OAA3B,CAAmC,KAAKs7E,OAAL,CAAa/I,aAAb,CAA2B,CAA3B,CAAnC,MAAsE,CAAC,CAAzF;IACA,KAAKk5B,cAAL,CAAoB5pG,IAApB,EAA0B6J,EAA1B;IACA,KAAK9I,MAAL,CAAYw4E,UAAZ,GAAyB,IAAzB;;IACA,IAAI,KAAK0tB,YAAT,EAAuB;MACnB,KAAKA,YAAL,GAAoB,IAApB;IACH,CAFD,MAGK;MACD;MACA,IAAItT,UAAU,GAAG,EAAjB;;MACA,IAAI,KAAK5yF,MAAL,CAAYyuE,KAAhB,EAAuB;QACnBmkB,UAAU,GAAG,IAAI7lC,6DAAJ,CAAgB,KAAK2rB,OAAL,CAAakvB,WAAb,EAAhB,EACThkD,YADS,CACI,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,IAAlB,EAAwB,OAAxB,EAAiC,KAAKtkD,MAAL,CAAY8jF,SAA7C,EAAwD,KAAxD,CADJ,CAAb;MAEH,CAHD,MAIK;QACD;QACA,IAAI/yE,KAAK,GAAG,IAAIg8C,6DAAJ,CAAgB,KAAK2rB,OAAL,CAAakvB,WAAb,EAAhB,EACRhkD,YADQ,CACK,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,KAAKo0B,OAAL,CAAav0B,MAAb,CAAoBtxC,IAAtC,EAA4C,OAA5C,EAAqD,KAAK7S,MAAL,CAAY29E,UAAjE,EAA6E,KAA7E,CADL,CAAZ;;QAEA,IAAI5sE,KAAK,CAAChW,MAAN,GAAe,CAAnB,EAAsB;UAClB63F,UAAU,GAAG,IAAI7lC,6DAAJ,CAAgBh8C,KAAhB,EACT6yC,YADS,CACI,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,SAAlB,EAA6B,OAA7B,EAAsCx7C,EAAtC,EAA0C,KAA1C,CADJ,CAAb;QAEH;MACJ;;MACD,IAAI8pF,UAAU,CAAC73F,MAAX,GAAoB,CAAxB,EAA2B;QACvB,IAAI2uG,IAAI,GAAGvuG,8DAAQ,CAAC,KAAKu9E,OAAL,CAAav0B,MAAb,CAAoBr7C,EAArB,EAAyB8pF,UAAU,CAAC,CAAD,CAAnC,CAAnB;QACA,KAAKla,OAAL,CAAa/I,aAAb,GAA6B,CAAC+5B,IAAD,CAA7B;QACA,KAAKhxB,OAAL,CAAa1mD,QAAb;MACH;IACJ;EACJ,CA9BD;EA+BA;;;EACAyzE,cAAc,CAAC7rG,SAAf,CAAyBo9F,WAAzB,GAAuC,UAAU/3F,IAAV,EAAgB;IACnD,IAAI,KAAKe,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAhC,CAA0C/vE,OAA1C,CAAkDpF,KAAlD,KAA4D,EAA5D,IAAkE,CAAC,KAAK0E,MAAL,CAAY0wE,UAAnF,EAA+F;MAC3F,KAAKk4B,UAAL,CAAgB3pG,IAAhB;IACH,CAFD,MAGK;MACD;MACA,IAAInE,IAAI,GAAG,KAAK49E,OAAL,CAAakvB,WAAb,EAAX,CAFC,CAGD;;MACA,IAAIhV,UAAU,GAAG,EAAjB;;MACA,IAAI,KAAK5yF,MAAL,CAAYyuE,KAAhB,EAAuB;QACnBmkB,UAAU,GAAG,IAAI7lC,6DAAJ,CAAgBjyD,IAAhB,EACT8oD,YADS,CACI,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,IAAlB,EAAwB,OAAxB,EAAiC,KAAKtkD,MAAL,CAAY8jF,SAA7C,EAAwD,KAAxD,CADJ,CAAb;MAEH,CAHD,MAIK;QACD;QACA,IAAI/yE,KAAK,GAAG,IAAIg8C,6DAAJ,CAAgBjyD,IAAhB,EACR8oD,YADQ,CACK,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,KAAKo0B,OAAL,CAAav0B,MAAb,CAAoBtxC,IAAtC,EAA4C,OAA5C,EAAqD,KAAK7S,MAAL,CAAYm6E,eAAjE,EAAkF,KAAlF,CADL,CAAZ;;QAEA,IAAIppE,KAAK,CAAChW,MAAN,GAAe,CAAnB,EAAsB;UAClB63F,UAAU,GAAG,IAAI7lC,6DAAJ,CAAgBh8C,KAAhB,EACT6yC,YADS,CACI,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,YAAlB,EAAgC,OAAhC,EAAyC,KAAKtkD,MAAL,CAAYo6E,UAArD,EAAiE,KAAjE,CADJ,CAAb;QAEH;MACJ;;MACD,IAAIwY,UAAU,CAAC73F,MAAX,GAAoB,CAAxB,EAA2B;QACvB,KAAKmrG,YAAL,GAAoB/qG,8DAAQ,CAAC,KAAKu9E,OAAL,CAAav0B,MAAb,CAAoBuiD,QAArB,EAA+B9T,UAAU,CAAC,CAAD,CAAzC,CAA5B;QACA,KAAK5yF,MAAL,CAAYw4E,UAAZ,GAAyB,KAAK0tB,YAA9B;QACA,KAAKlmG,MAAL,CAAYmxE,QAAZ,GAAuB,KAAKy2B,WAAL,CAAiB,KAAK1B,YAAtB,CAAvB;QACAl0B,IAAI,CAAC,KAAKhyE,MAAN,EAAcusE,eAAd,EAA+B,KAAKvsE,MAAL,CAAYo6E,UAAZ,CAAuB5+E,OAAvB,CAA+B,KAA/B,EAAsC,GAAtC,CAA/B,CAAJ;MACH;IACJ;EACJ,CA7BD;;EA8BAiqG,cAAc,CAAC7rG,SAAf,CAAyB24B,iBAAzB,GAA6C,UAAUhyB,CAAV,EAAa;IACtD,IAAIA,CAAC,CAAC89B,MAAF,KAAa,KAAKvL,aAAL,EAAb,IAAqCvyB,CAAC,CAAC89B,MAAF,KAAa,QAAtD,EAAgE;MAC5D;MACA;IACH;;IACD,KAAK,IAAInhC,EAAE,GAAG,CAAT,EAAY8F,EAAE,GAAGhG,MAAM,CAACjB,IAAP,CAAYwE,CAAC,CAAC46B,OAAd,CAAtB,EAA8Cj+B,EAAE,GAAG8F,EAAE,CAACjI,MAAtD,EAA8DmC,EAAE,EAAhE,EAAoE;MAChE,IAAI6G,IAAI,GAAGf,EAAE,CAAC9F,EAAD,CAAb;;MACA,QAAQ6G,IAAR;QACI,KAAK,kBAAL;UACI,KAAK4jG,WAAL;UACA;;QACJ,KAAK,wBAAL;UACI31B,IAAI,CAAC,KAAKhyE,MAAN,EAAc0qE,WAAd,EAA2B,GAA3B,CAAJ;;UACA,IAAInqE,CAAC,CAAC66B,OAAF,CAAU+/D,sBAAV,CAAiC/mB,SAAjC,KAA+C7zE,CAAC,CAAC46B,OAAF,CAAUggE,sBAAV,CAAiC/mB,SAApF,EAA+F;YAC3F,KAAKsE,OAAL,CAAatE,SAAb,GAAyB7zE,CAAC,CAAC46B,OAAF,CAAUggE,sBAAV,CAAiC/mB,SAA1D;UACH;;UACD;MATR;IAWH;EACJ,CAnBD;EAoBA;;;EACAqxB,cAAc,CAAC7rG,SAAf,CAAyB+vG,cAAzB,GAA0C,YAAY;IAClD,KAAKpvB,UAAL;EACH,CAFD;;EAGAkrB,cAAc,CAAC7rG,SAAf,CAAyBypG,kBAAzB,GAA8C,UAAU9iG,CAAV,EAAa;IACvD,KAAKm4E,OAAL,CAAa/I,aAAb,GAA6B,CAACpvE,CAAC,CAACk2E,YAAH,CAA7B;EACH,CAFD;;EAGAgvB,cAAc,CAAC7rG,SAAf,CAAyBgwG,eAAzB,GAA2C,UAAUrpG,CAAV,EAAa;IACpD,KAAKyoG,gBAAL,CAAsBzoG,CAAC,CAACk2E,YAAxB;EACH,CAFD;;EAGAgvB,cAAc,CAAC7rG,SAAf,CAAyBiwG,SAAzB,GAAqC,UAAU5qG,IAAV,EAAgB;IACjD,IAAI0mG,SAAS,GAAG,EAAhB;;IACA,IAAI,KAAK3lG,MAAL,CAAYm4E,YAAZ,IAA4B,KAAKn4E,MAAL,CAAYq4E,YAA5C,EAA0D;MACtDstB,SAAS,GAAG,KAAKmE,YAAL,CAAkB7qG,IAAI,CAACyyE,KAAvB,EAA8B,KAAK1xE,MAAL,CAAYq4E,YAA1C,EAAwD,KAAKr4E,MAAL,CAAYo3E,QAApE,CAAZ;IACH,CAFD,MAGK;MACDuuB,SAAS,GAAG,KAAKA,SAAjB;IACH;;IACD,KAAKjtB,OAAL,CAAagtB,WAAb,CAAyBC,SAAzB;EACH,CATD,CArgBsD,CA+gBtD;;;EACAF,cAAc,CAAC7rG,SAAf,CAAyBkwG,YAAzB,GAAwC,UAAUp4B,KAAV,EAAiBr9D,IAAjB,EAAuBk6D,IAAvB,EAA6B;IACjE,IAAIo3B,SAAS,GAAG,EAAhB;;IACA,KAAK,IAAIjqG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGg2E,KAAK,CAAC32E,MAA1B,EAAkCW,CAAC,EAAnC,EAAuC;MACnC,IAAI,CAACg2E,KAAK,CAACh2E,CAAD,CAAL,CAAS6uE,MAAd,EAAsB;QAClB,IAAI,CAAC,KAAKvqE,MAAL,CAAYyuE,KAAjB,EAAwB;UACpB,IAAI2kB,MAAM,GAAI1hB,KAAK,CAACh2E,CAAD,CAAL,CAASquG,YAAvB;;UACA,IAAI11F,IAAJ,EAAU;YACNk6D,IAAI,GAAGA,IAAI,GAAGmD,KAAK,CAACh2E,CAAD,CAAL,CAASquG,YAAvB;YACA,IAAItuF,KAAK,GAAG8yD,IAAI,CAACv8D,WAAL,CAAiB,GAAjB,CAAZ;YACAohF,MAAM,GAAG7kB,IAAI,CAACnhE,SAAL,CAAeqO,KAAK,GAAG,CAAvB,CAAT;YACA8yD,IAAI,GAAGA,IAAI,CAACnhE,SAAL,CAAe,CAAf,EAAkBqO,KAAK,GAAG,CAA1B,CAAP;UACH,CAPmB,CAQpB;;;UACA,IAAIm3E,UAAU,GAAG,IAAI7lC,6DAAJ,CAAgB,KAAK2rB,OAAL,CAAakvB,WAAb,EAAhB,EACbhkD,YADa,CACA,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,KAAKo0B,OAAL,CAAav0B,MAAb,CAAoBtxC,IAAtC,EAA4C,OAA5C,EAAqDugF,MAArD,EAA6D,KAA7D,CADA,CAAjB;;UAEA,KAAK,IAAIjrF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGyqF,UAAU,CAAC73F,MAA/B,EAAuCoN,CAAC,EAAxC,EAA4C;YACxC,IAAIyrE,KAAK,GAAGz4E,8DAAQ,CAAC,YAAD,EAAey3F,UAAU,CAACzqF,CAAD,CAAzB,CAApB;YACAyrE,KAAK,GAAGA,KAAK,CAACp4E,OAAN,CAAc,KAAd,EAAqB,GAArB,CAAR;;YACA,IAAIo4E,KAAK,KAAKrF,IAAd,EAAoB;cAChBo3B,SAAS,CAACnmG,IAAV,CAAerE,8DAAQ,CAAC,KAAKu9E,OAAL,CAAav0B,MAAb,CAAoBr7C,EAArB,EAAyB8pF,UAAU,CAACzqF,CAAD,CAAnC,CAAvB;cACA;YACH;UACJ;QACJ;MACJ;IACJ;;IACD,OAAOw9F,SAAP;EACH,CA3BD;;EA4BAF,cAAc,CAAC7rG,SAAf,CAAyBowG,QAAzB,GAAoC,UAAU/qG,IAAV,EAAgB;IAChD,IAAI0mG,SAAS,GAAG,EAAhB;;IACA,IAAI,KAAK3lG,MAAL,CAAYm4E,YAAZ,IAA4B,KAAKn4E,MAAL,CAAY+vE,WAA5C,EAAyD;MACrD,KAAK41B,SAAL,GAAiB,KAAKmE,YAAL,CAAkB7qG,IAAI,CAACyyE,KAAvB,EAA8B,KAAK1xE,MAAL,CAAY+vE,WAA1C,EAAuD,KAAK/vE,MAAL,CAAYmwE,UAAnE,CAAjB;IACH,CAFD,MAGK;MACDw1B,SAAS,GAAG,KAAKA,SAAjB;IACH;;IACD,KAAKjtB,OAAL,CAAagtB,WAAb,CAAyBC,SAAzB;EACH,CATD;EAUA;EACA;;;EACAF,cAAc,CAAC7rG,SAAf,CAAyB6uG,gBAAzB,GAA4C,UAAUwB,SAAV,EAAqB;IAC7D,IAAI,CAAC,KAAKjqG,MAAL,CAAYyuE,KAAjB,EAAwB;MACpB,IAAIF,IAAI,GAAGpzE,8DAAQ,CAAC,YAAD,EAAe8uG,SAAf,CAAnB;MACA,IAAIC,QAAQ,GAAG/uG,8DAAQ,CAAC,MAAD,EAAS8uG,SAAT,CAAvB,CAFoB,CAGpB;;MACA,IAAInvG,IAAI,GAAG,IAAIiyD,6DAAJ,CAAgB,KAAK2rB,OAAL,CAAakvB,WAAb,EAAhB,EACPhkD,YADO,CACM,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,KAAKo0B,OAAL,CAAav0B,MAAb,CAAoBtxC,IAAtC,EAA4C,OAA5C,EAAqDq3F,QAArD,EAA+D,KAA/D,CADN,CAAX;;MAEA,IAAIpvG,IAAI,CAACC,MAAL,GAAc,CAAlB,EAAqB;QACjB;QACA,IAAI63F,UAAU,GAAG,IAAI7lC,6DAAJ,CAAgBjyD,IAAhB,EACb8oD,YADa,CACA,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,YAAlB,EAAgC,OAAhC,EAAyCiqB,IAAzC,EAA+C,KAA/C,CADA,CAAjB;;QAEA,IAAIqkB,UAAU,CAAC73F,MAAX,GAAoB,CAAxB,EAA2B;UACvB,IAAI+N,EAAE,GAAG3N,8DAAQ,CAAC,KAAKu9E,OAAL,CAAav0B,MAAb,CAAoBr7C,EAArB,EAAyB8pF,UAAU,CAAC,CAAD,CAAnC,CAAjB;UACA,KAAKla,OAAL,CAAa/I,aAAb,GAA6B,CAAC7mE,EAAD,CAA7B;UACA,KAAK4vE,OAAL,CAAa1mD,QAAb;QACH;MACJ;IACJ,CAhBD,MAiBK;MACD,IAAIykD,YAAY,GAAG,KAAKiC,OAAL,CAAakvB,WAAb,GAA2B50E,MAA3B,CAAkC,UAAU33B,GAAV,EAAe;QAAE,OAAOA,GAAG,CAAC+f,IAAJ,KAAa6uF,SAAS,CAAC7uF,IAA9B;MAAqC,CAAxF,EAA0F,CAA1F,CAAnB;MACA,KAAKs9D,OAAL,CAAa/I,aAAb,GAA6B,CAACx0E,8DAAQ,CAAC,QAAD,EAAWs7E,YAAX,CAAT,CAA7B;MACA,KAAKiC,OAAL,CAAa1mD,QAAb;IACH;EACJ,CAvBD;;EAwBAyzE,cAAc,CAAC7rG,SAAf,CAAyBy0F,UAAzB,GAAsC,UAAUpvF,IAAV,EAAgB;IAClD,KAAKivF,UAAL,CAAgBjvF,IAAhB;IACA,KAAKwpG,gBAAL,CAAsB,KAAKzoG,MAAL,CAAYy3E,QAAlC;IACA,KAAKz3E,MAAL,CAAYo4E,SAAZ,GAAwB,CAAC,KAAKp4E,MAAL,CAAYm4E,YAArC;EACH,CAJD;;EAKAstB,cAAc,CAAC7rG,SAAf,CAAyBs0F,UAAzB,GAAsC,UAAUjvF,IAAV,EAAgB;IAClD;IACA,IAAI2zF,UAAU,GAAG,EAAjB;;IACA,IAAI,KAAK5yF,MAAL,CAAYyuE,KAAhB,EAAuB;MACnBmkB,UAAU,GAAG,IAAI7lC,6DAAJ,CAAgB,KAAK2rB,OAAL,CAAakvB,WAAb,EAAhB,EACThkD,YADS,CACI,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,IAAlB,EAAwB,OAAxB,EAAiCnpD,8DAAQ,CAAC,IAAD,EAAO8D,IAAI,CAAC24E,GAAZ,CAAzC,EAA2D,KAA3D,CADJ,CAAb;IAEH,CAHD,MAIK;MACD;MACA,IAAI7mE,KAAK,GAAG,IAAIg8C,6DAAJ,CAAgB,KAAK2rB,OAAL,CAAakvB,WAAb,EAAhB,EACRhkD,YADQ,CACK,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,KAAKo0B,OAAL,CAAav0B,MAAb,CAAoBtxC,IAAtC,EAA4C,OAA5C,EAAqD1X,8DAAQ,CAAC,MAAD,EAAS8D,IAAI,CAAC24E,GAAd,CAA7D,EAAiF,KAAjF,CADL,CAAZ;;MAEA,IAAI7mE,KAAK,CAAChW,MAAN,GAAe,CAAnB,EAAsB;QAClB63F,UAAU,GAAG,IAAI7lC,6DAAJ,CAAgBh8C,KAAhB,EACT6yC,YADS,CACI,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,YAAlB,EAAgC,OAAhC,EAAyCnpD,8DAAQ,CAAC,YAAD,EAAe8D,IAAI,CAAC24E,GAApB,CAAjD,EAA2E,KAA3E,CADJ,CAAb;MAEH;IACJ;;IACD,IAAIgb,UAAU,CAAC73F,MAAX,GAAoB,CAAxB,EAA2B;MACvB,IAAI+N,EAAE,GAAG3N,8DAAQ,CAAC,KAAKu9E,OAAL,CAAav0B,MAAb,CAAoBr7C,EAArB,EAAyB8pF,UAAU,CAAC,CAAD,CAAnC,CAAjB;MACA,IAAIkW,QAAQ,GAAG,KAAKpwB,OAAL,CAAaqwB,aAAb,CAA2B3rG,OAA3B,CAAmC0L,EAAnC,MAA2C,CAAC,CAA3D;MACA,KAAKkgG,gBAAL,CAAsBlgG,EAAtB;MACA,KAAKk/F,QAAL,CAAc/oG,IAAI,CAACyyE,KAAnB,EAA0B5oE,EAA1B,EAA8BggG,QAA9B;IACH;;IACD,KAAK9oG,MAAL,CAAYw4E,UAAZ,GAAyB,IAAzB;IACA,KAAKiU,aAAL,CAAmBxtF,IAAnB;;IACA,IAAI,KAAKe,MAAL,CAAY22E,UAAhB,EAA4B;MACxB,KAAKwzB,aAAL,CAAmBlrG,IAAnB;IACH;EACJ,CA3BD;EA4BA;;;EACAwmG,cAAc,CAAC7rG,SAAf,CAAyBuwG,aAAzB,GAAyC,UAAUlrG,IAAV,EAAgB;IACrD,IAAI,KAAKe,MAAL,CAAYyuE,KAAhB,EAAuB;MACnB,KAAKzuE,MAAL,CAAYo4E,SAAZ,GAAwB,CAAC,KAAKp4E,MAAL,CAAYm4E,YAArC;MACAI,YAAY,CAAC,KAAKv4E,MAAN,CAAZ;MACA;IACH;;IACD,IAAK,KAAKA,MAAL,CAAY0tE,QAAZ,CAAqBtwE,OAArB,CAA6Bu6E,gBAAgB,CAAC,KAAK33E,MAAN,EAAcf,IAAd,CAA7C,MAAsE,CAAC,CAA5E,EAAgF;MAC5E,KAAKe,MAAL,CAAYo4E,SAAZ,GAAwB,KAAxB;MACAG,YAAY,CAAC,KAAKv4E,MAAN,CAAZ;IACH,CAHD,MAIK;MACD,KAAKA,MAAL,CAAYo4E,SAAZ,GAAwB,CAAC,KAAKp4E,MAAL,CAAYm4E,YAArC;IACH;EACJ,CAbD;;EAcAstB,cAAc,CAAC7rG,SAAf,CAAyBq0F,WAAzB,GAAuC,YAAY;IAC/C,IAAI,KAAKjuF,MAAL,CAAYkwE,YAAZ,KAA6B,KAAKp9C,aAAL,EAAjC,EAAuD;MACnD,KAAKu2E,cAAL;IACH;;IACD,KAAK1D,SAAL,GAAiB,EAAjB,CAJ+C,CAK/C;;IACA,IAAItqG,GAAG,GAAG,KAAK2E,MAAL,CAAY22E,UAAZ,GAAyB,KAAK32E,MAAL,CAAY0vC,QAArC,GAAgD,KAAK1vC,MAAL,CAAY4vE,aAAtE;;IACA,KAAK,IAAIl0E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGL,GAAG,CAACN,MAAxB,EAAgCW,CAAC,EAAjC,EAAqC;MACjC,IAAIP,8DAAQ,CAAC,QAAD,EAAWE,GAAG,CAACK,CAAD,CAAd,CAAR,KAA+B,KAAnC,EAA0C;QACtC,KAAKiqG,SAAL,CAAenmG,IAAf,CAAoBrE,8DAAQ,CAAC,QAAD,EAAWE,GAAG,CAACK,CAAD,CAAd,CAA5B;MACH;IACJ;EACJ,CAZD;;EAaA+pG,cAAc,CAAC7rG,SAAf,CAAyBu0F,aAAzB,GAAyC,YAAY;IACjD,IAAI,KAAKnuF,MAAL,CAAYkwE,YAAZ,KAA6B,KAAKp9C,aAAL,EAAjC,EAAuD;MACnD,KAAK9yB,MAAL,CAAYuwE,aAAZ,GAA4B,KAAKq3B,WAAL,CAAiB,KAAKlvB,OAAL,CAAa/I,aAAb,CAA2B,CAA3B,CAAjB,CAA5B;MACA,KAAK3vE,MAAL,CAAYgwE,cAAZ,GAA6B,CAAC,KAAKqoB,UAAN,CAA7B;IACH;EACJ,CALD;;EAMAoN,cAAc,CAAC7rG,SAAf,CAAyBoB,gBAAzB,GAA4C,YAAY;IACpD,KAAKgF,MAAL,CAAYwa,EAAZ,CAAegwD,YAAf,EAA6B,KAAKj4C,iBAAlC,EAAqD,IAArD;IACA,KAAKvyB,MAAL,CAAYwa,EAAZ,CAAe+yD,YAAf,EAA6B,KAAKo8B,cAAlC,EAAkD,IAAlD;IACA,KAAK3pG,MAAL,CAAYwa,EAAZ,CAAeiwD,UAAf,EAA2B,KAAKu1B,YAAhC,EAA8C,IAA9C;IACA,KAAKhgG,MAAL,CAAYwa,EAAZ,CAAekwD,WAAf,EAA4B,KAAKqhB,aAAjC,EAAgD,IAAhD;IACA,KAAK/rF,MAAL,CAAYwa,EAAZ,CAAe4wD,WAAf,EAA4B,KAAKqhB,aAAjC,EAAgD,IAAhD;IACA,KAAKzsF,MAAL,CAAYwa,EAAZ,CAAesyD,QAAf,EAAyB,KAAKohB,UAA9B,EAA0C,IAA1C;IACA,KAAKluF,MAAL,CAAYwa,EAAZ,CAAeuyD,MAAf,EAAuB,KAAKi9B,QAA5B,EAAsC,IAAtC;IACA,KAAKhqG,MAAL,CAAYwa,EAAZ,CAAeqyD,SAAf,EAA0B,KAAKohB,WAA/B,EAA4C,IAA5C;IACA,KAAKjuF,MAAL,CAAYwa,EAAZ,CAAe2xD,UAAf,EAA2B,KAAKu8B,cAAhC,EAAgD,IAAhD;IACA,KAAK1oG,MAAL,CAAYwa,EAAZ,CAAemwD,SAAf,EAA0B,KAAKqhB,WAA/B,EAA4C,IAA5C;IACA,KAAKhsF,MAAL,CAAYwa,EAAZ,CAAemyD,YAAf,EAA6B,KAAKuf,cAAlC,EAAkD,IAAlD;IACA,KAAKlsF,MAAL,CAAYwa,EAAZ,CAAeuwD,UAAf,EAA2B,KAAKqhB,YAAhC,EAA8C,IAA9C;IACA,KAAKpsF,MAAL,CAAYwa,EAAZ,CAAewwD,SAAf,EAA0B,KAAKqhB,WAA/B,EAA4C,IAA5C;IACA,KAAKrsF,MAAL,CAAYwa,EAAZ,CAAeywD,UAAf,EAA2B,KAAKqhB,YAAhC,EAA8C,IAA9C;IACA,KAAKtsF,MAAL,CAAYwa,EAAZ,CAAeyyD,mBAAf,EAAoC,KAAKo2B,kBAAzC,EAA6D,IAA7D;IACA,KAAKrjG,MAAL,CAAYwa,EAAZ,CAAemxD,QAAf,EAAyB,KAAKihB,UAA9B,EAA0C,IAA1C;IACA,KAAK5sF,MAAL,CAAYwa,EAAZ,CAAeoxD,OAAf,EAAwB,KAAKs9B,SAA7B,EAAwC,IAAxC;IACA,KAAKlpG,MAAL,CAAYwa,EAAZ,CAAe4B,OAAf,EAAwB,KAAKA,OAA7B,EAAsC,IAAtC;IACA,KAAKpc,MAAL,CAAYwa,EAAZ,CAAe8xD,UAAf,EAA2B,KAAKigB,YAAhC,EAA8C,IAA9C;IACA,KAAKvsF,MAAL,CAAYwa,EAAZ,CAAegyD,SAAf,EAA0B,KAAKwqB,WAA/B,EAA4C,IAA5C;IACA,KAAKh3F,MAAL,CAAYwa,EAAZ,CAAe+xD,eAAf,EAAgC,KAAKk9B,iBAArC,EAAwD,IAAxD;IACA,KAAKzpG,MAAL,CAAYwa,EAAZ,CAAewxD,aAAf,EAA8B,KAAK49B,eAAnC,EAAoD,IAApD;IACA,KAAK5pG,MAAL,CAAYwa,EAAZ,CAAeoyD,WAAf,EAA4B,KAAKuhB,aAAjC,EAAgD,IAAhD;IACA,KAAKnuF,MAAL,CAAYwa,EAAZ,CAAegzD,QAAf,EAAyB,KAAKod,UAA9B,EAA0C,IAA1C;IACA,KAAK5qF,MAAL,CAAYwa,EAAZ,CAAe6xD,YAAf,EAA6B,KAAKyhB,cAAlC,EAAkD,IAAlD;IACA,KAAK9tF,MAAL,CAAYwa,EAAZ,CAAeizD,OAAf,EAAwB,KAAKo8B,SAA7B,EAAwC,IAAxC;IACA,KAAK7pG,MAAL,CAAYwa,EAAZ,CAAeozD,QAAf,EAAyB,KAAKw8B,UAA9B,EAA0C,IAA1C;IACA,KAAKpqG,MAAL,CAAYwa,EAAZ,CAAekzD,QAAf,EAAyB,KAAK2gB,UAA9B,EAA0C,IAA1C;IACA,KAAKruF,MAAL,CAAYwa,EAAZ,CAAe4xD,WAAf,EAA4B,KAAKgiB,aAAjC,EAAgD,IAAhD;IACA,KAAKpuF,MAAL,CAAYwa,EAAZ,CAAeswD,QAAf,EAAyB,KAAK09B,UAA9B,EAA0C,IAA1C;EACH,CA/BD;;EAgCA/C,cAAc,CAAC7rG,SAAf,CAAyBsB,mBAAzB,GAA+C,YAAY;IACvD,KAAK8E,MAAL,CAAY6a,GAAZ,CAAgB4vD,UAAhB,EAA4B,KAAKu1B,YAAjC;IACA,KAAKhgG,MAAL,CAAY6a,GAAZ,CAAgB0yD,YAAhB,EAA8B,KAAKo8B,cAAnC;IACA,KAAK3pG,MAAL,CAAY6a,GAAZ,CAAgB6vD,WAAhB,EAA6B,KAAKqhB,aAAlC;IACA,KAAK/rF,MAAL,CAAY6a,GAAZ,CAAgB8xD,YAAhB,EAA8B,KAAKuf,cAAnC;IACA,KAAKlsF,MAAL,CAAY6a,GAAZ,CAAgB2vD,YAAhB,EAA8B,KAAKj4C,iBAAnC;IACA,KAAKvyB,MAAL,CAAY6a,GAAZ,CAAgBuwD,WAAhB,EAA6B,KAAKqhB,aAAlC;IACA,KAAKzsF,MAAL,CAAY6a,GAAZ,CAAgBiyD,QAAhB,EAA0B,KAAKohB,UAA/B;IACA,KAAKluF,MAAL,CAAY6a,GAAZ,CAAgBkyD,MAAhB,EAAwB,KAAKi9B,QAA7B;IACA,KAAKhqG,MAAL,CAAY6a,GAAZ,CAAgBgyD,SAAhB,EAA2B,KAAKohB,WAAhC;IACA,KAAKjuF,MAAL,CAAY6a,GAAZ,CAAgBoyD,mBAAhB,EAAqC,KAAKo2B,kBAA1C;IACA,KAAKrjG,MAAL,CAAY6a,GAAZ,CAAgBsxD,UAAhB,EAA4B,KAAKu8B,cAAjC;IACA,KAAK1oG,MAAL,CAAY6a,GAAZ,CAAgB8vD,SAAhB,EAA2B,KAAKqhB,WAAhC;IACA,KAAKhsF,MAAL,CAAY6a,GAAZ,CAAgBowD,UAAhB,EAA4B,KAAKqhB,YAAjC;IACA,KAAKtsF,MAAL,CAAY6a,GAAZ,CAAgB8wD,QAAhB,EAA0B,KAAKihB,UAA/B;IACA,KAAK5sF,MAAL,CAAY6a,GAAZ,CAAgB+wD,OAAhB,EAAyB,KAAKs9B,SAA9B;IACA,KAAKlpG,MAAL,CAAY6a,GAAZ,CAAgBuB,OAAhB,EAAyB,KAAKA,OAA9B;IACA,KAAKpc,MAAL,CAAY6a,GAAZ,CAAgByxD,UAAhB,EAA4B,KAAKigB,YAAjC;IACA,KAAKvsF,MAAL,CAAY6a,GAAZ,CAAgB2xD,SAAhB,EAA2B,KAAKwqB,WAAhC;IACA,KAAKh3F,MAAL,CAAY6a,GAAZ,CAAgB0xD,eAAhB,EAAiC,KAAKk9B,iBAAtC;IACA,KAAKzpG,MAAL,CAAY6a,GAAZ,CAAgBmxD,aAAhB,EAA+B,KAAK49B,eAApC;IACA,KAAK5pG,MAAL,CAAY6a,GAAZ,CAAgBkwD,UAAhB,EAA4B,KAAKqhB,YAAjC;IACA,KAAKpsF,MAAL,CAAY6a,GAAZ,CAAgBmwD,SAAhB,EAA2B,KAAKqhB,WAAhC;IACA,KAAKrsF,MAAL,CAAY6a,GAAZ,CAAgB+xD,WAAhB,EAA6B,KAAKuhB,aAAlC;IACA,KAAKnuF,MAAL,CAAY6a,GAAZ,CAAgB2yD,QAAhB,EAA0B,KAAKod,UAA/B;IACA,KAAK5qF,MAAL,CAAY6a,GAAZ,CAAgB4yD,OAAhB,EAAyB,KAAKo8B,SAA9B;IACA,KAAK7pG,MAAL,CAAY6a,GAAZ,CAAgB+yD,QAAhB,EAA0B,KAAKw8B,UAA/B;IACA,KAAKpqG,MAAL,CAAY6a,GAAZ,CAAgB6yD,QAAhB,EAA0B,KAAK2gB,UAA/B;IACA,KAAKruF,MAAL,CAAY6a,GAAZ,CAAgBuxD,WAAhB,EAA6B,KAAKgiB,aAAlC;IACA,KAAKpuF,MAAL,CAAY6a,GAAZ,CAAgBwxD,YAAhB,EAA8B,KAAKyhB,cAAnC;IACA,KAAK9tF,MAAL,CAAY6a,GAAZ,CAAgBiwD,QAAhB,EAA0B,KAAK09B,UAA/B;EACH,CA/BD;EAgCA;;;EACA/C,cAAc,CAAC7rG,SAAf,CAAyBw0F,aAAzB,GAAyC,YAAY;IACjD,IAAI,KAAKpuF,MAAL,CAAYkwE,YAAZ,KAA6B,KAAKp9C,aAAL,EAAjC,EAAuD;MACnD;MACA,IAAIu3E,OAAO,GAAG,KAAKzC,WAAL,CAAiB,KAAKlvB,OAAL,CAAa/I,aAAb,CAA2B,CAA3B,CAAjB,CAAd;MACA,KAAK3vE,MAAL,CAAYmxE,QAAZ,GAAuBk5B,OAAvB;IACH;EACJ,CAND,CAptBsD,CA2tBtD;;;EACA5E,cAAc,CAAC7rG,SAAf,CAAyBk0F,cAAzB,GAA0C,UAAU7uF,IAAV,EAAgB;IACtD,IAAI,KAAKe,MAAL,CAAYkwE,YAAZ,KAA6B,KAAKp9C,aAAL,EAAjC,EAAuD;MACnD,IAAIskE,KAAK,GAAGznE,6DAAO,CAAC1wB,IAAI,CAAC+2B,MAAN,EAAc,IAAd,CAAnB;MACA,KAAKh2B,MAAL,CAAYmxE,QAAZ,GAAuB,KAAKy2B,WAAL,CAAiBxQ,KAAK,CAAC9mE,YAAN,CAAmB,UAAnB,CAAjB,CAAvB;IACH;EACJ,CALD;EAMA;;;EACAm1E,cAAc,CAAC7rG,SAAf,CAAyBwwG,UAAzB,GAAsC,UAAUnrG,IAAV,EAAgB;IAClD,IAAIguB,GAAG,GAAG0C,6DAAO,CAAC1wB,IAAI,CAAC+2B,MAAN,EAAc,IAAd,CAAjB;;IACA,IAAI/I,GAAG,CAACF,SAAJ,CAAcM,QAAd,CAAuB,kBAAvB,CAAJ,EAAgD;MAC5C,KAAKknB,MAAL,GAAc,IAAd;MACA,IAAI4U,KAAK,GAAGvtD,QAAQ,CAACqxB,GAAG,CAACqD,YAAJ,CAAiB,YAAjB,CAAD,EAAiC,EAAjC,CAApB;MACA,KAAKooD,OAAL,CAAa0wB,SAAb,CAAuB,CAACn8E,GAAG,CAACqD,YAAJ,CAAiB,UAAjB,CAAD,CAAvB,EAAuD64B,KAAK,GAAG,CAA/D;MACA,KAAK5U,MAAL,GAAc,KAAd;IACH;EACJ,CARD;;EASAkxD,cAAc,CAAC7rG,SAAf,CAAyBgxF,UAAzB,GAAsC,UAAU3rF,IAAV,EAAgB;IAClD,IAAI,KAAKe,MAAL,CAAYsyE,YAAZ,KAA6B,KAAKx/C,aAAL,EAAjC,EAAuD;MACnD,IAAI+3D,MAAM,GAAGl7D,6DAAO,CAAC1wB,IAAI,CAAC+2B,MAAN,EAAc,IAAd,CAApB;MACA,KAAKh2B,MAAL,CAAYy3E,QAAZ,GAAuB,KAAKmwB,WAAL,CAAiB/c,MAAjB,EAAyB,CAAzB,CAAvB;MACA,KAAK7qF,MAAL,CAAY0tE,QAAZ,GAAuB,KAAKo6B,WAAL,CAAiBjd,MAAjB,EAAyB1vF,8DAAQ,CAAC,MAAD,EAAS,KAAK6E,MAAL,CAAYy3E,QAArB,CAAjC,CAAvB;IACH;EACJ,CAND;EAOA;AACJ;AACA;AACA;AACA;AACA;;;EACIguB,cAAc,CAAC7rG,SAAf,CAAyBk5B,aAAzB,GAAyC,YAAY;IACjD,OAAO,gBAAP;EACH,CAFD;;EAGA2yE,cAAc,CAAC7rG,SAAf,CAAyBwiB,OAAzB,GAAmC,YAAY;IAC3C,IAAI,KAAKpc,MAAL,CAAY6xB,WAAhB,EAA6B;MACzB;IACH;;IACD,KAAK32B,mBAAL;;IACA,IAAI,KAAKw9E,OAAT,EAAkB;MACd,KAAK6P,YAAL;MACA,KAAK7P,OAAL,CAAat8D,OAAb;IACH;EACJ,CATD;;EAUAqpF,cAAc,CAAC7rG,SAAf,CAAyBy6C,UAAzB,GAAsC,YAAY;IAC9C,KAAKo6C,cAAL,GAAsB,IAAIx5C,gEAAJ,CAAmB,KAAKyjC,OAAL,CAAah4E,OAAhC,EAAyC;MAC3Dy1C,SAAS,EAAE,KAAKm0D,OAAL,CAAazwG,IAAb,CAAkB,IAAlB,CADgD;MAE3D87C,UAAU,EAAE,KAAKA,UAF0C;MAG3DzqB,SAAS,EAAE;IAHgD,CAAzC,CAAtB;EAKH,CAND;;EAOAu6E,cAAc,CAAC7rG,SAAf,CAAyB2uF,YAAzB,GAAwC,YAAY;IAChD,KAAKkG,cAAL,CAAoBryE,OAApB;EACH,CAFD;EAGA;;;EACAqpF,cAAc,CAAC7rG,SAAf,CAAyB0wG,OAAzB,GAAmC,UAAU/pG,CAAV,EAAa;IAC5C,IAAIu1B,MAAM,GAAGv1B,CAAC,CAACu1B,MAAf;;IACA,QAAQA,MAAR;MACI,KAAK,UAAL;QACI,KAAK91B,MAAL,CAAYgb,MAAZ,CAAmBoxD,WAAnB,EAAgC,EAAhC;QACAsQ,UAAU,CAAC,KAAK18E,MAAN,EAAc,EAAd,EAAkB,KAAKA,MAAL,CAAYuuE,IAA9B,EAAoC,SAApC,CAAV;QACA;;MACJ,KAAK,KAAL;QACIiB,YAAY,CAAC,KAAKxvE,MAAN,CAAZ;QACA;;MACJ,KAAK,KAAL;QACI,IAAI,KAAKA,MAAL,CAAY0uE,MAAZ,CAAmB,CAAnB,MAA0B,KAAK2pB,UAAL,CAAgB/nE,YAAhB,CAA6B,UAA7B,CAA9B,EAAwE;UACpE,KAAK+4E,cAAL;;UACA,IAAI,CAAC/uB,aAAa,CAAC,KAAKt6E,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAAD,CAAlB,EAA6C;YACzCqB,kBAAkB,CAAC,KAAKxyE,MAAN,EAAc,KAAKA,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAAd,EAAuCnD,cAAvC,CAAlB;UACH,CAFD,MAGK;YACD,KAAK03B,WAAL,GAAmB,EAAnB;YACAxuB,YAAY,CAAC,KAAKl3E,MAAN,EAAc,QAAd,CAAZ;UACH;QACJ;;QACD;;MACJ,KAAK,OAAL;QACI0yE,SAAS,CAAC,KAAK1yE,MAAN,CAAT;QACA;;MACJ,KAAK,OAAL;QACI,KAAKA,MAAL,CAAY42E,UAAZ,GAAyB,EAAzB;QACAF,YAAY,CAAC,KAAK12E,MAAN,CAAZ;QACA;;MACJ,KAAK,OAAL;QACI4yE,QAAQ,CAAC,KAAK5yE,MAAN,CAAR;QACA;;MACJ,KAAK,UAAL;QACI,KAAKqpG,cAAL;;QACA,IAAI,CAAC7uB,iBAAiB,CAAC,KAAKx6E,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAAD,CAAtB,EAAiD;UAC7CqB,kBAAkB,CAAC,KAAKxyE,MAAN,EAAc,KAAKA,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAAd,EAAuC/C,kBAAvC,CAAlB;UACA;QACH;;QACD,IAAI,KAAKpuE,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAzC,EAA4C;UACxC,KAAKw/E,UAAL;QACH;;QACD;;MACJ,KAAK,IAAL;QACI,IAAI,KAAKv6E,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAzC,EAA4C;UACxC;UACA,IAAID,IAAI,GAAG,KAAK8sG,WAAL,CAAiB,KAAKlvB,OAAL,CAAa/I,aAAb,CAA2B,CAA3B,CAAjB,EAAgD,CAAhD,CAAX;;UACA,IAAI,CAAC2K,aAAa,CAACx/E,IAAD,CAAlB,EAA0B;YACtB03E,kBAAkB,CAAC,KAAKxyE,MAAN,EAAclF,IAAd,EAAoBkzE,cAApB,CAAlB;UACH,CAFD,MAGK;YACD,KAAKwe,gBAAL;YACAtV,YAAY,CAAC,KAAKl3E,MAAN,EAAc,QAAd,CAAZ;UACH;QACJ;;QACD;IApDR;EAsDH,CAxDD,CAjxBsD,CA00BtD;;;EACAylG,cAAc,CAAC7rG,SAAf,CAAyBguG,WAAzB,GAAuC,UAAU3oG,IAAV,EAAgB;IACnD;IACA,IAAInE,IAAI,GAAG,KAAK49E,OAAL,CAAakvB,WAAb,CAAyB3oG,IAAzB,CAAX;;IACA,KAAK,IAAIvD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGZ,IAAI,CAACC,MAAzB,EAAiCW,CAAC,EAAlC,EAAsC;MAClC,IAAIS,uEAAiB,CAAChB,8DAAQ,CAAC,UAAD,EAAaL,IAAI,CAACY,CAAD,CAAjB,CAAT,CAArB,EAAsD;QAClDI,8DAAQ,CAAC,UAAD,EAAa,KAAb,EAAoBhB,IAAI,CAACY,CAAD,CAAxB,CAAR;MACH;IACJ;;IACD,OAAOZ,IAAP;EACH,CATD;;EAUA2qG,cAAc,CAAC7rG,SAAf,CAAyB4yF,gBAAzB,GAA4C,YAAY;IACpD,KAAK6c,cAAL;IACA,KAAKrpG,MAAL,CAAYm6E,eAAZ,GAA8Bh/E,8DAAQ,CAAC,MAAD,EAAS,KAAK6E,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAAT,CAAtC;EACH,CAHD;;EAIAs0B,cAAc,CAAC7rG,SAAf,CAAyByvG,cAAzB,GAA0C,YAAY;IAClD;IACA,IAAIvuG,IAAI,GAAG,KAAK8sG,WAAL,CAAiB,KAAKlvB,OAAL,CAAa/I,aAAb,CAA2B,CAA3B,CAAjB,EAAgD,CAAhD,CAAX;IACA,KAAK3vE,MAAL,CAAYmxE,QAAZ,GAAuB,CAACr2E,IAAD,CAAvB;IACA,KAAKkF,MAAL,CAAYuqE,MAAZ,GAAqB,KAArB;EACH,CALD;;EAMAk7B,cAAc,CAAC7rG,SAAf,CAAyB0vG,gBAAzB,GAA4C,YAAY;IACpD,KAAKD,cAAL;IACA,IAAI/5B,OAAO,GAAGc,aAAa,CAAC,KAAKpwE,MAAL,CAAYuuE,IAAb,CAA3B;IACA,KAAKvuE,MAAL,CAAY4xB,aAAZ,CAA0B;MAAE28C,IAAI,EAAEe;IAAR,CAA1B,EAA6C,IAA7C;IACA,KAAKtvE,MAAL,CAAY0uE,MAAZ,CAAmByO,GAAnB;IACA,KAAKn9E,MAAL,CAAY4uE,SAAZ,CAAsBuO,GAAtB;EACH,CAND;EAOA;;;EACAsoB,cAAc,CAAC7rG,SAAf,CAAyB2gF,UAAzB,GAAsC,YAAY;IAC9C,IAAIjL,OAAO,GAAGc,aAAa,CAAC,KAAKpwE,MAAL,CAAYuuE,IAAb,CAA3B;IACA,IAAI+qB,MAAM,GAAG,KAAK5gB,OAAL,CAAa/I,aAAb,CAA2B,CAA3B,CAAb;IACA,IAAIv0D,IAAI,GAAIk+E,MAAM,KAAK,KAAKt5F,MAAL,CAAY0uE,MAAZ,CAAmB,CAAnB,CAAZ,GAAqC,EAArC,GAA0CvzE,8DAAQ,CAAC,MAAD,EAAS,KAAK6E,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAAT,CAA7D;IACAsJ,QAAQ,CAAC,KAAKz6E,MAAN,EAAcsvE,OAAd,EAAuB,CAACl0D,IAAD,CAAvB,CAAR;EACH,CALD;;EAMA,OAAOqqF,cAAP;AACH,CA92B6C,EAA9C;AAg3BA;AACA;AACA;;;AACA,IAAI8E,WAAW;AAAG;AAAyB,YAAY;EACnD;AACJ;AACA;AACA;AACA;AACA;EACI,SAASA,WAAT,CAAqBvqG,MAArB,EAA6B;IACzB,KAAKmgF,YAAL,GAAoB,IAApB;IACA,KAAKqqB,WAAL,GAAmB,IAAnB;IACA,KAAK/kB,gBAAL,GAAwB,KAAxB;IACA,KAAKglB,eAAL,GAAuB,KAAvB;IACA,KAAK7wB,OAAL,GAAe,IAAf;IACA,KAAKgW,UAAL,GAAkB,IAAlB;IACA,KAAK8a,cAAL,GAAsB,IAAtB;IACA,KAAKC,iBAAL,GAAyB,KAAzB;IACA,KAAKC,mBAAL,GAA2B,EAA3B;IACA,KAAKlhD,KAAL,GAAa,CAAb;IACA,KAAK14B,UAAL,GAAkB,IAAlB;IACA,KAAK65E,QAAL,GAAgB,KAAhB;IACA,KAAKC,WAAL,GAAmB,KAAnB;IACA,KAAK3uB,cAAL,GAAsB,KAAtB;IACA,KAAKoJ,eAAL,GAAuB,KAAvB;IACA;IACA;;IACA,KAAKwlB,YAAL,GAAoB,KAApB;IACA/oC,8DAAA,CAAYC,yDAAZ,EAAoBF,8DAApB,EAAmCG,uDAAnC,EAAyCC,gEAAzC;IACA,KAAKniE,MAAL,GAAcA,MAAd;IACA,KAAKU,OAAL,GAAesuB,4DAAM,CAAC,MAAM,KAAKhvB,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+Bg7D,OAAhC,EAAyC,KAAK9jE,MAAL,CAAYU,OAArD,CAArB;IACA,KAAK1F,gBAAL;IACA,KAAK26C,UAAL,GAAkB;MACd6xC,QAAQ,EAAE,WADI;MAEdC,GAAG,EAAE,QAFS;MAGd9B,GAAG,EAAE,KAHS;MAIdC,QAAQ,EAAE,WAJI;MAKdI,OAAO,EAAE,UALK;MAMdC,QAAQ,EAAE,WANI;MAOdC,QAAQ,EAAE,gBAPI;MAQdC,QAAQ,EAAE,gBARI;MASdC,SAAS,EAAE,iBATG;MAUdE,QAAQ,EAAE,WAVI;MAWdC,SAAS,EAAE,YAXG;MAYdC,SAAS,EAAE,iBAZG;MAadG,OAAO,EAAE,eAbK;MAcdN,MAAM,EAAE,cAdM;MAedO,KAAK,EAAE,gBAfO;MAgBdC,MAAM,EAAE,iBAhBM;MAiBdC,MAAM,EAAE,sBAjBM;MAkBdG,IAAI,EAAE,oBAlBQ;MAmBdC,KAAK,EAAE,OAnBO;MAoBdC,SAAS,EAAE,YApBG;MAqBdC,UAAU,EAAE,aArBE;MAsBdC,OAAO,EAAE,kBAtBK;MAuBdxtE,GAAG,EAAE,KAvBS;MAwBd6rE,IAAI,EAAE,MAxBQ;MAyBdK,MAAM,EAAE,SAzBM;MA0Bd2B,GAAG,EAAE,QA1BS;MA2BdC,KAAK,EAAE,KAAK3nF,MAAL,CAAY4nF,KAAZ,GAAoB,OAApB,GAA8B,QA3BvB;MA4BdC,KAAK,EAAE,KAAK7nF,MAAL,CAAY4nF,KAAZ,GAAoB,OAApB,GAA8B,QA5BvB;MA6BdE,KAAK,EAAE,KAAK9nF,MAAL,CAAY4nF,KAAZ,GAAoB,OAApB,GAA8B,QA7BvB;MA8Bd0e,UAAU,EAAE,cA9BE;MA+Bdte,QAAQ,EAAE,cA/BI;MAgCdE,KAAK,EAAE,QAhCO;MAiCdH,EAAE,EAAE,IAjCU;MAkCdT,KAAK,EAAE,QAlCO;MAmCdC,KAAK,EAAE;IAnCO,CAAlB;EAqCH;EACD;;;EACAgjB,WAAW,CAAC3wG,SAAZ,CAAsB0rC,MAAtB,GAA+B,UAAUrmC,IAAV,EAAgB;IAC3CmiE,mEAAW,CAAC,KAAKphE,MAAL,CAAYU,OAAb,CAAX;;IACA,IAAI,KAAKV,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC5kD,iEAAW,CAAC,CAAC,KAAKttB,MAAL,CAAYU,OAAb,CAAD,EAAwB2kE,YAAxB,CAAX,CADgC,CAEhC;;MACA,IAAI5b,KAAK,GAAG0qB,aAAa,CAAC,KAAKn0E,MAAN,EAAcf,IAAI,CAACyyE,KAAnB,CAAzB;MACA,KAAKs5B,cAAL;MACA,IAAI70B,OAAO,GAAG,KAAK80B,UAAL,EAAd;MACA,IAAIC,YAAY,GAAG,KAAK,CAAxB;;MACA,IAAI,KAAKlrG,MAAL,CAAYg2E,QAAhB,EAA0B;QACtBk1B,YAAY,GAAG,EAAf;MACH,CAFD,MAGK;QACD,IAAI,KAAKlrG,MAAL,CAAYo0E,SAAZ,KAA0B,MAA9B,EAAsC;UAClC82B,YAAY,GAAG,CAAC;YAAE5lD,SAAS,EAAE,KAAKtlD,MAAL,CAAYo0E,SAAzB;YAAoC/wB,KAAK,EAAE,KAAKrjD,MAAL,CAAYmlD;UAAvD,CAAD,CAAf;QACH;MACJ;;MACD,KAAK0sB,OAAL,GAAe,IAAI7P,uDAAJ,CAAS;QACpBzQ,UAAU,EAAE9H,KADQ;QAEpB0hD,YAAY,EAAE,IAFM;QAGpBC,YAAY,EAAE,KAAKC,WAAL,CAAiBxxG,IAAjB,CAAsB,IAAtB,EAA4B,QAA5B,CAHM;QAIpByxG,cAAc,EAAE,KAAKD,WAAL,CAAiBxxG,IAAjB,CAAsB,IAAtB,EAA4B,UAA5B,CAJI;QAKpB0xG,WAAW,EAAE,KAAK9M,UAAL,CAAgB5kG,IAAhB,CAAqB,IAArB,CALO;QAMpB2xG,aAAa,EAAE,KAAKC,aAAL,CAAmB5xG,IAAnB,CAAwB,IAAxB,CANK;QAOpB6xG,aAAa,EAAE,KAAK1rG,MAAL,CAAYk2E,mBAAZ,CAAgCy1B,cAP3B;QAQpBC,iBAAiB,EAAE;UACfvgG,IAAI,EAAE,KAAKrL,MAAL,CAAYuuF,mBAAZ,GAAkC,UAAlC,GAA+C,QADtC;UAEfsd,YAAY,EAAE,iBAFC;UAGfC,gBAAgB,EAAG,KAAK9rG,MAAL,CAAYspF,oBAAb,GAAqC,IAArC,GAA4C;QAH/C,CARC;QAapBrrE,SAAS,EAAE,KAAKje,MAAL,CAAYie,SAbH;QAcpB8tF,YAAY,EAAE;UAAE/lD,QAAQ,EAAE;QAAZ,CAdM;QAepBsjC,oBAAoB,EAAE,KAAKtpF,MAAL,CAAYspF,oBAfd;QAgBpBrkD,iBAAiB,EAAE,KAAKjlC,MAAL,CAAYilC,iBAhBX;QAiBpB+mE,oBAAoB,EAAE,IAjBF;QAkBpBd,YAAY,EAAE;UAAEe,WAAW,EAAE,KAAf;UAAsB91B,OAAO,EAAE+0B;QAA/B,CAlBM;QAmBpB/0B,OAAO,EAAEA,OAnBW;QAoBpB+1B,iBAAiB,EAAE,KAAKC,cAAL,CAAoBtyG,IAApB,CAAyB,IAAzB,CApBC;QAqBpBuyG,eAAe,EAAE,KAAKC,iBAAL,CAAuBxyG,IAAvB,CAA4B,IAA5B,CArBG;QAsBpB6tG,SAAS,EAAE,KAAK4E,WAAL,CAAiBzyG,IAAjB,CAAsB,IAAtB,CAtBS;QAuBpB0yG,YAAY,EAAE,KAAKC,cAAL,CAAoB3yG,IAApB,CAAyB,IAAzB,CAvBM;QAwBpB4yG,WAAW,EAAE,KAAKC,aAAL,CAAmB7yG,IAAnB,CAAwB,IAAxB,CAxBO;QAyBpB8yG,cAAc,EAAE,KAAKC,gBAAL,CAAsB/yG,IAAtB,CAA2B,IAA3B,CAzBI;QA0BpB40C,KAAK,EAAE,MA1Ba;QA2BpBC,MAAM,EAAG,KAAK1uC,MAAL,CAAYspF,oBAAb,GAAqC,KAAKujB,aAAL,EAArC,GAA4D,MA3BhD;QA4BpBC,UAAU,EAAE,UAAU7tG,IAAV,EAAgB;UAAEA,IAAI,CAACklB,MAAL,GAAc,IAAd;QAAqB,CA5B/B;QA6BpB;QACA+yB,IAAI,EAAE,UAAUj4C,IAAV,EAAgB;UAClB,KAAK8tG,WAAL,CAAiB3wF,OAAjB;QACH,CAhCmB;QAiCpBgC,MAAM,EAAE,KAAKpe,MAAL,CAAYoe;MAjCA,CAAT,CAAf;;MAmCA,IAAI,KAAKpe,MAAL,CAAYgtG,OAAhB,EAAyB;QACrB,KAAKn7B,OAAL,CAAam7B,OAAb,GAAuB,IAAvB;QACA,KAAKn7B,OAAL,CAAao7B,OAAb,GAAuB,EAAvB;QACA,KAAKp7B,OAAL,CAAar3D,EAAb,CAAgB,qBAAhB,EAAuC,KAAK0yF,mBAA5C,EAAiE,IAAjE;MACH;;MACD,KAAKr7B,OAAL,CAAantC,gBAAb,GAAgC,IAAhC;MACA,KAAKmtC,OAAL,CAAa7sC,QAAb,CAAsB,MAAM,KAAKhlC,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+Bg7D,OAArD;MACA,KAAKzvB,UAAL;MACA,KAAKk1C,YAAL;MACA,KAAK4jB,SAAL,GAAiBluG,IAAjB;IACH;EACJ,CA/DD;;EAgEAsrG,WAAW,CAAC3wG,SAAZ,CAAsBszG,mBAAtB,GAA4C,UAAUjuG,IAAV,EAAgB;IACxD,KAAKe,MAAL,CAAY,SAAZ,IAAyBf,IAAzB;IACA,KAAKe,MAAL,CAAYgb,MAAZ,CAAmB,qBAAnB,EAA0C,KAAKhb,MAAL,CAAY,SAAZ,CAA1C;IACA,KAAKA,MAAL,CAAY,sBAAZ;EACH,CAJD;EAKA;AACJ;AACA;AACA;AACA;;;EACIuqG,WAAW,CAAC3wG,SAAZ,CAAsBizG,aAAtB,GAAsC,YAAY;IAC9C;IACA,IAAI9hB,IAAI,GAAG/7D,4DAAM,CAAC,MAAM,KAAKhvB,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+B47D,UAAhC,EAA4C,KAAK1kE,MAAL,CAAYU,OAAxD,CAAjB;IACA,IAAIsqF,GAAG,GAAGh8D,4DAAM,CAAC,MAAM,KAAKhvB,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+B67D,gBAAhC,EAAkD,KAAK3kE,MAAL,CAAYU,OAA9D,CAAhB,CAH8C,CAI9C;;IACA,IAAI0sG,eAAe,GAAG,EAAtB,CAL8C,CAM9C;;IACA,OAAQriB,IAAI,CAACp8C,YAAL,GAAoBq8C,GAAG,CAACr8C,YAAxB,GAAuCy+D,eAA/C;EACH,CARD;;EASA7C,WAAW,CAAC3wG,SAAZ,CAAsBoxG,cAAtB,GAAuC,YAAY;IAC/C,IAAIqC,aAAa,GAAG,KAAKrtG,MAAL,CAAYk2E,mBAAZ,CAAgCC,OAApD;IACA,KAAK20B,WAAL,GAAmB,KAAnB;;IACA,KAAK,IAAIpvG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG2xG,aAAa,CAACtyG,MAAlC,EAA0CW,CAAC,EAA3C,EAA+C;MAC3C,IAAI2xG,aAAa,CAAC3xG,CAAD,CAAb,CAAiB2nD,KAAjB,KAA2B,MAA/B,EAAuC;QACnC,KAAKynD,WAAL,GAAmB,CAAC3uG,uEAAiB,CAACkxG,aAAa,CAAC3xG,CAAD,CAAb,CAAiB+yC,KAAlB,CAArC;QACA;MACH;IACJ;EACJ,CATD;;EAUA87D,WAAW,CAAC3wG,SAAZ,CAAsB0zG,WAAtB,GAAoC,UAAUn3B,OAAV,EAAmB5xB,SAAnB,EAA8B;IAC9D,IAAI,KAAKumD,WAAL,IAAqBvmD,SAAS,KAAK,MAAvC,EAAgD;MAC5C;IACH;;IACD,KAAK,IAAI7oD,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGy6E,OAAO,CAACp7E,MAA5B,EAAoCW,CAAC,EAArC,EAAyC;MACrC,IAAIy6E,OAAO,CAACz6E,CAAD,CAAP,CAAW2nD,KAAX,KAAqBkB,SAAzB,EAAoC;QAChC,IAAIgpD,SAAS,GAAG,KAAK,CAArB;;QACA,IAAI,KAAKvtG,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAhC,CAA0C/vE,OAA1C,CAAkDpF,KAAlD,KAA4D,EAA5D,IAAkE,CAAC,KAAK0E,MAAL,CAAY0wE,UAAnF,EAA+F;UAC3F68B,SAAS,GAAI,KAAK7sG,OAAL,CAAa2yC,WAAb,IAA4B,GAA7B,GAAoC,OAApC,GAA8C,MAA1D;QACH,CAFD,MAGK;UACDk6D,SAAS,GAAI,KAAK7sG,OAAL,CAAa2yC,WAAb,IAA4B,GAA7B,GAAsCkR,SAAS,KAAK,MAAf,GAAyB,OAAzB,GAAmC,OAAxE,GAAmF,MAA/F;QACH;;QACD4xB,OAAO,CAACz6E,CAAD,CAAP,CAAW+yC,KAAX,GAAmB8+D,SAAnB;MACH;IACJ;EACJ,CAhBD;;EAiBAhD,WAAW,CAAC3wG,SAAZ,CAAsBqxG,UAAtB,GAAmC,YAAY;IAC3C,IAAI90B,OAAJ;;IACA,IAAI,KAAKn2E,MAAL,CAAYg2E,QAAhB,EAA0B;MACtBG,OAAO,GAAG,CACN;QACI9yB,KAAK,EAAE,MADX;QACmBof,UAAU,EAAEsS,aAAa,CAAC,KAAK/0E,MAAN,EAAc,MAAd,CAD5C;QACmEyuC,KAAK,EAAE,MAD1E;QACkFi0B,QAAQ,EAAE,GAD5F;QACiG8qC,eAAe,EAAE,MADlH;QAEI3wD,QAAQ,EAAEgE,2EAAqB,CAAC,UAAU/lD,IAAV,EAAgB;UAC5C,OAAO,8BAA8BA,IAAI,CAACsgB,IAAnC,GAA0C,iCAA1C,GAA8EtgB,IAAI,CAAC2yG,YAAnF,GAAkG,gEAAlG,GAAqK3yG,IAAI,CAACu4D,IAA1K,GAAiL,SAAxL;QACH,CAF8B;MAFnC,CADM,CAAV;IAQH,CATD,MAUK;MACD8iB,OAAO,GAAG54E,4DAAM,CAAC,EAAD,EAAK,KAAKyC,MAAL,CAAYk2E,mBAAZ,CAAgCC,OAArC,EAA8C,IAA9C,EAAoD,IAApD,CAAhB;MACA,KAAKm3B,WAAL,CAAiBn3B,OAAjB,EAA0B,MAA1B;;MACA,KAAK,IAAIz6E,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAG+0E,OAAO,CAACp7E,MAA9B,EAAsCW,CAAC,GAAG0F,GAA1C,EAA+C1F,CAAC,EAAhD,EAAoD;QAChDy6E,OAAO,CAACz6E,CAAD,CAAP,CAAW+mE,UAAX,GAAwBsS,aAAa,CAAC,KAAK/0E,MAAN,EAAcm2E,OAAO,CAACz6E,CAAD,CAAP,CAAW+mE,UAAzB,CAArC;MACH;IACJ;;IACD,IAAIirC,MAAM,GAAK,KAAK1tG,MAAL,CAAYg2E,QAAZ,IAAwB,KAAKh2E,MAAL,CAAYo7F,QAArC,GAAiD,IAAjD,GAAwD,IAAtE;IACA,IAAIzP,IAAI,GAAG;MACPtoC,KAAK,EAAE,MADA;MACQ5U,KAAK,EAAEi/D,MADf;MACuBhrC,QAAQ,EAAEgrC,MADjC;MAEP7wD,QAAQ,EAAEgE,2EAAqB,CAAC,UAAU/lD,IAAV,EAAgB;QAC5C,OAAO,6BAA6BA,IAAI,CAAC6yG,aAAlC,GAAkD,YAAzD;MACH,CAF8B,CAFxB;MAIHjC,aAAa,EAAE,KAJZ;MAImBP,YAAY,EAAE,IAJjC;MAIuCvoC,gBAAgB,EAAE;QAAEC,KAAK,EAAE;MAAT,CAJzD;MAKP+qC,cAAc,EAAE/sD,2EAAqB,CAAC,YAAY;QAC9C,OAAO,+CAAP;MACH,CAFoC;IAL9B,CAAX;IASAs1B,OAAO,CAAC18E,OAAR,CAAgBkyF,IAAhB;;IACA,IAAI,KAAK3rF,MAAL,CAAYmrF,kBAAhB,EAAoC;MAChC,IAAI0iB,MAAM,GAAI,KAAK7tG,MAAL,CAAYo7F,QAAZ,GAAuB,IAAvB,GAA8B,IAA5C;MACA,IAAI0S,IAAI,GAAG;QACPziG,IAAI,EAAE,UADC;QACWojC,KAAK,EAAEo/D,MADlB;QAC0BnrC,QAAQ,EAAEmrC,MADpC;QAC4CjrC,gBAAgB,EAAE;UAAEC,KAAK,EAAE;QAAT,CAD9D;QAEP6oC,aAAa,EAAE,KAFR;QAEeP,YAAY,EAAE;MAF7B,CAAX;;MAIA,IAAI,KAAKnrG,MAAL,CAAYg2E,QAAhB,EAA0B;QACtBG,OAAO,CAAC32E,IAAR,CAAasuG,IAAb;MACH,CAFD,MAGK;QACD33B,OAAO,CAAC18E,OAAR,CAAgBq0G,IAAhB;MACH;IACJ;;IACD,KAAK,IAAIpyG,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAG+0E,OAAO,CAACp7E,MAA9B,EAAsCW,CAAC,GAAG0F,GAA1C,EAA+C1F,CAAC,EAAhD,EAAoD;MAChDy6E,OAAO,CAACz6E,CAAD,CAAP,CAAWqyG,iBAAX,GAA+B,CAAC,KAAK/tG,MAAL,CAAYs/E,mBAA5C;IACH;;IACD,OAAOnJ,OAAP;EACH,CA/CD;;EAgDAo0B,WAAW,CAAC3wG,SAAZ,CAAsB2vF,YAAtB,GAAqC,YAAY;IAC7C,IAAI,CAAC,KAAK1X,OAAV,EAAmB;MACf;IACH;;IACD,IAAIkZ,IAAI,GAAG/7D,4DAAM,CAAC,MAAM,KAAKhvB,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+B47D,UAAhC,EAA4C,KAAK1kE,MAAL,CAAYU,OAAxD,CAAjB;IACA,IAAIsqF,GAAG,GAAGh8D,4DAAM,CAAC,MAAM,KAAKhvB,MAAL,CAAYU,OAAZ,CAAoBoI,EAA1B,GAA+B67D,gBAAhC,EAAkD,KAAK3kE,MAAL,CAAYU,OAA9D,CAAhB;IACA,IAAIstG,UAAU,GAAGh/E,4DAAM,CAAC,MAAM24C,WAAP,EAAoB,KAAK3nE,MAAL,CAAYU,OAAhC,CAAvB;IACA,IAAIguC,MAAM,GAAIq8C,IAAI,CAACp8C,YAAL,GAAoBq8C,GAAG,CAACr8C,YAAxB,GAAuCq/D,UAAU,CAACr/D,YAAhE;IACA,KAAKkjC,OAAL,CAAanjC,MAAb,GAAsBA,MAAtB;IACA,KAAKmjC,OAAL,CAAa7/C,QAAb;EACH,CAVD;;EAWAu4E,WAAW,CAAC3wG,SAAZ,CAAsBq0G,cAAtB,GAAuC,YAAY;IAC/C,KAAKp8B,OAAL,CAAasE,OAAb,GAAuB,KAAK80B,UAAL,EAAvB;IACA,KAAKR,eAAL,GAAuB,IAAvB;IACA,KAAK54B,OAAL,CAAaq8B,cAAb;EACH,CAJD;;EAKA3D,WAAW,CAAC3wG,SAAZ,CAAsB4yG,cAAtB,GAAuC,UAAUvtG,IAAV,EAAgB;IACnD,IAAIkvG,EAAE,GAAGn/E,4DAAM,CAAC,iBAAD,EAAoB/vB,IAAI,CAACmvG,GAAzB,CAAf;;IACA,IAAI,CAACD,EAAL,EAAS;MACL,IAAIh4B,OAAO,GAAG,KAAKn2E,MAAL,CAAYk2E,mBAAZ,CAAgCC,OAA9C;;MACA,KAAK,IAAIz6E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGy6E,OAAO,CAACp7E,MAA5B,EAAoCW,CAAC,EAArC,EAAyC;QACrC,IAAIy6E,OAAO,CAACz6E,CAAD,CAAP,CAAW2nD,KAAX,KAAqB,MAAzB,EAAiC;UAC7B8qD,EAAE,GAAGlvG,IAAI,CAACmvG,GAAL,CAAShsD,QAAT,CAAkB,KAAKpiD,MAAL,CAAYuuF,mBAAZ,GAAmC7yF,CAAC,GAAG,CAAvC,GAA6CA,CAAC,GAAG,CAAnE,CAAL;UACA;QACH;MACJ;IACJ;;IACD,IAAIyyG,EAAJ,EAAQ;MACJA,EAAE,CAAC1hF,YAAH,CAAgB,OAAhB,EAAyBtxB,8DAAQ,CAAC,MAAD,EAAS8D,IAAI,CAACnE,IAAd,CAAjC;IACH;;IACD,IAAI,KAAKkF,MAAL,CAAY+wE,cAAZ,IAA8B,KAAK/wE,MAAL,CAAYyvE,KAA1C,IAAmD,KAAKzvE,MAAL,CAAY2yE,UAAZ,KAA2B,MAA9E,IACA,KAAK3yE,MAAL,CAAY2vE,aADZ,IAC6B,KAAK3vE,MAAL,CAAY2vE,aAAZ,CAA0B50E,MAA1B,KAAqC,CADtE,EACyE;MACrE,IAAI,KAAKiF,MAAL,CAAY2vE,aAAZ,CAA0BvyE,OAA1B,CAAkCjC,8DAAQ,CAAC,MAAD,EAAS8D,IAAI,CAACnE,IAAd,CAA1C,MAAmE,CAAC,CAAxE,EAA2E;QACvEw1E,OAAO,CAACrxE,IAAI,CAACmvG,GAAN,CAAP;MACH;IACJ;;IACD,IAAI,CAAC,KAAKpuG,MAAL,CAAY2iF,iBAAb,IAAkCxnF,8DAAQ,CAAC,QAAD,EAAW8D,IAAI,CAACnE,IAAhB,CAA9C,EAAqE;MACjE,IAAImwF,OAAO,GAAGhsF,IAAI,CAACmvG,GAAL,CAASrrG,aAAT,CAAuB,YAAvB,CAAd;;MACA,IAAIkoF,OAAJ,EAAa;QACT,IAAIW,MAAM,GAAGzwF,8DAAQ,CAAC,MAAD,EAAS8D,IAAI,CAACnE,IAAd,CAArB;QACA,IAAIuQ,IAAI,GAAGlQ,8DAAQ,CAAC,MAAD,EAAS8D,IAAI,CAACnE,IAAd,CAAnB;QACAmwF,OAAO,CAACtpF,SAAR,GAAoBiqF,MAAM,CAACt+E,MAAP,CAAc,CAAd,EAAiBs+E,MAAM,CAAC7wF,MAAP,GAAgBsQ,IAAI,CAACtQ,MAAtC,CAApB;MACH;IACJ;;IACD,IAAII,8DAAQ,CAAC,MAAD,EAAS8D,IAAI,CAACnE,IAAd,CAAR,KAAgCpB,SAAhC,IAA6CuF,IAAI,CAACmvG,GAAL,CAASrrG,aAAT,CAAuB,YAAvB,CAAjD,EAAuF;MACnF,IAAIsrG,OAAO,GAAGpvG,IAAI,CAACmvG,GAAL,CAASrrG,aAAT,CAAuB,YAAvB,CAAd;MACA,IAAIurG,YAAY,GAAG,KAAK,CAAxB;;MACA,IAAI,CAACnzG,8DAAQ,CAAC,QAAD,EAAW8D,IAAI,CAACnE,IAAhB,CAAb,EAAoC;QAChCwzG,YAAY,GAAG,EAAf;MACH,CAFD,MAGK;QACD,IAAIC,SAAS,GAAGpzG,8DAAQ,CAAC,MAAD,EAAS8D,IAAI,CAACnE,IAAd,CAAxB;QACA,IAAIkiF,IAAI,GAAG,IAAItgE,sEAAJ,CAAyB,KAAK1c,MAAL,CAAYoe,MAArC,CAAX;QACA,IAAIowF,UAAU,GAAG,KAAK,CAAtB;QACA,IAAIr4B,OAAO,GAAG,KAAKn2E,MAAL,CAAYk2E,mBAAZ,CAAgCC,OAA9C;;QACA,KAAK,IAAIz6E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGy6E,OAAO,CAACp7E,MAA5B,EAAoCW,CAAC,EAArC,EAAyC;UACrC,IAAIy6E,OAAO,CAACz6E,CAAD,CAAP,CAAW2nD,KAAX,KAAqB,MAAzB,EAAiC;YAC7BmrD,UAAU,GAAG,CAACryG,uEAAiB,CAACg6E,OAAO,CAACz6E,CAAD,CAAP,CAAWwP,MAAZ,CAAlB,GAAwCirE,OAAO,CAACz6E,CAAD,CAAP,CAAWwP,MAAX,CAAkBrP,QAAlB,EAAxC,GAAuE,GAApF;YACA;UACH;QACJ;;QACD,IAAIP,KAAK,GAAG0hF,IAAI,CAAC//D,YAAL,CAAmBsxF,SAAS,GAAG,IAA/B,EAAsC;UAAErjG,MAAM,EAAEsjG;QAAV,CAAtC,CAAZ;QACAF,YAAY,GAAGhzG,KAAK,GAAG,GAAR,GAAcy5E,aAAa,CAAC,KAAK/0E,MAAN,EAAc,IAAd,CAA1C;MACH;;MACDquG,OAAO,CAAC1sG,SAAR,GAAoB2sG,YAApB;IACH;;IACD,IAAI,KAAKtuG,MAAL,CAAYg2E,QAAhB,EAA0B;MACtB,IAAI76E,8DAAQ,CAAC,cAAD,EAAiB8D,IAAI,CAACnE,IAAtB,CAAR,KAAwCpB,SAAxC,IAAqDuF,IAAI,CAACmvG,GAAL,CAASrrG,aAAT,CAAuB,YAAvB,CAAzD,EAA+F;QAC3F,IAAI0rG,OAAO,GAAGxvG,IAAI,CAACmvG,GAAL,CAASrrG,aAAT,CAAuB,YAAvB,CAAd;QACA,IAAIi6E,IAAI,GAAG,IAAItgE,sEAAJ,CAAyB,KAAK1c,MAAL,CAAYoe,MAArC,CAAX;QACA,IAAI+3D,OAAO,GAAG,KAAKn2E,MAAL,CAAYk2E,mBAAZ,CAAgCC,OAA9C,CAH2F,CAI3F;;QACA,IAAIjrE,MAAM,GAAG,KAAK,CAAlB;;QACA,KAAK,IAAIxP,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGy6E,OAAO,CAACp7E,MAA5B,EAAoCW,CAAC,EAArC,EAAyC;UACrC,IAAIy6E,OAAO,CAACz6E,CAAD,CAAP,CAAW2nD,KAAX,KAAqB,cAAzB,EAAyC;YACrCn4C,MAAM,GAAGirE,OAAO,CAACz6E,CAAD,CAAP,CAAWwP,MAApB;YACA;UACH;QACJ;;QACD,IAAI23E,eAAe,GAAG7F,IAAI,CAAC9/D,UAAL,CAAgB,IAAI7T,IAAJ,CAASlO,8DAAQ,CAAC,cAAD,EAAiB8D,IAAI,CAACnE,IAAtB,CAAjB,CAAhB,EAA+DoQ,MAA/D,CAAtB;QACAujG,OAAO,CAAC9sG,SAAR,GAAoBkhF,eAApB;MACH;IACJ;;IACD,IAAI6rB,SAAS,GAAGzvG,IAAI,CAACmvG,GAAL,CAASrrG,aAAT,CAAuB,MAAMyjE,OAA7B,CAAhB;;IACA,IAAIkoC,SAAJ,EAAe;MACXA,SAAS,CAAC3hF,SAAV,CAAoB9B,GAApB,CAAwB,SAAxB;IACH;;IACD,IAAI,CAACqvD,aAAa,CAACr7E,IAAI,CAACnE,IAAN,CAAlB,EAA+B;MAC3BmE,IAAI,CAACmvG,GAAL,CAAS7hF,SAAT,IAAsB,MAAMuuD,cAAc,CAAC77E,IAAI,CAACnE,IAAN,CAA1C;IACH;;IACD,IAAIopB,SAAS,GAAG;MACZxjB,OAAO,EAAEzB,IAAI,CAACmvG,GADF;MAEZt6B,WAAW,EAAE70E,IAAI,CAACnE,IAFN;MAGZujC,MAAM,EAAE;IAHI,CAAhB;IAKA,KAAKr+B,MAAL,CAAY+rB,OAAZ,CAAoB,UAApB,EAAgC7H,SAAhC;EACH,CAhFD;;EAiFAqmF,WAAW,CAAC3wG,SAAZ,CAAsB8yG,aAAtB,GAAsC,UAAUztG,IAAV,EAAgB;IAClD,IAAIA,IAAI,CAACqyD,WAAL,KAAqB,SAAzB,EAAoC;MAChC,KAAKtxD,MAAL,CAAY4xB,aAAZ,CAA0B;QAAEwiD,SAAS,EAAEn1E,IAAI,CAACqmD;MAAlB,CAA1B,EAAyD,IAAzD;MACA,KAAKtlD,MAAL,CAAY4xB,aAAZ,CAA0B;QAAEuzB,MAAM,EAAElmD,IAAI,CAAC0vG;MAAf,CAA1B,EAAuD,IAAvD;;MACA,IAAI,KAAK3uG,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAzC,EAA4C;QACxC,KAAK6zG,QAAL,GAAgB,IAAhB;QACA,IAAIC,IAAI,GAAG,KAAKh9B,OAAL,CAAai9B,qBAAb,EAAX;QACA,IAAI1tG,GAAG,GAAGytG,IAAI,CAAC9zG,MAAf;QACA,KAAKg0G,iBAAL,GAAyB,EAAzB;;QACA,OAAO3tG,GAAG,GAAG,CAAb,EAAgB;UACZ;UACA,IAAItG,IAAI,GAAG,KAAK+2E,OAAL,CAAam9B,aAAb,GAA6BH,IAAI,CAACztG,GAAG,GAAG,CAAP,CAAjC,EAA4CtG,IAAvD;UACA,KAAKi0G,iBAAL,CAAuBvvG,IAAvB,CAA4BrE,8DAAQ,CAAC,KAAK6E,MAAL,CAAYyuE,KAAZ,GAAoB,IAApB,GAA2B,MAA5B,EAAoC3zE,IAApC,CAApC;UACAsG,GAAG;QACN;MACJ;;MACD,KAAKpB,MAAL,CAAYgb,MAAZ,CAAmBkxD,YAAnB,EAAiC,EAAjC;IACH;EACJ,CAlBD;;EAmBAq+B,WAAW,CAAC3wG,SAAZ,CAAsBgzG,gBAAtB,GAAyC,UAAU3tG,IAAV,EAAgB;IACrD,IAAIyvG,SAAS,GAAGzvG,IAAI,CAACgB,IAAL,CAAU8C,aAAV,CAAwB,MAAMyjE,OAA9B,CAAhB;;IACA,IAAIkoC,SAAJ,EAAe;MACXA,SAAS,CAAC3hF,SAAV,CAAoB9B,GAApB,CAAwB,SAAxB;IACH;EACJ,CALD;;EAMAs/E,WAAW,CAAC3wG,SAAZ,CAAsByyG,iBAAtB,GAA0C,UAAUptG,IAAV,EAAgB;IACtDmiE,mEAAW,CAAC,KAAKphE,MAAL,CAAYU,OAAb,CAAX,CADsD,CAEtD;;IACA,IAAI+oD,KAAK,GAAG0qB,aAAa,CAAC,KAAKn0E,MAAN,EAAe,KAAKA,MAAL,CAAYspF,oBAAb,GAAqCrqF,IAAI,CAACrB,MAA1C,GAAmD,KAAKi0E,OAAL,CAAatgB,UAA9E,CAAzB;IACAtyD,IAAI,CAACrB,MAAL,GAAc6rD,KAAd;EACH,CALD;EAMA;;;EACA8gD,WAAW,CAAC3wG,SAAZ,CAAsB0yG,WAAtB,GAAoC,YAAY;IAC5C,KAAKxiB,aAAL;;IACA,IAAK,KAAK9pF,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAArC,IAA0C,CAAC,KAAKiF,MAAL,CAAYspF,oBAAxD,IACE,KAAKtpF,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAArC,IAA0C,KAAKiF,MAAL,CAAYspF,oBAAtD,IACE,KAAK5oF,OAAL,CAAaqC,aAAb,CAA2B,YAA3B,EAAyCw5B,SAAzC,IAAsD,CAF9D,EAEmE;MAC/D,KAAK0yE,aAAL,CAAmB,KAAKjvG,MAAL,CAAY4wE,aAA/B;IACH;;IACD,IAAI,KAAK6U,gBAAL,KAA0B,IAA9B,EAAoC;MAChC,IAAI,CAAC,KAAKglB,eAAV,EAA2B;QACvB,KAAKwE,aAAL,CAAmB,KAAKjvG,MAAL,CAAYg4E,UAA/B;QACA,KAAKyN,gBAAL,GAAwB,KAAxB;MACH,CAHD,MAIK;QACD,KAAKglB,eAAL,GAAuB,KAAvB;MACH;IACJ;;IACD,IAAI,KAAKzqG,MAAL,CAAYu9E,WAAhB,EAA6B;MACzB,KAAK0xB,aAAL,CAAmB,CAAC9zG,8DAAQ,CAAC,KAAK6E,MAAL,CAAYyuE,KAAZ,GAAoB,IAApB,GAA2B,MAA5B,EAAoC,KAAKzuE,MAAL,CAAYu9E,WAAhD,CAAT,CAAnB;MACA,KAAKv9E,MAAL,CAAYu9E,WAAZ,GAA0B,IAA1B;IACH;;IACD,IAAI,KAAKv9E,MAAL,CAAYmyE,mBAAZ,CAAgCp3E,MAApC,EAA4C;MACxC,KAAKk0G,aAAL,CAAmB,KAAKjvG,MAAL,CAAYmyE,mBAA/B;IACH;;IACD,IAAI,KAAKnyE,MAAL,CAAY09E,WAAhB,EAA6B;MACzB,KAAKiP,YAAL,CAAkB,KAAK3sF,MAAL,CAAY09E,WAA9B;MACA,KAAK19E,MAAL,CAAY09E,WAAZ,GAA0B,IAA1B;IACH;;IACD,IAAI,KAAKkxB,QAAL,KAAkB,IAAtB,EAA4B;MACxB,KAAKK,aAAL,CAAmB,KAAKF,iBAAxB;MACA,KAAKH,QAAL,GAAgB,KAAhB;IACH;;IACD,IAAI,KAAKjE,iBAAT,EAA4B;MACxB,IAAI,CAAC,KAAKF,eAAV,EAA2B;QACvB,KAAKwE,aAAL,CAAmB,KAAKrE,mBAAxB;QACA,KAAKD,iBAAL,GAAyB,KAAzB;MACH,CAHD,MAIK;QACD,KAAKF,eAAL,GAAuB,KAAvB;MACH;IACJ;;IACD,IAAI,KAAKllB,eAAL,KAAyB,IAA7B,EAAmC;MAC/B,KAAK77B,KAAL;MACA,KAAKulD,aAAL,CAAmB,KAAKjvG,MAAL,CAAYo7E,UAA/B;;MACA,IAAI,KAAK1xB,KAAL,KAAe,KAAK1pD,MAAL,CAAYo7E,UAAZ,CAAuBrgF,MAA1C,EAAkD;QAC9C,KAAKwqF,eAAL,GAAuB,KAAvB;QACA,KAAKvlF,MAAL,CAAYo7E,UAAZ,GAAyB,EAAzB;MACH;IACJ;;IACD,IAAI,KAAKvJ,OAAL,CAAaq9B,eAAb,CAA6Bn0G,MAA7B,GAAsC,KAAK82E,OAAL,CAAas9B,YAAb,EAAtC,GAAoE,KAAKt9B,OAAL,CAAanjC,MAArF,EAA6F;MACzF,IAAI0gE,OAAO,GAAG,KAAKv9B,OAAL,CAAaw9B,gBAAb,EAAd;MACAD,OAAO,CAACxhF,KAAR,CAAcs3D,YAAd,GAA6B,EAA7B;MACAkqB,OAAO,CAACxhF,KAAR,CAAc0hF,WAAd,GAA4B,EAA5B;MACA,IAAIC,SAAS,GAAGvgF,4DAAM,CAAC,kBAAD,EAAqBogF,OAArB,CAAtB;MACAG,SAAS,CAAC3hF,KAAV,CAAgB4hF,gBAAhB,GAAmC,GAAnC;MACA,IAAIC,OAAO,GAAG,KAAK59B,OAAL,CAAa69B,UAAb,GAA0B3sG,aAA1B,CAAwC,YAAxC,CAAd;MACA0sG,OAAO,CAAC7hF,KAAR,CAAcstB,SAAd,GAA0B,EAA1B;MACAu0D,OAAO,CAAC1iF,SAAR,CAAkB9B,GAAlB,CAAsB,cAAtB;IACH,CATD,MAUK;MACD,IAAImkF,OAAO,GAAG,KAAKv9B,OAAL,CAAaw9B,gBAAb,EAAd;;MACA,IAAI,CAAC,KAAKrvG,MAAL,CAAYie,SAAjB,EAA4B;QACxBmxF,OAAO,CAACxhF,KAAR,CAAcs3D,YAAd,GAA6B,MAA7B;MACH,CAFD,MAGK;QACDkqB,OAAO,CAACxhF,KAAR,CAAc0hF,WAAd,GAA4B,MAA5B;MACH;;MACD,IAAIG,OAAO,GAAG,KAAK59B,OAAL,CAAa69B,UAAb,GAA0B3sG,aAA1B,CAAwC,YAAxC,CAAd;MACA0sG,OAAO,CAAC1iF,SAAR,CAAkBrB,MAAlB,CAAyB,cAAzB;IACH;;IACD,KAAKsF,UAAL,GAAkB,IAAlB;IACA,KAAKhxB,MAAL,CAAY+wE,cAAZ,GAA6B,KAA7B;IACA5P,mEAAW,CAAC,KAAKnhE,MAAL,CAAYU,OAAb,CAAX;IACA,KAAKivG,aAAL,CAAmB,KAAKxC,SAAxB;IACA,KAAKhtB,YAAL,GAAoB,KAAK0qB,QAAL,GAAgB,IAAhB,GAAuB,KAAK1qB,YAAhD;IACA,KAAK0qB,QAAL,GAAgB,KAAhB;EACH,CA3ED;;EA4EAN,WAAW,CAAC3wG,SAAZ,CAAsBq1G,aAAtB,GAAsC,UAAU9sD,KAAV,EAAiB;IACnD;IACA,IAAIytD,WAAW,GAAG,KAAK/9B,OAAL,CAAag+B,qBAAb,EAAlB;IACA,IAAIC,QAAQ,GAAG,EAAf;;IACA,KAAK,IAAIp0G,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAGwuG,WAAW,CAAC70G,MAAlC,EAA0CW,CAAC,GAAG0F,GAA9C,EAAmD1F,CAAC,EAApD,EAAwD;MACpD,IAAIuE,IAAI,GAAG,KAAKD,MAAL,CAAYyuE,KAAZ,GAAoBtzE,8DAAQ,CAAC,IAAD,EAAOy0G,WAAW,CAACl0G,CAAD,CAAlB,CAA5B,GAAqDw4E,OAAO,CAAC,KAAKl0E,MAAN,EAAc4vG,WAAW,CAACl0G,CAAD,CAAzB,CAAvE;;MACA,IAAIymD,KAAK,CAAC/kD,OAAN,CAAc6C,IAAd,MAAwB,CAAC,CAA7B,EAAgC;QAC5B6vG,QAAQ,CAACtwG,IAAT,CAAc9D,CAAd;MACH,CAFD,MAGK,IAAI,CAAC,KAAKsE,MAAL,CAAY2iF,iBAAb,IAAkC1iF,IAAI,CAAC8vG,QAAL,CAAc,GAAd,CAAtC,EAA0D;QAC3D,IAAIC,IAAI,GAAG/vG,IAAI,CAACxE,KAAL,CAAW,GAAX,EAAgBsF,KAAhB,CAAsB,CAAtB,EAAyB,CAAC,CAA1B,EAA6BrB,IAA7B,CAAkC,GAAlC,CAAX;;QACA,IAAIyiD,KAAK,CAAC/kD,OAAN,CAAc4yG,IAAd,MAAwB,CAAC,CAA7B,EAAgC;UAC5BF,QAAQ,CAACtwG,IAAT,CAAc9D,CAAd;QACH;MACJ;IACJ;;IACD,IAAIo0G,QAAQ,CAAC/0G,MAAT,KAAoB,CAAxB,EAA2B;MACvB,KAAK82E,OAAL,CAAa8mB,UAAb,CAAwBmX,QAAxB;MACA,KAAK/f,QAAL,CAAc,KAAKle,OAAL,CAAao+B,gBAA3B;IACH;EACJ,CApBD,CAhbmD,CAqcnD;;;EACA1F,WAAW,CAAC3wG,SAAZ,CAAsB+yF,YAAtB,GAAqC,UAAU7xF,IAAV,EAAgB;IACjD;IACA,IAAI2uD,KAAK,GAAG,KAAKooB,OAAL,CAAag+B,qBAAb,EAAZ,CAFiD,CAGjD;;IACA,IAAIK,KAAK,GAAG,EAAZ;;IACA,IAAI,KAAKlwG,MAAL,CAAYyuE,KAAhB,EAAuB;MACnByhC,KAAK,GAAG,IAAInjD,6DAAJ,CAAgBtD,KAAhB,EACJ7F,YADI,CACS,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,IAAlB,EAAwB,OAAxB,EAAiC,KAAKtkD,MAAL,CAAY8jF,SAA7C,EAAwD,KAAxD,CADT,CAAR;IAEH,CAHD,MAIK;MACD;MACA,IAAI/yE,KAAK,GAAG,IAAIg8C,6DAAJ,CAAgBtD,KAAhB,EACR7F,YADQ,CACK,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,MAAlB,EAA0B,OAA1B,EAAmCnpD,8DAAQ,CAAC,MAAD,EAASL,IAAT,CAA3C,EAA2D,KAA3D,CADL,CAAZ;;MAEA,IAAIiW,KAAK,CAAChW,MAAN,GAAe,CAAnB,EAAsB;QAClBm1G,KAAK,GAAG,IAAInjD,6DAAJ,CAAgBh8C,KAAhB,EACJ6yC,YADI,CACS,IAAIpB,uDAAJ,GAAY8B,KAAZ,CAAkB,YAAlB,EAAgC,OAAhC,EAAyC,KAAKtkD,MAAL,CAAYo6E,UAArD,EAAiE,KAAjE,CADT,CAAR;MAEH;IACJ;;IACD,IAAI81B,KAAK,CAACn1G,MAAN,GAAe,CAAnB,EAAsB;MAClB,IAAI0gB,KAAK,GAAGguC,KAAK,CAACrsD,OAAN,CAAc8yG,KAAK,CAAC,CAAD,CAAnB,CAAZ;MACA,KAAKr+B,OAAL,CAAa8mB,UAAb,CAAwB,CAACl9E,KAAD,CAAxB;IACH;EACJ,CAtBD;;EAuBA8uF,WAAW,CAAC3wG,SAAZ,CAAsBu2G,YAAtB,GAAqC,YAAY;IAC7C,IAAI,KAAKnwG,MAAL,CAAYo0E,SAAZ,KAA0B,MAA9B,EAAsC;MAClC,KAAKvC,OAAL,CAAau+B,UAAb,CAAwBjjC,UAAxB,CAAmC,KAAKntE,MAAL,CAAYmlD,MAA/C,EAAuD,KAAKnlD,MAAL,CAAYo0E,SAAnE;IACH,CAFD,MAGK;MACD;MACA,KAAKvC,OAAL,CAAatgB,UAAb,GAA0B4iB,aAAa,CAAC,KAAKn0E,MAAN,EAAc,KAAK6xE,OAAL,CAAatgB,UAA3B,CAAvC;IACH;;IACD,IAAI,KAAK7wD,OAAL,CAAaqC,aAAb,CAA2B,YAA3B,EAAyCw5B,SAAzC,KAAuD,CAA3D,EAA8D;MAC1D,KAAKs1C,OAAL,CAAaw+B,aAAb;IACH;EACJ,CAXD;;EAYA9F,WAAW,CAAC3wG,SAAZ,CAAsB24B,iBAAtB,GAA0C,UAAUhyB,CAAV,EAAa;IACnD,IAAIA,CAAC,CAAC89B,MAAF,KAAa,KAAKvL,aAAL,EAAb,IAAqCvyB,CAAC,CAAC89B,MAAF,KAAa,QAAtD,EAAgE;MAC5D;MACA;IACH;;IACD,KAAK,IAAInhC,EAAE,GAAG,CAAT,EAAY8F,EAAE,GAAGhG,MAAM,CAACjB,IAAP,CAAYwE,CAAC,CAAC46B,OAAd,CAAtB,EAA8Cj+B,EAAE,GAAG8F,EAAE,CAACjI,MAAtD,EAA8DmC,EAAE,EAAhE,EAAoE;MAChE,IAAI6G,IAAI,GAAGf,EAAE,CAAC9F,EAAD,CAAb;;MACA,QAAQ6G,IAAR;QACI,KAAK,kBAAL;UACI,KAAK+lF,aAAL;UACA;;QACJ,KAAK,QAAL;UACI,KAAKP,YAAL;UACA;;QACJ,KAAK,qBAAL;UACI,IAAI,CAACptF,uEAAiB,CAAC,KAAK01E,OAAN,CAAtB,EAAsC;YAClC,KAAKm5B,cAAL;YACA,IAAI70B,OAAO,GAAG,KAAK80B,UAAL,EAAd;YACA,KAAKp5B,OAAL,CAAasE,OAAb,GAAuBA,OAAvB;YACA,KAAKtE,OAAL,CAAa65B,aAAb,GAA6B,KAAK1rG,MAAL,CAAYk2E,mBAAZ,CAAgCy1B,cAA7D;YACA,KAAK95B,OAAL,CAAa7/C,QAAb;YACA,KAAK6/C,OAAL,CAAaq8B,cAAb;UACH;;UACD;;QACJ,KAAK,eAAL;UACI,KAAK1D,WAAL,GAAmB,KAAnB;;UACA,IAAI,KAAKxqG,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAzC,EAA4C;YACxC,IAAI,CAAC,KAAKiF,MAAL,CAAYuuF,mBAAjB,EAAsC;cAClC,IAAIsN,OAAO,GAAG,KAAK77F,MAAL,CAAY4wE,aAAZ,CAA0B7vE,KAA1B,CAAgC,KAAKf,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,GAAmC,CAAnE,CAAd;cACA,KAAKiF,MAAL,CAAY4xB,aAAZ,CAA0B;gBAAEg/C,aAAa,EAAEirB;cAAjB,CAA1B,EAAsD,IAAtD;YACH;;YACD,KAAKoT,aAAL,CAAmB,KAAKjvG,MAAL,CAAY4wE,aAA/B;YACA,KAAK5wE,MAAL,CAAY4xB,aAAZ,CAA0B;cAAEg/C,aAAa,EAAE,KAAK5wE,MAAL,CAAY4wE;YAA7B,CAA1B,EAAwE,IAAxE;UACH,CAPD,MAQK,IAAI,CAACz0E,uEAAiB,CAAC,KAAK01E,OAAN,CAAtB,EAAsC;YACvC,KAAKA,OAAL,CAAayb,cAAb;YACA,KAAKkd,WAAL,GAAmB,IAAnB;UACH;;UACD;;QACJ,KAAK,mBAAL;UACIx4B,IAAI,CAAC,KAAKhyE,MAAN,EAAcorE,WAAd,EAA2B,KAAKprE,MAAL,CAAYuuE,IAAvC,CAAJ;UACA;;QACJ,KAAK,iBAAL;UACIyD,IAAI,CAAC,KAAKhyE,MAAN,EAAcorE,WAAd,EAA2B,KAAKprE,MAAL,CAAYuuE,IAAvC,CAAJ;UACA;;QACJ,KAAK,qBAAL;UACI,IAAI,CAACpyE,uEAAiB,CAAC,KAAK01E,OAAN,CAAtB,EAAsC;YAClC,KAAK+4B,mBAAL,GAA2B,KAAK5qG,MAAL,CAAY4wE,aAAvC;YACA,KAAKiB,OAAL,CAAa+5B,iBAAb,CAA+BvgG,IAA/B,GAAsC9K,CAAC,CAAC46B,OAAF,CAAUozD,mBAAV,GAAgC,UAAhC,GAA6C,QAAnF;YACA,KAAKoc,iBAAL,GAAyB,IAAzB;YACA,KAAKsD,cAAL;UACH;;UACD;;QACJ,KAAK,MAAL;UACIh8B,YAAY,CAAC,KAAKjyE,MAAN,EAAc,SAAd,CAAZ;UACA;;QACJ,KAAK,OAAL;UACI,KAAKswG,eAAL;MAlDR;IAoDH;EACJ,CA5DD;;EA6DA/F,WAAW,CAAC3wG,SAAZ,CAAsB6yF,aAAtB,GAAsC,UAAUxtF,IAAV,EAAgB;IAClD,KAAKe,MAAL,CAAYyvE,KAAZ,GAAoB,KAApB;;IACA,IAAI,KAAKzvE,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAhC,CAA0C/vE,OAA1C,CAAkDpF,KAAlD,CAAwD46C,IAAxD,OAAmE,EAAnE,IAAyE,KAAK27B,OAAlF,EAA2F;MACvF,KAAK7xE,MAAL,CAAY0sF,aAAZ,GAA4B,EAA5B;;MACA,IAAI,CAAC,KAAK1sF,MAAL,CAAY0wE,UAAjB,EAA6B;QACzB,KAAK6/B,gBAAL,CAAsB,KAAtB;MACH,CAFD,MAGK;QACD,KAAKC,gBAAL;MACH;IACJ;;IACD9gC,UAAU,CAAC,KAAK1vE,MAAN,CAAV;;IACA,IAAI,KAAKA,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC;MACA,KAAKiO,YAAL,GAAoB,KAApB;MACA/e,mEAAW,CAAC,KAAKphE,MAAL,CAAYU,OAAb,CAAX;MACA,KAAKV,MAAL,CAAY4xB,aAAZ,CAA0B;QAAEg/C,aAAa,EAAE;MAAjB,CAA1B,EAAiD,IAAjD;MACA,KAAKiB,OAAL,CAAatgB,UAAb,GAA0B4iB,aAAa,CAAC,KAAKn0E,MAAN,EAAcf,IAAI,CAACyyE,KAAnB,CAAvC;MACA,KAAKG,OAAL,CAAaw+B,aAAb;;MACA,IAAI,KAAKrwG,MAAL,CAAYgtG,OAAhB,EAAyB;QACrB,KAAKn7B,OAAL,CAAar3D,EAAb,CAAgB,qBAAhB,EAAuC,KAAK0yF,mBAA5C,EAAiE,IAAjE;MACH;IACJ;;IACD,KAAKC,SAAL,GAAiBluG,IAAjB;EACH,CAxBD;;EAyBAsrG,WAAW,CAAC3wG,SAAZ,CAAsB42G,gBAAtB,GAAyC,YAAY;IACjD,IAAIpvG,GAAG,GAAG,KAAKywE,OAAL,CAAasE,OAAb,CAAqBp7E,MAA/B;IACA,IAAI01G,UAAU,GAAG10F,IAAI,CAACC,KAAL,CAAWD,IAAI,CAAC2rB,SAAL,CAAe,KAAKmqC,OAAL,CAAasE,OAA5B,CAAX,CAAjB;;IACA,IAAIs6B,UAAU,CAACrvG,GAAG,GAAG,CAAP,CAAV,CAAoBiiD,KAApB,IAA6BotD,UAAU,CAACrvG,GAAG,GAAG,CAAP,CAAV,CAAoBiiD,KAApB,KAA8B,YAA3D,IAA2E,CAAC,KAAKrjD,MAAL,CAAYg2E,QAA5F,EAAsG;MAClG,IAAI06B,aAAa,GAAG;QAChBrtD,KAAK,EAAE,YADS;QACKof,UAAU,EAAEsS,aAAa,CAAC,KAAK/0E,MAAN,EAAc,MAAd,CAD9B;QACqD0iE,QAAQ,EAAE,GAD/D;QACoEj0B,KAAK,EAAE;MAD3E,CAApB;MAGA,KAAKojC,OAAL,CAAasE,OAAb,CAAqB32E,IAArB,CAA0BkxG,aAA1B;MACA,KAAKpD,WAAL,CAAiB,KAAKz7B,OAAL,CAAasE,OAA9B,EAAuC,YAAvC;MACA,KAAKm3B,WAAL,CAAiB,KAAKz7B,OAAL,CAAasE,OAA9B,EAAuC,MAAvC;MACA,KAAKs0B,eAAL,GAAuB,IAAvB;MACA,KAAK54B,OAAL,CAAaq8B,cAAb;IACH;EACJ,CAbD;;EAcA3D,WAAW,CAAC3wG,SAAZ,CAAsB+1G,aAAtB,GAAsC,UAAU1wG,IAAV,EAAgB;IAClD;IACA,IAAIwqD,KAAK,GAAG0qB,aAAa,CAAC,KAAKn0E,MAAN,EAAcf,IAAI,CAACyyE,KAAnB,CAAzB;;IACA,IAAIjoB,KAAK,CAAC1uD,MAAN,KAAiB,CAAjB,IAAsB,CAACoB,uEAAiB,CAAC,KAAKuE,OAAL,CAAaqC,aAAb,CAA2B,MAAMklE,SAAjC,CAAD,CAA5C,EAA2F;MACvFuM,kBAAkB,CAAC,KAAKx0E,MAAN,EAAc,KAAKU,OAAnB,EAA4BzB,IAA5B,CAAlB;IACH,CAFD,MAGK,IAAIwqD,KAAK,CAAC1uD,MAAN,KAAiB,CAAjB,IAAsB,KAAK2F,OAAL,CAAaqC,aAAb,CAA2B,MAAM4jE,KAAjC,CAA1B,EAAmE;MACpE,IAAI,KAAKjmE,OAAL,CAAaqC,aAAb,CAA2B,MAAMklE,SAAjC,EAA4CllE,aAA5C,CAA0D,MAAM4jE,KAAhE,CAAJ,EAA4E;QACxE,IAAIgO,QAAQ,GAAG,KAAKj0E,OAAL,CAAaqC,aAAb,CAA2B,MAAMklE,SAAjC,EAA4CllE,aAA5C,CAA0D,MAAM4jE,KAAhE,CAAf;QACA,KAAKjmE,OAAL,CAAaqC,aAAb,CAA2B,MAAMklE,SAAjC,EAA4Cn5C,WAA5C,CAAwD6lD,QAAxD;MACH,CAHD,MAIK;QACD,KAAKj0E,OAAL,CAAaouB,WAAb,CAAyB,KAAKpuB,OAAL,CAAaqC,aAAb,CAA2B,MAAM4jE,KAAjC,CAAzB;MACH;IACJ;EACJ,CAfD;;EAgBA4jC,WAAW,CAAC3wG,SAAZ,CAAsBgzF,UAAtB,GAAmC,YAAY;IAC3C,IAAI,KAAK5sF,MAAL,CAAYkwE,YAAZ,KAA6B,aAAjC,EAAgD;MAC5C;MACA,IAAIp1E,IAAI,GAAG,KAAK+2E,OAAL,CAAa8+B,kBAAb,GAAkC,CAAlC,CAAX;MACA,KAAKC,WAAL,CAAiB91G,IAAjB;IACH;EACJ,CAND;;EAOAyvG,WAAW,CAAC3wG,SAAZ,CAAsBuyG,cAAtB,GAAuC,UAAUltG,IAAV,EAAgB;IACnD,KAAK4yE,OAAL,CAAa8mB,UAAb,CAAwB,CAAC15F,IAAI,CAAC4xG,QAAN,CAAxB,EADmD,CAEnD;;IACA,IAAI/1G,IAAJ;;IACA,IAAImE,IAAI,CAAC6xG,OAAT,EAAkB;MACdh2G,IAAI,GAAGihB,IAAI,CAACC,KAAL,CAAWD,IAAI,CAAC2rB,SAAL,CAAezoC,IAAI,CAAC6xG,OAApB,CAAX,CAAP;MACA,KAAKF,WAAL,CAAiB91G,IAAjB;IACH;EACJ,CARD,CApmBmD,CA6mBnD;;;EACAyvG,WAAW,CAAC3wG,SAAZ,CAAsBg3G,WAAtB,GAAoC,UAAU91G,IAAV,EAAgB;IAChD,IAAIkE,KAAK,GAAG,IAAZ;;IACA,IAAI,CAACuzE,aAAa,CAACz3E,IAAD,CAAlB,EAA0B;MACtB03E,kBAAkB,CAAC,KAAKxyE,MAAN,EAAclF,IAAd,EAAoBizE,cAApB,CAAlB;MACA;IACH;;IACD,IAAI7pD,SAAS,GAAG;MAAEC,MAAM,EAAE,KAAV;MAAiB2vD,WAAW,EAAEh5E,IAA9B;MAAoCujC,MAAM,EAAE;IAA5C,CAAhB;IACA,KAAKr+B,MAAL,CAAY+rB,OAAZ,CAAoB,UAApB,EAAgC7H,SAAhC,EAA2C,UAAUgsE,YAAV,EAAwB;MAC/D,IAAI,CAACA,YAAY,CAAC/rE,MAAlB,EAA0B;QACtB,IAAIivE,MAAM,GAAGj4F,8DAAQ,CAAC,MAAD,EAASL,IAAT,CAArB;;QACA,IAAIK,8DAAQ,CAAC,QAAD,EAAWL,IAAX,CAAZ,EAA8B;UAC1B,IAAI6wF,IAAI,GAAG9Y,QAAQ,CAAC/3E,IAAD,CAAnB;;UACA,IAAI6wF,IAAI,KAAKzkB,UAAb,EAAyB;YACrB,IAAIwM,MAAM,GAAGJ,WAAW,CAACt0E,KAAK,CAACgB,MAAP,EAAelF,IAAf,CAAxB;YACAspF,iBAAiB,CAACplF,KAAK,CAACgB,MAAP,EAAeozF,MAAf,EAAuB1f,MAAvB,CAAjB;UACH;QACJ,CAND,MAOK;UACD,IAAI5uE,GAAG,GAAG9F,KAAK,CAACgB,MAAN,CAAawwE,mBAAb,CAAiCC,SAAjC,CAA2C/vE,OAA3C,CAAmDpF,KAA7D;;UACA,IAAIwJ,GAAG,KAAK,EAAR,IAAc,CAAC9F,KAAK,CAACgB,MAAN,CAAa0wE,UAAhC,EAA4C;YACxC,IAAI5nE,EAAE,GAAG3N,8DAAQ,CAAC,IAAD,EAAOL,IAAP,CAAjB;YACAkE,KAAK,CAACgB,MAAN,CAAa03E,OAAb,GAAuB14E,KAAK,CAACgB,MAAN,CAAauuE,IAApC;YACA,IAAIe,OAAO,GAAGtwE,KAAK,CAACgB,MAAN,CAAauuE,IAAb,IAAqBpyE,uEAAiB,CAAC2M,EAAD,CAAjB,GAAwBsqF,MAAxB,GAAiCtqF,EAAtD,IAA4D,GAA1E;;YACA9J,KAAK,CAACgB,MAAN,CAAa4xB,aAAb,CAA2B;cAAE28C,IAAI,EAAEe;YAAR,CAA3B,EAA8C,IAA9C;;YACAtwE,KAAK,CAACgB,MAAN,CAAa4uE,SAAb,CAAuBpvE,IAAvB,CAA4B4zF,MAA5B;;YACAp0F,KAAK,CAACgB,MAAN,CAAa0uE,MAAb,CAAoBlvE,IAApB,CAAyBrE,8DAAQ,CAAC,QAAD,EAAWL,IAAX,CAAjC;;YACAkE,KAAK,CAACgB,MAAN,CAAamxE,QAAb,GAAwB,CAACr2E,IAAD,CAAxB;YACA23E,UAAU,CAACzzE,KAAK,CAACgB,MAAP,CAAV;UACH,CATD,MAUK;YACDw2E,gBAAgB,CAACx3E,KAAK,CAACgB,MAAP,EAAelF,IAAf,CAAhB;UACH;;UACDkE,KAAK,CAACgB,MAAN,CAAa0wE,UAAb,GAA0B,KAA1B;QACH;;QACD1xE,KAAK,CAAC0B,OAAN,CAAcmB,KAAd;;QACA,IAAI7C,KAAK,CAACgB,MAAN,CAAaspF,oBAAjB,EAAuC;UACnCtqF,KAAK,CAACgB,MAAN,CAAaU,OAAb,CAAqBqC,aAArB,CAAmC,MAAM/D,KAAK,CAACgB,MAAN,CAAaU,OAAb,CAAqBoI,EAA3B,GAAgCo7D,aAAnE,EAAkFriE,KAAlF;QACH;MACJ;IACJ,CAhCD;EAiCH,CAxCD;EAyCA;;;EACA0oG,WAAW,CAAC3wG,SAAZ,CAAsByxF,cAAtB,GAAuC,UAAUpsF,IAAV,EAAgB;IACnD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC,IAAI,KAAKlyE,MAAL,CAAYspF,oBAAhB,EAAsC;QAClC,KAAKtpF,MAAL,CAAY4xB,aAAZ,CAA0B;UAAEg/C,aAAa,EAAE;QAAjB,CAA1B,EAAiD,IAAjD;MACH;;MACD,IAAI,CAAC,KAAKiB,OAAV,EAAmB;QACf,KAAKvsC,MAAL,CAAYrmC,IAAZ;MACH,CAFD,MAGK;QACD,KAAK4rG,QAAL,GAAgB,IAAhB;MACH;;MACD,IAAI,KAAK7qG,MAAL,CAAY0wE,UAAhB,EAA4B;QACxB,KAAK8/B,gBAAL;QACA,KAAKxwG,MAAL,CAAY4xB,aAAZ,CAA0B;UAAEg/C,aAAa,EAAE;QAAjB,CAA1B,EAAiD,IAAjD;MACH;;MACD,KAAKiB,OAAL,CAAatgB,UAAb,GAA0B4iB,aAAa,CAAC,KAAKn0E,MAAN,EAAcf,IAAI,CAACyyE,KAAnB,CAAvC;MACA,KAAK1xE,MAAL,CAAYgb,MAAZ,CAAmBgyD,UAAnB,EAA+B,EAA/B;MACA,KAAK6E,OAAL,CAAanxE,OAAb,CAAqBqsB,SAArB,CAA+BrB,MAA/B,CAAsCq+C,YAAtC;MACA,KAAKoW,YAAL,GAAoB,KAApB;MACA,KAAKtO,OAAL,CAAayb,cAAb;;MACA,IAAI,KAAKttF,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAhC,CAA0C/vE,OAA1C,CAAkDpF,KAAlD,CAAwD46C,IAAxD,OAAmE,EAAvE,EAA2E;QACvE,KAAK66D,aAAL,CAAmB9xG,IAAnB;MACH;;MACD,KAAKsqF,YAAL;;MACA,IAAI,KAAK1X,OAAL,CAAaq5B,YAAb,CAA0B/0B,OAA1B,CAAkCp7E,MAAlC,GAA2C,CAA3C,IAAgD,KAAK82E,OAAL,CAAaq5B,YAAb,CAA0B/0B,OAA1B,CAAkC,CAAlC,EAAqC9yB,KAArC,KAA+C,KAAKrjD,MAAL,CAAYmlD,MAA/G,EAAuH;QACnH,IAAI,KAAKnlD,MAAL,CAAYo0E,SAAZ,KAA0B,MAA9B,EAAsC;UAClC,KAAKvC,OAAL,CAAa1E,UAAb,CAAwB,KAAKntE,MAAL,CAAYmlD,MAApC,EAA4C,KAAKnlD,MAAL,CAAYo0E,SAAxD;QACH;MACJ;IACJ;EACJ,CA9BD;EA+BA;;;EACAm2B,WAAW,CAAC3wG,SAAZ,CAAsBm3G,aAAtB,GAAsC,UAAU9xG,IAAV,EAAgB;IAClD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC,KAAKlyE,MAAL,CAAY4xB,aAAZ,CAA0B;QAAEg/C,aAAa,EAAE;MAAjB,CAA1B,EAAiD,IAAjD;MACA,KAAK5wE,MAAL,CAAYgb,MAAZ,CAAmB6wD,gBAAnB,EAAqC,EAArC;;MACA,IAAI,CAAC,KAAK7rE,MAAL,CAAY+wE,cAAjB,EAAiC;QAC7B,KAAK/wE,MAAL,CAAYmyE,mBAAZ,GAAkC,EAAlC;MACH;;MACD,KAAKq+B,gBAAL;MACA,KAAKxwG,MAAL,CAAY0sF,aAAZ,GAA4BztF,IAAI,CAACyyE,KAAjC;MACA,KAAK+a,aAAL,CAAmBxtF,IAAnB;IACH;EACJ,CAXD;;EAYAsrG,WAAW,CAAC3wG,SAAZ,CAAsB22G,gBAAtB,GAAyC,UAAUS,SAAV,EAAqB;IAC1D,IAAI5vG,GAAG,GAAG,KAAKywE,OAAL,CAAasE,OAAb,CAAqBp7E,MAA/B;IACA,IAAI01G,UAAU,GAAG10F,IAAI,CAACC,KAAL,CAAWD,IAAI,CAAC2rB,SAAL,CAAe,KAAKmqC,OAAL,CAAasE,OAA5B,CAAX,CAAjB;;IACA,IAAIs6B,UAAU,CAACrvG,GAAG,GAAG,CAAP,CAAV,CAAoBiiD,KAApB,IAA8BotD,UAAU,CAACrvG,GAAG,GAAG,CAAP,CAAV,CAAoBiiD,KAApB,KAA8B,YAAhE,EAA+E;MAC3E;MACA,IAAI,KAAKwuB,OAAL,CAAaq5B,YAAb,CAA0B/0B,OAA1B,CAAkC,CAAlC,EAAqC9yB,KAArC,KAA+C,YAAnD,EAAiE;QAC7D,IAAI,KAAKrjD,MAAL,CAAYo0E,SAAZ,KAA0B,MAA9B,EAAsC;UAClC,KAAKvC,OAAL,CAAa1E,UAAb,CAAwB,MAAxB,EAAgC,KAAKntE,MAAL,CAAYo0E,SAA5C;QACH,CAFD,MAGK;UACD;UACA,KAAKvC,OAAL,CAAatgB,UAAb,GAA0B4iB,aAAa,CAAC,KAAKn0E,MAAN,EAAc,KAAK6xE,OAAL,CAAatgB,UAA3B,CAAvC;QACH;;QACD,KAAKvxD,MAAL,CAAYgb,MAAZ,CAAmBkxD,YAAnB,EAAiC,EAAjC;MACH;;MACD,KAAK2F,OAAL,CAAasE,OAAb,CAAqBgH,GAArB;;MACA,IAAI,CAAC6zB,SAAL,EAAgB;QACZ,KAAKvG,eAAL,GAAuB,IAAvB;QACA,KAAK54B,OAAL,CAAaq8B,cAAb;MACH;IACJ;EACJ,CArBD;;EAsBA3D,WAAW,CAAC3wG,SAAZ,CAAsBmyF,aAAtB,GAAsC,UAAU9sF,IAAV,EAAgB;IAClD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC;IACH;;IACD,IAAI,CAAC,KAAKL,OAAV,EAAmB;MACf,KAAKvsC,MAAL,CAAYrmC,IAAZ;IACH,CAFD,MAGK;MACD,KAAKwtF,aAAL,CAAmBxtF,IAAnB;IACH;EACJ,CAVD;;EAWAsrG,WAAW,CAAC3wG,SAAZ,CAAsBoyF,WAAtB,GAAoC,UAAU/sF,IAAV,EAAgB;IAChD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC;IACH;;IACD,KAAKua,aAAL,CAAmBxtF,IAAnB;EACH,CALD;;EAMAsrG,WAAW,CAAC3wG,SAAZ,CAAsB2yF,YAAtB,GAAqC,YAAY;IAC7C,IAAI,KAAKvsF,MAAL,CAAYkwE,YAAZ,KAA6B,aAA7B,IAA8C,KAAKlwE,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAvF,EAA0F;MACtF,KAAKyxF,gBAAL;IACH;EACJ,CAJD;;EAKA+d,WAAW,CAAC3wG,SAAZ,CAAsBsyF,cAAtB,GAAuC,YAAY;IAC/C,IAAI,KAAKlsF,MAAL,CAAYkwE,YAAZ,KAA6B,aAAjC,EAAgD;MAC5C,KAAKlwE,MAAL,CAAYmxE,QAAZ,GAAuB,KAAKU,OAAL,CAAa8+B,kBAAb,EAAvB;IACH;EACJ,CAJD;;EAKApG,WAAW,CAAC3wG,SAAZ,CAAsBwyF,YAAtB,GAAqC,YAAY;IAC7C,IAAI,KAAKpsF,MAAL,CAAYkwE,YAAZ,KAA6B,aAAjC,EAAgD;MAC5C0K,MAAM,CAAC,KAAK56E,MAAN,EAAc,KAAKA,MAAL,CAAY4wE,aAA1B,EAAyC,KAAK5wE,MAAL,CAAYuuE,IAArD,EAA2D,QAA3D,CAAN;IACH;EACJ,CAJD;EAKA;;;EACAg8B,WAAW,CAAC3wG,SAAZ,CAAsByyF,WAAtB,GAAoC,UAAUptF,IAAV,EAAgB;IAChD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC;IACH;;IACD,KAAKua,aAAL,CAAmBxtF,IAAnB;IACA,KAAKe,MAAL,CAAY4xB,aAAZ,CAA0B;MAAEg/C,aAAa,EAAE;IAAjB,CAA1B,EAAiD,IAAjD;EACH,CAND;;EAOA25B,WAAW,CAAC3wG,SAAZ,CAAsB0yF,YAAtB,GAAqC,UAAUrtF,IAAV,EAAgB;IACjD,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC;IACH;;IACD,KAAKiO,YAAL,GAAoB,KAApB;IACA,KAAKowB,gBAAL,CAAsB,KAAtB;IACA,KAAK1+B,OAAL,CAAatgB,UAAb,GAA0B4iB,aAAa,CAAC,KAAKn0E,MAAN,EAAcf,IAAI,CAACyyE,KAAnB,CAAvC;IACA,KAAKy7B,SAAL,GAAiBluG,IAAjB;EACH,CARD;;EASAsrG,WAAW,CAAC3wG,SAAZ,CAAsBkzF,YAAtB,GAAqC,YAAY;IAC7C,IAAI,KAAK9sF,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,IAAkC,KAAKL,OAA3C,EAAoD;MAChD,KAAKA,OAAL,CAAanxE,OAAb,CAAqBqsB,SAArB,CAA+B9B,GAA/B,CAAmC8+C,YAAnC;IACH;EACJ,CAJD;;EAKAwgC,WAAW,CAAC3wG,SAAZ,CAAsBmzF,eAAtB,GAAwC,YAAY;IAChD,IAAI,KAAK/sF,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC,KAAKiO,YAAL,GAAoB,KAApB;;MACA,IAAI,KAAKngF,MAAL,CAAYuuF,mBAAhB,EAAqC;QACjC,KAAK1c,OAAL,CAAao/B,eAAb,CAA6BC,iBAA7B,CAA+C,CAA/C,EAAkD,KAAKr/B,OAAL,CAAas/B,OAAb,GAAuBp2G,MAAzE;MACH,CAFD,MAGK;QACD,KAAK82E,OAAL,CAAau/B,SAAb,CAAuB,KAAKv/B,OAAL,CAAas/B,OAAb,GAAuBp2G,MAAvB,GAAgC,CAAvD;MACH;;MACD,KAAKolF,YAAL,GAAoB,IAApB;MACA,KAAKqqB,WAAL,GAAmB,IAAnB;IACH;EACJ,CAZD;;EAaAD,WAAW,CAAC3wG,SAAZ,CAAsByzF,cAAtB,GAAuC,YAAY;IAC/C,IAAI,KAAKrtF,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC,KAAKm/B,eAAL;MACA,KAAK7G,WAAL,GAAmB,IAAnB;IACH;EACJ,CALD;EAMA;;;EACAD,WAAW,CAAC3wG,SAAZ,CAAsBypG,kBAAtB,GAA2C,YAAY;IACnD/1E,iEAAW,CAAC,CAAC,KAAK5sB,OAAN,CAAD,EAAiB0pE,YAAjB,CAAX;;IACA,IAAI,KAAKpqE,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,GAAmC,CAAvC,EAA0C;MACtC6xB,8DAAQ,CAAC,CAAC,KAAKlsB,OAAN,CAAD,EAAiB0pE,YAAjB,CAAR;IACH;EACJ,CALD;;EAMAmgC,WAAW,CAAC3wG,SAAZ,CAAsB6zF,eAAtB,GAAwC,YAAY;IAChD,IAAI,KAAKztF,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC;IACH;;IACD,KAAKqX,YAAL;EACH,CALD;;EAMAghB,WAAW,CAAC3wG,SAAZ,CAAsB2zF,eAAtB,GAAwC,YAAY;IAChD,KAAKv8D,UAAL,GAAkB,KAAlB;EACH,CAFD;;EAGAu5E,WAAW,CAAC3wG,SAAZ,CAAsB4zF,cAAtB,GAAuC,YAAY;IAC/C,KAAKx8D,UAAL,GAAkB,IAAlB;EACH,CAFD;;EAGAu5E,WAAW,CAAC3wG,SAAZ,CAAsB8zF,qBAAtB,GAA8C,YAAY;IACtD,IAAI,KAAK1tF,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC;IACH;;IACD,KAAKlyE,MAAL,CAAYmxE,QAAZ,GAAuB,KAAKU,OAAL,CAAa8+B,kBAAb,EAAvB;EACH,CALD;;EAMApG,WAAW,CAAC3wG,SAAZ,CAAsBoB,gBAAtB,GAAyC,YAAY;IACjD,KAAKgF,MAAL,CAAYwa,EAAZ,CAAekwD,WAAf,EAA4B,KAAKqhB,aAAjC,EAAgD,IAAhD;IACA,KAAK/rF,MAAL,CAAYwa,EAAZ,CAAe4B,OAAf,EAAwB,KAAKA,OAA7B,EAAsC,IAAtC;IACA,KAAKpc,MAAL,CAAYwa,EAAZ,CAAeyxD,YAAf,EAA6B,KAAKof,cAAlC,EAAkD,IAAlD;IACA,KAAKrrF,MAAL,CAAYwa,EAAZ,CAAe4wD,WAAf,EAA4B,KAAKqhB,aAAjC,EAAgD,IAAhD;IACA,KAAKzsF,MAAL,CAAYwa,EAAZ,CAAemwD,SAAf,EAA0B,KAAKqhB,WAA/B,EAA4C,IAA5C;IACA,KAAKhsF,MAAL,CAAYwa,EAAZ,CAAegzD,QAAf,EAAyB,KAAKod,UAA9B,EAA0C,IAA1C;IACA,KAAK5qF,MAAL,CAAYwa,EAAZ,CAAe4xD,WAAf,EAA4B,KAAKgiB,aAAjC,EAAgD,IAAhD;IACA,KAAKpuF,MAAL,CAAYwa,EAAZ,CAAeywD,UAAf,EAA2B,KAAKqhB,YAAhC,EAA8C,IAA9C;IACA,KAAKtsF,MAAL,CAAYwa,EAAZ,CAAesqC,MAAf,EAAuB,KAAKisD,aAA5B,EAA2C,IAA3C;IACA,KAAK/wG,MAAL,CAAYwa,EAAZ,CAAeszD,UAAf,EAA2B,KAAK8f,YAAhC,EAA8C,IAA9C;IACA,KAAK5tF,MAAL,CAAYwa,EAAZ,CAAekxD,aAAf,EAA8B,KAAKmiB,eAAnC,EAAoD,IAApD;IACA,KAAK7tF,MAAL,CAAYwa,EAAZ,CAAegwD,YAAf,EAA6B,KAAKj4C,iBAAlC,EAAqD,IAArD;IACA,KAAKvyB,MAAL,CAAYwa,EAAZ,CAAeuwD,UAAf,EAA2B,KAAKqhB,YAAhC,EAA8C,IAA9C;IACA,KAAKpsF,MAAL,CAAYwa,EAAZ,CAAewwD,SAAf,EAA0B,KAAKqhB,WAA/B,EAA4C,IAA5C;IACA,KAAKrsF,MAAL,CAAYwa,EAAZ,CAAemyD,YAAf,EAA6B,KAAKuf,cAAlC,EAAkD,IAAlD;IACA,KAAKlsF,MAAL,CAAYwa,EAAZ,CAAe8xD,UAAf,EAA2B,KAAKigB,YAAhC,EAA8C,IAA9C;IACA,KAAKvsF,MAAL,CAAYwa,EAAZ,CAAegyD,SAAf,EAA0B,KAAKigB,aAA/B,EAA8C,IAA9C;IACA,KAAKzsF,MAAL,CAAYwa,EAAZ,CAAemxD,QAAf,EAAyB,KAAKihB,UAA9B,EAA0C,IAA1C;IACA,KAAK5sF,MAAL,CAAYwa,EAAZ,CAAe2yD,UAAf,EAA2B,KAAKgjC,YAAhC,EAA8C,IAA9C;IACA,KAAKnwG,MAAL,CAAYwa,EAAZ,CAAeoxD,OAAf,EAAwB,KAAK6gB,aAA7B,EAA4C,IAA5C;IACA,KAAKzsF,MAAL,CAAYwa,EAAZ,CAAeowD,SAAf,EAA0B,KAAK6hB,aAA/B,EAA8C,IAA9C;IACA,KAAKzsF,MAAL,CAAYwa,EAAZ,CAAeqyD,SAAf,EAA0B,KAAKykC,WAA/B,EAA4C,IAA5C;IACA,KAAKtxG,MAAL,CAAYwa,EAAZ,CAAewyD,UAAf,EAA2B,KAAK8f,YAAhC,EAA8C,IAA9C;IACA,KAAK9sF,MAAL,CAAYwa,EAAZ,CAAesxD,aAAf,EAA8B,KAAKihB,eAAnC,EAAoD,IAApD;IACA,KAAK/sF,MAAL,CAAYwa,EAAZ,CAAeuxD,YAAf,EAA6B,KAAKshB,cAAlC,EAAkD,IAAlD;IACA,KAAKrtF,MAAL,CAAYwa,EAAZ,CAAe4yD,UAAf,EAA2B,KAAKugB,YAAhC,EAA8C,IAA9C;IACA,KAAK3tF,MAAL,CAAYwa,EAAZ,CAAeqxD,gBAAf,EAAiC,KAAKw3B,kBAAtC,EAA0D,IAA1D;IACA,KAAKrjG,MAAL,CAAYwa,EAAZ,CAAe6wD,aAAf,EAA8B,KAAKkiB,eAAnC,EAAoD,IAApD;IACA,KAAKvtF,MAAL,CAAYwa,EAAZ,CAAe+wD,YAAf,EAA6B,KAAKiiB,cAAlC,EAAkD,IAAlD;IACA,KAAKxtF,MAAL,CAAYwa,EAAZ,CAAesyD,QAAf,EAAyB,KAAKohB,UAA9B,EAA0C,IAA1C;IACA,KAAKluF,MAAL,CAAYwa,EAAZ,CAAeoyD,WAAf,EAA4B,KAAKuhB,aAAjC,EAAgD,IAAhD;IACA,KAAKnuF,MAAL,CAAYwa,EAAZ,CAAe6xD,YAAf,EAA6B,KAAKyhB,cAAlC,EAAkD,IAAlD;IACA,KAAK9tF,MAAL,CAAYwa,EAAZ,CAAe0wD,SAAf,EAA0B,KAAKqmC,sBAA/B,EAAuD,IAAvD;IACA,KAAKvxG,MAAL,CAAYwa,EAAZ,CAAe2wD,cAAf,EAA+B,KAAKmlC,eAApC,EAAqD,IAArD;IACA,KAAKtwG,MAAL,CAAYwa,EAAZ,CAAeixD,aAAf,EAA8B,KAAKgiB,eAAnC,EAAoD,IAApD;IACA,KAAKztF,MAAL,CAAYwa,EAAZ,CAAekzD,QAAf,EAAyB,KAAK2gB,UAA9B,EAA0C,IAA1C;IACA,KAAKruF,MAAL,CAAYwa,EAAZ,CAAeqzD,mBAAf,EAAoC,KAAK6f,qBAAzC,EAAgE,IAAhE;EACH,CAtCD;;EAuCA6c,WAAW,CAAC3wG,SAAZ,CAAsBsB,mBAAtB,GAA4C,YAAY;IACpD,KAAK8E,MAAL,CAAY6a,GAAZ,CAAgB6vD,WAAhB,EAA6B,KAAKqhB,aAAlC;IACA,KAAK/rF,MAAL,CAAY6a,GAAZ,CAAgBuB,OAAhB,EAAyB,KAAKA,OAA9B;IACA,KAAKpc,MAAL,CAAY6a,GAAZ,CAAgBoxD,YAAhB,EAA8B,KAAKof,cAAnC;IACA,KAAKrrF,MAAL,CAAY6a,GAAZ,CAAgBuwD,WAAhB,EAA6B,KAAKqhB,aAAlC;IACA,KAAKzsF,MAAL,CAAY6a,GAAZ,CAAgBgyD,SAAhB,EAA2B,KAAKykC,WAAhC;IACA,KAAKtxG,MAAL,CAAY6a,GAAZ,CAAgB8vD,SAAhB,EAA2B,KAAKqhB,WAAhC;IACA,KAAKhsF,MAAL,CAAY6a,GAAZ,CAAgBowD,UAAhB,EAA4B,KAAKqhB,YAAjC;IACA,KAAKtsF,MAAL,CAAY6a,GAAZ,CAAgBiqC,MAAhB,EAAwB,KAAKisD,aAA7B;IACA,KAAK/wG,MAAL,CAAY6a,GAAZ,CAAgBizD,UAAhB,EAA4B,KAAK8f,YAAjC;IACA,KAAK5tF,MAAL,CAAY6a,GAAZ,CAAgB6wD,aAAhB,EAA+B,KAAKmiB,eAApC;IACA,KAAK7tF,MAAL,CAAY6a,GAAZ,CAAgB2vD,YAAhB,EAA8B,KAAKj4C,iBAAnC;IACA,KAAKvyB,MAAL,CAAY6a,GAAZ,CAAgByxD,UAAhB,EAA4B,KAAKigB,YAAjC;IACA,KAAKvsF,MAAL,CAAY6a,GAAZ,CAAgB2xD,SAAhB,EAA2B,KAAKigB,aAAhC;IACA,KAAKzsF,MAAL,CAAY6a,GAAZ,CAAgB+vD,SAAhB,EAA2B,KAAK6hB,aAAhC;IACA,KAAKzsF,MAAL,CAAY6a,GAAZ,CAAgB8wD,QAAhB,EAA0B,KAAKihB,UAA/B;IACA,KAAK5sF,MAAL,CAAY6a,GAAZ,CAAgBsyD,UAAhB,EAA4B,KAAKgjC,YAAjC;IACA,KAAKnwG,MAAL,CAAY6a,GAAZ,CAAgB+wD,OAAhB,EAAyB,KAAK6gB,aAA9B;IACA,KAAKzsF,MAAL,CAAY6a,GAAZ,CAAgBmyD,UAAhB,EAA4B,KAAK8f,YAAjC;IACA,KAAK9sF,MAAL,CAAY6a,GAAZ,CAAgBixD,aAAhB,EAA+B,KAAKihB,eAApC;IACA,KAAK/sF,MAAL,CAAY6a,GAAZ,CAAgBkxD,YAAhB,EAA8B,KAAKshB,cAAnC;IACA,KAAKrtF,MAAL,CAAY6a,GAAZ,CAAgBkwD,UAAhB,EAA4B,KAAKqhB,YAAjC;IACA,KAAKpsF,MAAL,CAAY6a,GAAZ,CAAgBmwD,SAAhB,EAA2B,KAAKqhB,WAAhC;IACA,KAAKrsF,MAAL,CAAY6a,GAAZ,CAAgBuyD,UAAhB,EAA4B,KAAKugB,YAAjC;IACA,KAAK3tF,MAAL,CAAY6a,GAAZ,CAAgBgxD,gBAAhB,EAAkC,KAAKw3B,kBAAvC;IACA,KAAKrjG,MAAL,CAAY6a,GAAZ,CAAgBwwD,aAAhB,EAA+B,KAAKkiB,eAApC;IACA,KAAKvtF,MAAL,CAAY6a,GAAZ,CAAgB0wD,YAAhB,EAA8B,KAAKiiB,cAAnC;IACA,KAAKxtF,MAAL,CAAY6a,GAAZ,CAAgBiyD,QAAhB,EAA0B,KAAKohB,UAA/B;IACA,KAAKluF,MAAL,CAAY6a,GAAZ,CAAgB+xD,WAAhB,EAA6B,KAAKuhB,aAAlC;IACA,KAAKnuF,MAAL,CAAY6a,GAAZ,CAAgB2yD,QAAhB,EAA0B,KAAKod,UAA/B;IACA,KAAK5qF,MAAL,CAAY6a,GAAZ,CAAgB8xD,YAAhB,EAA8B,KAAKuf,cAAnC;IACA,KAAKlsF,MAAL,CAAY6a,GAAZ,CAAgBuxD,WAAhB,EAA6B,KAAKgiB,aAAlC;IACA,KAAKpuF,MAAL,CAAY6a,GAAZ,CAAgBwxD,YAAhB,EAA8B,KAAKyhB,cAAnC;IACA,KAAK9tF,MAAL,CAAY6a,GAAZ,CAAgBqwD,SAAhB,EAA2B,KAAKqmC,sBAAhC;IACA,KAAKvxG,MAAL,CAAY6a,GAAZ,CAAgBswD,cAAhB,EAAgC,KAAKmlC,eAArC;IACA,KAAKtwG,MAAL,CAAY6a,GAAZ,CAAgB4wD,aAAhB,EAA+B,KAAKgiB,eAApC;IACA,KAAKztF,MAAL,CAAY6a,GAAZ,CAAgB6yD,QAAhB,EAA0B,KAAK2gB,UAA/B;IACA,KAAKruF,MAAL,CAAY6a,GAAZ,CAAgBgzD,mBAAhB,EAAqC,KAAK6f,qBAA1C;EACH,CAtCD;;EAuCA6c,WAAW,CAAC3wG,SAAZ,CAAsBi0F,eAAtB,GAAwC,YAAY;IAAE,KAAK2c,WAAL,GAAmB,IAAnB;EAA0B,CAAhF,CA14BmD,CA24BnD;;;EACAD,WAAW,CAAC3wG,SAAZ,CAAsBk0F,cAAtB,GAAuC,UAAU7uF,IAAV,EAAgB;IACnD,IAAI,KAAKe,MAAL,CAAYkwE,YAAZ,KAA6B,KAAKp9C,aAAL,EAAjC,EAAuD;MACnD,KAAK9yB,MAAL,CAAYmxE,QAAZ,GAAuB,CAAC,KAAKU,OAAL,CAAa2/B,UAAb,CAAwBvyG,IAAI,CAAC+2B,MAA7B,EAAqC86E,OAAtC,CAAvB;IACH;EACJ,CAJD;;EAKAvG,WAAW,CAAC3wG,SAAZ,CAAsB03G,WAAtB,GAAoC,YAAY;IAC5C,IAAI,KAAKtxG,MAAL,CAAYkwE,YAAZ,KAA6B,KAAKp9C,aAAL,EAAjC,EAAuD;MACnD,KAAK9yB,MAAL,CAAYmxE,QAAZ,GAAwB,KAAKnxE,MAAL,CAAY42E,UAAZ,KAA2B,EAA5B,GAAkC,KAAK/E,OAAL,CAAa8+B,kBAAb,EAAlC,GACnB,CAACv/B,aAAa,CAAC,KAAKpxE,MAAN,CAAd,CADJ;IAEH;EACJ,CALD;;EAMAuqG,WAAW,CAAC3wG,SAAZ,CAAsBw0F,aAAtB,GAAsC,YAAY;IAC9C,IAAI,KAAKpuF,MAAL,CAAYkwE,YAAZ,KAA6B,KAAKp9C,aAAL,EAAjC,EAAuD;MACnD,IAAI,KAAK9yB,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAzC,EAA4C;QACxC,KAAKiF,MAAL,CAAYmxE,QAAZ,GAAuB,KAAKU,OAAL,CAAa8+B,kBAAb,EAAvB;MACH,CAFD,MAGK;QACD,KAAK3wG,MAAL,CAAYmxE,QAAZ,GAAuB,CAACh2E,8DAAQ,CAAC,KAAK6E,MAAL,CAAY0uE,MAAZ,CAAmB,KAAK1uE,MAAL,CAAY0uE,MAAZ,CAAmB3zE,MAAnB,GAA4B,CAA/C,CAAD,EAAoD,KAAKiF,MAAL,CAAYuvE,QAAhE,CAAT,CAAvB;MACH;IACJ;EACJ,CATD;;EAUAg7B,WAAW,CAAC3wG,SAAZ,CAAsB+zE,UAAtB,GAAmC,UAAU1uE,IAAV,EAAgB;IAC/C,IAAIutC,UAAU,GAAGvtC,IAAI,CAACs0C,MAAL,CAAYvd,MAA7B;IACA,IAAIy0D,MAAM,GAAGj+C,UAAU,CAAC7c,OAAX,CAAmB,UAAnB,CAAb;;IACA,IAAI,CAAC86D,MAAL,EAAa;MACT,OAAO,IAAP;IACH;;IACD,IAAIrvE,IAAJ;;IACA,IAAIqvE,MAAM,CAACl3D,sBAAP,CAA8B,WAA9B,EAA2C,CAA3C,CAAJ,EAAmD;MAC/CnY,IAAI,GAAGqvE,MAAM,CAACl3D,sBAAP,CAA8B,WAA9B,EAA2C,CAA3C,EAA8C2gE,SAArD;IACH,CAFD,MAGK,IAAIzJ,MAAM,CAACl3D,sBAAP,CAA8B,0BAA9B,EAA0D,CAA1D,EAA6DiqD,kBAAjE,EAAqF;MACtFpiE,IAAI,GAAGqvE,MAAM,CAACl3D,sBAAP,CAA8B,0BAA9B,EAA0D,CAA1D,EAA6DiqD,kBAA7D,CAAgF0W,SAAvF;IACH;;IACD,IAAIzJ,MAAM,IAAI,CAACA,MAAM,CAAC1nF,aAAP,CAAqB,WAArB,CAAf,EAAkD;MAC9C,KAAKksG,aAAL,CAAmB,CAAC7zF,IAAD,CAAnB;IACH;;IACDi1D,SAAS,CAAC,KAAKrwE,MAAN,EAAcyqF,MAAd,CAAT;IACA,KAAKzqF,MAAL,CAAYgwE,cAAZ,GAA6B,EAA7B;IACA,KAAKhwE,MAAL,CAAY0vC,QAAZ,GAAuB,EAAvB,CAlB+C,CAmB/C;;IACA,KAAK1vC,MAAL,CAAY0vC,QAAZ,GAAuB,KAAKmiC,OAAL,CAAa8+B,kBAAb,EAAvB;IACA,IAAIc,OAAJ;;IACA,IAAI,KAAKzxG,MAAL,CAAY0vC,QAAZ,CAAqB30C,MAArB,KAAgC,CAAhC,IAAqC0vF,MAAzC,EAAiD;MAC7CgnB,OAAO,GAAG,KAAK5/B,OAAL,CAAa2/B,UAAb,CAAwB/mB,MAAxB,CAAV;IACH;;IACD,IAAIgnB,OAAJ,EAAa;MACT,KAAKzxG,MAAL,CAAY0vC,QAAZ,CAAqBlwC,IAArB,CAA0BiyG,OAAO,CAACX,OAAlC;IACH;;IACD,KAAK9wG,MAAL,CAAYo3E,QAAZ,GAAuB,KAAKp3E,MAAL,CAAYuuE,IAAnC;IACA,KAAKvuE,MAAL,CAAYgwE,cAAZ,GAA6B,KAAK6B,OAAL,CAAa6/B,eAAb,EAA7B;IACA74B,wBAAwB,CAAC,KAAK74E,MAAN,CAAxB;IACA,OAAO,KAAKA,MAAL,CAAYm5E,kBAAnB;EACH,CAhCD;EAiCA;;;EACAoxB,WAAW,CAAC3wG,SAAZ,CAAsB02G,eAAtB,GAAwC,YAAY;IAChD,IAAI,KAAKtwG,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,IAAkC,CAAC,KAAKlyE,MAAL,CAAYg2E,QAA/C,IAA2D,CAAC75E,uEAAiB,CAAC,KAAK01E,OAAN,CAAjF,EAAiG;MAC7F,IAAIm8B,UAAU,GAAG,KAAKn8B,OAAL,CAAaw9B,gBAAb,GAAgCtsG,aAAhC,CAA8C,kBAA9C,CAAjB;MACA,IAAI4uG,kBAAkB,GAAG3D,UAAU,CAAChK,UAAX,CAAsBj0E,UAAtB,CAAiC,CAAjC,CAAzB;MACA,IAAI6hF,mBAAmB,GAAG,KAAK//B,OAAL,CAAa69B,UAAb,GAA0B3sG,aAA1B,CAAwC,qBAAxC,EAA+Dq/C,QAA/D,CAAwE,CAAxE,CAA1B;MACA,IAAIyvD,kBAAkB,GAAG,KAAKhgC,OAAL,CAAao5B,UAAb,EAAzB;;MACA,KAAK,IAAIvvG,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGm2G,kBAAkB,CAAC92G,MAAvC,EAA+CW,CAAC,EAAhD,EAAoD;QAChD,IAAK,CAAC,KAAKovG,WAAN,IAAqB+G,kBAAkB,CAACn2G,CAAD,CAAlB,CAAsB2nD,KAAtB,KAAgC,MAAtD,IAAiEwuD,kBAAkB,CAACn2G,CAAD,CAAlB,CAAsB2nD,KAAtB,KAAgC,YAArG,EAAmH;UAC/G,IAAI,KAAKrjD,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAhC,CAA0C/vE,OAA1C,CAAkDpF,KAAlD,KAA4D,EAA5D,IAAkE,CAAC,KAAK0E,MAAL,CAAY0wE,UAAnF,EAA+F;YAC3F,IAAI,KAAKhwE,OAAL,CAAa2yC,WAAb,IAA4B,GAAhC,EAAqC;cACjCs+D,kBAAkB,CAACvvD,QAAnB,CAA4B1mD,CAA5B,EAA+B+wB,YAA/B,CAA4C,OAA5C,EAAqD,cAArD;cACAmlF,mBAAmB,CAACxvD,QAApB,CAA6B1mD,CAA7B,EAAgC+wB,YAAhC,CAA6C,OAA7C,EAAsD,cAAtD;YACH,CAHD,MAIK,IAAI,KAAK/rB,OAAL,CAAa2yC,WAAb,GAA2B,GAA/B,EAAoC;cACrCs+D,kBAAkB,CAACvvD,QAAnB,CAA4B1mD,CAA5B,EAA+B+wB,YAA/B,CAA4C,OAA5C,EAAqD,aAArD;cACAmlF,mBAAmB,CAACxvD,QAApB,CAA6B1mD,CAA7B,EAAgC+wB,YAAhC,CAA6C,OAA7C,EAAsD,aAAtD;YACH;UACJ,CATD,MAUK;YACD,IAAI,KAAK/rB,OAAL,CAAa2yC,WAAb,IAA4B,GAAhC,EAAqC;cACjC,IAAIw+D,kBAAkB,CAACn2G,CAAD,CAAlB,CAAsB2nD,KAAtB,KAAgC,MAApC,EAA4C;gBACxCsuD,kBAAkB,CAACvvD,QAAnB,CAA4B1mD,CAA5B,EAA+B+wB,YAA/B,CAA4C,OAA5C,EAAqD,cAArD;gBACAmlF,mBAAmB,CAACxvD,QAApB,CAA6B1mD,CAA7B,EAAgC+wB,YAAhC,CAA6C,OAA7C,EAAsD,cAAtD;cACH,CAHD,MAIK;gBACDklF,kBAAkB,CAACvvD,QAAnB,CAA4B1mD,CAA5B,EAA+B+wB,YAA/B,CAA4C,OAA5C,EAAqD,cAArD;gBACAmlF,mBAAmB,CAACxvD,QAApB,CAA6B1mD,CAA7B,EAAgC+wB,YAAhC,CAA6C,OAA7C,EAAsD,cAAtD;cACH;YACJ,CATD,MAUK,IAAI,KAAK/rB,OAAL,CAAa2yC,WAAb,GAA2B,GAA/B,EAAoC;cACrCs+D,kBAAkB,CAACvvD,QAAnB,CAA4B1mD,CAA5B,EAA+B+wB,YAA/B,CAA4C,OAA5C,EAAqD,aAArD;cACAmlF,mBAAmB,CAACxvD,QAApB,CAA6B1mD,CAA7B,EAAgC+wB,YAAhC,CAA6C,OAA7C,EAAsD,aAAtD;YACH;UACJ;QACJ;MACJ;IACJ;EACJ,CArCD;;EAsCA89E,WAAW,CAAC3wG,SAAZ,CAAsB23G,sBAAtB,GAA+C,YAAY;IACvD,KAAKjB,eAAL;;IACA,IAAI,KAAKtwG,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,IAAkC,CAAC,KAAKlyE,MAAL,CAAYg2E,QAA/C,IAA2D,CAAC75E,uEAAiB,CAAC,KAAK01E,OAAN,CAAjF,EAAiG;MAC7F,KAAK0X,YAAL;IACH;EACJ,CALD;;EAMAghB,WAAW,CAAC3wG,SAAZ,CAAsBkwF,aAAtB,GAAsC,YAAY;IAC9C,IAAI9qF,KAAK,GAAG,IAAZ;;IACA,IAAI,CAAC,KAAKgB,MAAL,CAAYg2E,QAAb,IAAyB,KAAKnE,OAAlC,EAA2C;MACvC,IAAI,KAAK7xE,MAAL,CAAY65E,gBAAhB,EAAkC;QAC9B,IAAI,KAAKD,OAAT,EAAkB;UACd,KAAKA,OAAL,CAAax9D,OAAb;QACH;;QACD,KAAKw9D,OAAL,GAAe,IAAIrxC,2DAAJ,CAAc,KAAKspC,OAAL,CAAanxE,OAA3B,EAAoC;UAC/C4yC,QAAQ,EAAE,KAAKtzC,MAAL,CAAYwqF,kBADyB;UAE/Cx9C,QAAQ,EAAE,CAFqC;UAG/Ca,cAAc,EAAE,IAH+B;UAI/CF,QAAQ,EAAE,KAAK3tC,MAAL,CAAYU,OAJyB;UAK/C8rC,UAAU,EAAE,MAAMi6B,GAL6B;UAM/Cp3B,IAAI,EAAE2qC,eAAe,CAACngF,IAAhB,CAAqB,IAArB,EAA2B,KAAKmG,MAAhC,CANyC;UAO/CstC,SAAS,EAAE,UAAUruC,IAAV,EAAgB;YACvB06E,gBAAgB,CAAC36E,KAAK,CAACgB,MAAP,EAAef,IAAf,EAAqBD,KAAK,CAAC46E,OAA3B,CAAhB;UACH,CAT8C;UAU/C3nC,QAAQ,EAAEmnC,eAAe,CAACv/E,IAAhB,CAAqB,IAArB,EAA2B,KAAKmG,MAAhC,CAVqC;UAW/CmwC,gBAAgB,EAAE,IAX6B;UAY/CP,MAAM,EAAE,KAAK+9B,UAAL,CAAgB9zE,IAAhB,CAAqB,IAArB;QAZuC,CAApC,CAAf;MAcH,CAlBD,MAmBK,IAAI,CAAC,KAAKmG,MAAL,CAAY65E,gBAAb,IAAiC,KAAKD,OAA1C,EAAmD;QACpD,KAAKA,OAAL,CAAax9D,OAAb;MACH;IACJ;EACJ,CA1BD;;EA2BAmuF,WAAW,CAAC3wG,SAAZ,CAAsBgxF,UAAtB,GAAmC,UAAU3rF,IAAV,EAAgB;IAC/C,IAAI,KAAKe,MAAL,CAAYsyE,YAAZ,KAA6B,KAAKx/C,aAAL,EAAjC,EAAuD;MACnD;MACA;MACA,IAAIg4D,OAAO,GAAG3vF,8DAAQ,CAAC,KAAK6E,MAAL,CAAY0uE,MAAZ,CAAmB,KAAK1uE,MAAL,CAAY0uE,MAAZ,CAAmB3zE,MAAnB,GAA4B,CAA/C,CAAD,EAAoD,KAAKiF,MAAL,CAAYuvE,QAAhE,CAAtB;;MACA,IAAI,CAACtwE,IAAI,CAAC+2B,MAAL,CAAYrG,OAAZ,CAAoB,IAApB,CAAL,EAAgC;QAC5B,KAAK3vB,MAAL,CAAY0tE,QAAZ,GAAuB,KAAK1tE,MAAL,CAAYuuE,IAAnC;QACA,KAAKvuE,MAAL,CAAYy3E,QAAZ,GAAuBqT,OAAvB;MACH,CAHD,MAIK;QACD;QACA,IAAI3gE,IAAI,GAAG,IAAX,CAFC,CAGD;;QACAA,IAAI,GAAG,KAAK0nD,OAAL,CAAa2/B,UAAb,CAAwBvyG,IAAI,CAAC+2B,MAA7B,EAAqC86E,OAA5C;QACA,KAAK9wG,MAAL,CAAY0tE,QAAZ,GAAuBvjD,IAAI,CAACogD,MAAL,GAAc,KAAKvqE,MAAL,CAAYuuE,IAA1B,GAAiCyF,WAAW,CAAC,KAAKh0E,MAAN,EAAcmqB,IAAd,EAAoB,KAAKnqB,MAAL,CAAYuuE,IAAhC,CAAnE;QACA,KAAKvuE,MAAL,CAAYy3E,QAAZ,GAAuBttD,IAAI,CAACogD,MAAL,GAAcugB,OAAd,GAAwB3gE,IAA/C;MACH;IACJ;EACJ,CAlBD;;EAmBAogF,WAAW,CAAC3wG,SAAZ,CAAsBu0F,aAAtB,GAAsC,YAAY;IAC9C,IAAI,KAAKnuF,MAAL,CAAYkwE,YAAZ,KAA6B,KAAKp9C,aAAL,EAAjC,EAAuD;MACnD,KAAK9yB,MAAL,CAAYuwE,aAAZ,GAA4B,KAAKsB,OAAL,CAAa8+B,kBAAb,EAA5B;MACA,KAAK3wG,MAAL,CAAYgwE,cAAZ,GAA6B,KAAK6B,OAAL,CAAa6/B,eAAb,EAA7B;IACH;EACJ,CALD;;EAMAnH,WAAW,CAAC3wG,SAAZ,CAAsBs0F,UAAtB,GAAmC,UAAUjvF,IAAV,EAAgB;IAC/C,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC,KAAKuT,gBAAL,GAAwB,IAAxB;;MACA,IAAI,KAAKzlF,MAAL,CAAYuuE,IAAZ,KAAqB,KAAKvuE,MAAL,CAAYu8E,eAAjC,IAAoD,KAAKv8E,MAAL,CAAYuuE,IAAZ,KAAqBoJ,gBAAgB,CAAC,KAAK33E,MAAN,EAAcf,IAAd,CAA7F,EAAkH;QAC9G,KAAKwtF,aAAL,CAAmBxtF,IAAnB;MACH;IACJ;EACJ,CAPD;;EAQAsrG,WAAW,CAAC3wG,SAAZ,CAAsBy0F,UAAtB,GAAmC,UAAUpvF,IAAV,EAAgB;IAC/C,IAAI,KAAKe,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC,KAAKuT,gBAAL,GAAwB,IAAxB;MACA,KAAKgH,aAAL,CAAmBxtF,IAAnB;IACH;EACJ,CALD;EAMA;AACJ;AACA;AACA;AACA;AACA;;;EACIsrG,WAAW,CAAC3wG,SAAZ,CAAsBk5B,aAAtB,GAAsC,YAAY;IAC9C,OAAO,aAAP;EACH,CAFD;;EAGAy3E,WAAW,CAAC3wG,SAAZ,CAAsBwiB,OAAtB,GAAgC,YAAY;IACxC,IAAI,KAAKpc,MAAL,CAAY6xB,WAAhB,EAA6B;MACzB;IACH;;IACD,KAAK32B,mBAAL;;IACA,IAAI,KAAK22E,OAAT,EAAkB;MACd,IAAI,KAAK7xE,MAAL,CAAYgtG,OAAhB,EAAyB;QACrB,KAAKn7B,OAAL,CAAah3D,GAAb,CAAiB,qBAAjB,EAAwC,KAAKqyF,mBAA7C;MACH;;MACD,KAAK3kB,YAAL;MACA,KAAK1W,OAAL,CAAaz1D,OAAb;IACH;EACJ,CAZD;;EAaAmuF,WAAW,CAAC3wG,SAAZ,CAAsB88D,UAAtB,GAAmC,UAAUhV,IAAV,EAAgB;IAC/C,IAAIyuC,MAAM,GAAGnhE,4DAAM,CAAC,MAAMi4C,MAAP,EAAevlB,IAAf,CAAnB;IACA,KAAK1hD,MAAL,CAAYuqE,MAAZ,GAAqBpuE,uEAAiB,CAACg0F,MAAD,CAAjB,GAA4B,IAA5B,GAAmC,KAAxD;EACH,CAHD;EAIA;;;EACAoa,WAAW,CAAC3wG,SAAZ,CAAsByxG,WAAtB,GAAoC,UAAUv1E,MAAV,EAAkB72B,IAAlB,EAAwB;IACxD,IAAIilB,SAAS,GAAG;MACZ4R,MAAM,EAAEA,MADI;MACIg+C,WAAW,EAAE70E,IAAI,CAACnE,IADtB;MAC4BqlF,YAAY,EAAE,KAAKqqB,WAD/C;MAC4DrmF,MAAM,EAAE,KADpE;MAC2E6R,MAAM,EAAE/2B,IAAI,CAAC+2B;IADxF,CAAhB;IAGA,KAAKh2B,MAAL,CAAY+rB,OAAZ,CAAoB,eAApB,EAAqC7H,SAArC;IACAjlB,IAAI,CAACklB,MAAL,GAAcD,SAAS,CAACC,MAAxB;EACH,CAND;EAOA;;;EACAomF,WAAW,CAAC3wG,SAAZ,CAAsB6kG,UAAtB,GAAmC,UAAUx/F,IAAV,EAAgB;IAC/C,KAAKe,MAAL,CAAYkwE,YAAZ,GAA2B,aAA3B;;IACA,IAAI,CAAC,KAAKlwE,MAAL,CAAY+wE,cAAb,IAA+B,KAAK/wE,MAAL,CAAY0wE,UAA/C,EAA2D;MACvD,KAAKohC,eAAL;IACH;;IACD,KAAK9xG,MAAL,CAAYgb,MAAZ,CAAmB6wD,gBAAnB,EAAqC,EAArC;;IACA,IAAI,KAAKgG,OAAL,CAAai9B,qBAAb,GAAqC/zG,MAArC,KAAgD,CAApD,EAAuD;MACnD,KAAK2vG,cAAL,GAAsB,KAAK74B,OAAL,CAAao+B,gBAAnC;IACH;;IACD,KAAKp+B,OAAL,CAAanxE,OAAb,CAAqB+rB,YAArB,CAAkC,UAAlC,EAA8C,IAA9C;IACA,KAAKujE,aAAL,CAAmB,QAAnB,EAA6B/wF,IAA7B;IACA,IAAIyiD,IAAI,GAAG,KAAKmwB,OAAL,CAAakgC,aAAb,CAA2B,KAAKlgC,OAAL,CAAao+B,gBAAxC,CAAX;IACA,KAAKv5C,UAAL,CAAgBhV,IAAhB;;IACA,IAAI,CAACvlD,uEAAiB,CAACulD,IAAD,CAAlB,IAA4B,CAACvlD,uEAAiB,CAACulD,IAAI,CAAC3+C,aAAL,CAAmB,gBAAnB,CAAD,CAAlD,EAA0F;MACtF,IAAI,KAAK8uE,OAAL,CAAai9B,qBAAb,GAAqC/zG,MAArC,KAAgD,CAApD,EAAuD;QACnD,IAAIsqG,aAAa,GAAG,KAAKxzB,OAAL,CAAai9B,qBAAb,GAAqC,KAAKj9B,OAAL,CAAai9B,qBAAb,GAAqC/zG,MAArC,GAA8C,CAAnF,CAApB;QACA,IAAIkyF,QAAQ,GAAG,KAAKpb,OAAL,CAAakgC,aAAb,CAA2B1M,aAA3B,CAAf;QACApY,QAAQ,CAAClqF,aAAT,CAAuB,gBAAvB,EAAyC0pB,YAAzC,CAAsD,UAAtD,EAAkE,IAAlE;MACH;;MACDi1B,IAAI,CAAC3+C,aAAL,CAAmB,0BAAnB,EAA+Ck3B,eAA/C,CAA+D,UAA/D;IACH;;IACD,IAAI,CAAC99B,uEAAiB,CAAC,KAAK01E,OAAN,CAAlB,IAAoC,CAAC11E,uEAAiB,CAAC,KAAK01E,OAAL,CAAanxE,OAAb,CAAqBqC,aAArB,CAAmC,mBAAnC,CAAD,CAA1D,EAAqH;MACjH,KAAK8uE,OAAL,CAAanxE,OAAb,CAAqBqC,aAArB,CAAmC,mBAAnC,EAAwD0pB,YAAxD,CAAqE,UAArE,EAAiF,IAAjF;IACH;;IACD,IAAIoiF,IAAI,GAAG,KAAKh9B,OAAL,CAAai9B,qBAAb,EAAX;;IACA,IAAI,CAAC,KAAK9uG,MAAL,CAAYuuF,mBAAjB,EAAsC;MAClC,KAAK,IAAI7yF,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGmzG,IAAI,CAAC9zG,MAAzB,EAAiCW,CAAC,EAAlC,EAAsC;QAClC,IAAImzG,IAAI,CAACnzG,CAAD,CAAJ,KAAY,KAAKm2E,OAAL,CAAao+B,gBAA7B,EAA+C;UAC3C,KAAKp+B,OAAL,CAAakgC,aAAb,CAA2BlD,IAAI,CAACnzG,CAAD,CAA/B,EAAoC+wB,YAApC,CAAiD,UAAjD,EAA6D,GAA7D;QACH,CAFD,MAGK;UACD,KAAKolD,OAAL,CAAakgC,aAAb,CAA2BlD,IAAI,CAACnzG,CAAD,CAA/B,EAAoCu+B,eAApC,CAAoD,UAApD;QACH;MACJ;IACJ;;IACD,IAAI74B,GAAG,GAAGytG,IAAI,CAAC9zG,MAAf;;IACA,IAAI,KAAKiF,MAAL,CAAYspF,oBAAhB,EAAsC;MAClC,KAAKtpF,MAAL,CAAYm6E,eAAZ,GAA8Bh/E,8DAAQ,CAAC,MAAD,EAAS8D,IAAI,CAACnE,IAAd,CAAtC;IACH,CAFD,MAGK,IAAIsG,GAAG,GAAG,CAAV,EAAa;MACd;MACA,IAAItG,IAAI,GAAG,KAAK+2E,OAAL,CAAam9B,aAAb,GAA6BH,IAAI,CAACztG,GAAG,GAAG,CAAP,CAAjC,EAA4CtG,IAAvD;MACA,KAAKkF,MAAL,CAAYm6E,eAAZ,GAA8Bh/E,8DAAQ,CAAC,MAAD,EAASL,IAAT,CAAtC;IACH;;IACD,IAAIwwF,OAAO,GAAGnwF,8DAAQ,CAAC,YAAD,EAAe8D,IAAf,CAAtB;IACA,IAAIuwF,WAAW,GAAGr0F,8DAAQ,CAAC,wBAAD,EAA2B,KAAK02E,OAAL,CAAao/B,eAAxC,CAA1B;;IACA,IAAI,KAAKjxG,MAAL,CAAYmpB,QAAZ,IAAwBhtB,uEAAiB,CAACmvF,OAAD,CAAzC,IAAsDrsF,IAAI,CAAC+2B,MAA3D,IAAqE,CAACw5D,WAAtE,IAAqF,CAACvwF,IAAI,CAAC+2B,MAAL,CAAYrG,OAAZ,CAAoB,eAApB,CAA1F,EAAgI;MAC5H,KAAK3vB,MAAL,CAAYuqE,MAAZ,GAAqBpvE,8DAAQ,CAAC,QAAD,EAAW8D,IAAI,CAACnE,IAAhB,CAA7B;;MACA,IAAI,CAAC,KAAKkF,MAAL,CAAYuqE,MAAjB,EAAyB;QACrB,KAAKqmC,WAAL,CAAiB3xG,IAAI,CAACnE,IAAtB;MACH;IACJ;;IACD,KAAKkF,MAAL,CAAYmoF,WAAZ,GAA0BlpF,IAAI,CAACmvG,GAA/B;;IACA,IAAK,CAAC,KAAKpuG,MAAL,CAAYspF,oBAAd,IAAwC,CAACrqF,IAAI,CAAC+yG,uBAAlD,EAA4E;MACxE,IAAI,KAAKhyG,MAAL,CAAYuuF,mBAAZ,IAAmC,CAACpyF,uEAAiB,CAACulD,IAAD,CAArD,IAA+D,CAACvlD,uEAAiB,CAACulD,IAAI,CAAC3+C,aAAL,CAAmB,gBAAnB,CAAD,CAArF,EAA6H;QACzH,IAAIunF,SAAS,GAAG5oC,IAAI,CAAC3+C,aAAL,CAAmB,gBAAnB,CAAhB;QACAunF,SAAS,CAACzoF,KAAV;MACH;;MACD,KAAKkuF,QAAL,CAAc,KAAKle,OAAL,CAAao+B,gBAA3B;IACH;;IACD,IAAI,CAAC,KAAKjwG,MAAL,CAAY+wE,cAAjB,EAAiC;MAC7B,KAAKoP,YAAL,GAAoB,IAApB;IACH;EACJ,CA/DD;EAgEA;;;EACAoqB,WAAW,CAAC3wG,SAAZ,CAAsB+zF,YAAtB,GAAqC,YAAY;IAC7C,IAAI,KAAK3tF,MAAL,CAAYkyE,IAAZ,KAAqB,SAArB,IAAkC,CAAC/1E,uEAAiB,CAAC,KAAK01E,OAAN,CAAxD,EAAwE;MACpE,IAAI,KAAK7xE,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAhC,CAA0C/vE,OAA1C,CAAkDpF,KAAlD,KAA4D,EAA5D,IAAkE,CAAC,KAAK0E,MAAL,CAAY0wE,UAAnF,EAA+F;QAC3F,KAAK6/B,gBAAL,CAAsB,KAAtB;MACH;IACJ;EACJ,CAND;;EAOAhG,WAAW,CAAC3wG,SAAZ,CAAsBk4G,eAAtB,GAAwC,YAAY;IAChD,KAAK9xG,MAAL,CAAY4xB,aAAZ,CAA0B;MAAEg/C,aAAa,EAAE;IAAjB,CAA1B,EAAiD,IAAjD,EADgD,CAEhD;;IACA,IAAIkhC,eAAe,GAAG,KAAKG,eAAL,EAAtB;IACA,IAAIC,UAAU,GAAG,CAAjB;;IACA,OAAOA,UAAU,GAAGJ,eAAe,CAAC/2G,MAApC,EAA4C;MACxC,IAAI6sD,MAAM,GAAGkqD,eAAe,CAACI,UAAD,CAA5B;MACA,IAAIC,MAAM,GAAGr5B,WAAW,CAAC,KAAK94E,MAAN,EAAc4nD,MAAd,CAAxB;MACA,KAAK5nD,MAAL,CAAY4wE,aAAZ,CAA0BpxE,IAA1B,CAA+B2yG,MAA/B;MACAD,UAAU;IACb;;IACD,KAAKlyG,MAAL,CAAY4xB,aAAZ,CAA0B;MAAEg/C,aAAa,EAAE,KAAK5wE,MAAL,CAAY4wE;IAA7B,CAA1B,EAAwE,IAAxE;EACH,CAZD;;EAaA25B,WAAW,CAAC3wG,SAAZ,CAAsB6xG,aAAtB,GAAsC,UAAUxsG,IAAV,EAAgB;IAClD;IACA,IAAI,CAAC,KAAKe,MAAL,CAAYuuF,mBAAb,IAAoCpyF,uEAAiB,CAAC8C,IAAI,CAACnE,IAAN,CAAzD,EAAsE;MAClE,KAAK+2E,OAAL,CAAakgC,aAAb,CAA2B9yG,IAAI,CAAC4xG,QAAhC,EAA0C52E,eAA1C,CAA0D,UAA1D;IACH,CAFD,MAGK,IAAI,KAAK43C,OAAL,CAAai9B,qBAAb,GAAqC/zG,MAArC,GAA8C,CAAlD,EAAqD;MACtD,IAAIsqG,aAAa,GAAG,KAAKxzB,OAAL,CAAai9B,qBAAb,GAAqC,KAAKj9B,OAAL,CAAai9B,qBAAb,GAAqC/zG,MAArC,GAA8C,CAAnF,CAApB;MACA,KAAK82E,OAAL,CAAakgC,aAAb,CAA2B1M,aAA3B,EAA0CtiG,aAA1C,CAAwD,gBAAxD,EAA0Ek3B,eAA1E,CAA0F,UAA1F;IACH;;IACD,IAAI,KAAK43C,OAAL,CAAao+B,gBAAb,KAAkC,CAAC,CAAvC,EAA0C;MACtC,KAAKp+B,OAAL,CAAanxE,OAAb,CAAqB+rB,YAArB,CAAkC,UAAlC,EAA8C,GAA9C;IACH;;IACD,IAAI,CAAC,KAAK0zD,YAAV,EAAwB;MACpB,KAAKA,YAAL,GAAoB,IAApB;MACA;IACH;;IACD,KAAK2xB,eAAL;;IACA,IAAI,KAAK9xG,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAzC,EAA4C;MACxCe,8DAAQ,CAAC,wBAAD,EAA2B,KAA3B,EAAkC,KAAK+1E,OAAL,CAAao/B,eAA/C,CAAR;MACA3jF,iEAAW,CAAC,CAAC,KAAKttB,MAAL,CAAYU,OAAb,CAAD,EAAwB2kE,YAAxB,CAAX;IACH;;IACD,KAAKrlE,MAAL,CAAYgb,MAAZ,CAAmB6wD,gBAAnB,EAAqC,EAArC;IACA,KAAKmkB,aAAL,CAAmB,UAAnB,EAA+B/wF,IAA/B;IACA,KAAKe,MAAL,CAAYmoF,WAAZ,GAA0B,IAA1B;EACH,CAxBD;;EAyBAoiB,WAAW,CAAC3wG,SAAZ,CAAsBo2F,aAAtB,GAAsC,UAAUl6D,MAAV,EAAkB72B,IAAlB,EAAwB;IAC1D,IAAIilB,SAAS,GAAG;MAAE4R,MAAM,EAAEA,MAAV;MAAkBg+C,WAAW,EAAE70E,IAAI,CAACnE,IAApC;MAA0CqlF,YAAY,EAAE,KAAKqqB;IAA7D,CAAhB;IACA,KAAKxqG,MAAL,CAAY+rB,OAAZ,CAAoB,YAApB,EAAkC7H,SAAlC;IACA,KAAKsmF,WAAL,GAAmB,IAAnB;EACH,CAJD;;EAKAD,WAAW,CAAC3wG,SAAZ,CAAsBy6C,UAAtB,GAAmC,YAAY;IAC3C,KAAKm6C,cAAL,CAAoB,IAApB;IACA,KAAKC,cAAL,GAAsB,IAAIx5C,gEAAJ,CAAmB,KAAK48B,OAAL,CAAanxE,OAAhC,EAAyC;MAC3Dy1C,SAAS,EAAE,KAAKi8D,YAAL,CAAkBv4G,IAAlB,CAAuB,IAAvB,CADgD;MAE3D87C,UAAU,EAAE,KAAKA,UAF0C;MAG3DzqB,SAAS,EAAE;IAHgD,CAAzC,CAAtB;IAKA,KAAKyjE,kBAAL,GAA0B,IAAI15C,gEAAJ,CAAmB,KAAKv0C,OAAxB,EAAiC;MACvDy1C,SAAS,EAAE,KAAKk8D,cAAL,CAAoBx4G,IAApB,CAAyB,IAAzB,CAD4C;MAEvD87C,UAAU,EAAE,KAAKA,UAFsC;MAGvDzqB,SAAS,EAAE;IAH4C,CAAjC,CAA1B;IAKAJ,kEAAA,CAAiB,KAAK+mD,OAAL,CAAanxE,OAA9B,EAAuC,MAAvC,EAA+C,KAAK4xG,WAApD,EAAiE,IAAjE;EACH,CAbD;;EAcA/H,WAAW,CAAC3wG,SAAZ,CAAsB2uF,YAAtB,GAAqC,YAAY;IAC7C,KAAKiG,cAAL,CAAoB,KAApB;IACA,KAAKC,cAAL,CAAoBryE,OAApB;IACA,KAAKuyE,kBAAL,CAAwBvyE,OAAxB;IACA0O,qEAAA,CAAoB,KAAK+mD,OAAL,CAAanxE,OAAjC,EAA0C,MAA1C,EAAkD,KAAK4xG,WAAvD;EACH,CALD;;EAMA/H,WAAW,CAAC3wG,SAAZ,CAAsB40F,cAAtB,GAAuC,UAAUO,MAAV,EAAkB;IACrD,IAAIA,MAAJ,EAAY;MACR;MACA,IAAIC,OAAO,GAAG,IAAd;MACA,IAAI/hE,GAAG,GAAG,KAAK4kD,OAAL,CAAa69B,UAAb,EAAV;MACA,KAAKzgB,QAAL,GAAgB,IAAIx3C,uDAAJ,CAAUxqB,GAAV,EAAe;QAC3B2sB,GAAG,EAAE,UAAUs1C,GAAV,EAAe;UAChB,IAAIA,GAAG,CAACv3C,QAAJ,KAAiB,CAAjB,IAAsBu3C,GAAG,CAACh2C,aAAJ,CAAkBljB,MAAlB,CAAyBjJ,SAAzB,CAAmCM,QAAnC,CAA4C,WAA5C,CAA1B,EAAoF;YAChF2hE,OAAO,CAAC3B,cAAR;UACH;QACJ,CAL0B;QAM3BkC,OAAO,EAAE,UAAUhvF,CAAV,EAAa;UAClB,IAAIyuF,OAAO,CAAChvF,MAAR,CAAempB,QAAnB,EAA6B;YACzB5oB,CAAC,CAAC24C,aAAF,CAAgB9N,cAAhB;;YACA,IAAI4jD,OAAO,CAAChvF,MAAR,CAAeuuF,mBAAnB,EAAwC;cACpCzyF,8DAAQ,CAAC,wBAAD,EAA2BkzF,OAAO,CAAChvF,MAAR,CAAeuuF,mBAA1C,EAA+DS,OAAO,CAACnd,OAAR,CAAgBo/B,eAA/E,CAAR;cACArkF,8DAAQ,CAAC,CAACoiE,OAAO,CAAChvF,MAAR,CAAeU,OAAhB,CAAD,EAA2B2kE,YAA3B,CAAR;YACH;;YACD,IAAIrvC,MAAM,GAAGz1B,CAAC,CAAC24C,aAAF,CAAgBljB,MAA7B;;YACA,IAAIA,MAAJ,EAAY;cACR,IAAIo4E,GAAG,GAAGz+E,6DAAO,CAACqG,MAAD,EAAS,MAAMywC,GAAf,CAAjB;cACA,IAAIhrD,KAAK,GAAGuzE,OAAO,CAACnd,OAAR,CAAgBs/B,OAAhB,GAA0B/zG,OAA1B,CAAkCgxG,GAAlC,CAAZ;cACApf,OAAO,CAACnd,OAAR,CAAgBu/B,SAAhB,CAA0B31F,KAA1B;YACH;UACJ;QACJ;MApB0B,CAAf,CAAhB;IAsBH,CA1BD,MA2BK;MACD,IAAI,KAAKwzE,QAAT,EAAmB;QACf,KAAKA,QAAL,CAAc7yE,OAAd;MACH;IACJ;EACJ,CAjCD;EAkCA;;;EACAmuF,WAAW,CAAC3wG,SAAZ,CAAsBy3G,eAAtB,GAAwC,YAAY;IAChD/jF,iEAAW,CAAC,CAAC,KAAKttB,MAAL,CAAYU,OAAb,CAAD,EAAwB2kE,YAAxB,CAAX;IACA,KAAKwM,OAAL,CAAayb,cAAb;IACA,KAAKttF,MAAL,CAAY4xB,aAAZ,CAA0B;MAAEg/C,aAAa,EAAE;IAAjB,CAA1B,EAAiD,IAAjD;IACA,KAAK5wE,MAAL,CAAYgb,MAAZ,CAAmB6wD,gBAAnB,EAAqC,EAArC;;IACA,IAAI,KAAKgG,OAAL,CAAao+B,gBAAb,KAAkC,CAAC,CAAvC,EAA0C;MACtC,KAAKrgB,UAAL,GAAkB,IAAlB;IACH;;IACD,KAAKzP,YAAL,GAAoB,IAApB;EACH,CATD;;EAUAoqB,WAAW,CAAC3wG,SAAZ,CAAsB04G,WAAtB,GAAoC,YAAY;IAC5C,KAAKviB,QAAL,CAAc,IAAd;EACH,CAFD;;EAGAwa,WAAW,CAAC3wG,SAAZ,CAAsB24G,mBAAtB,GAA4C,YAAY;IACpD,OAAQ,CAACp2G,uEAAiB,CAAC,KAAKk0F,cAAL,EAAD,CAAnB,GACHz0F,QAAQ,CAAC,KAAKy0F,cAAL,GAAsB//D,YAAtB,CAAmC,eAAnC,CAAD,EAAsD,EAAtD,CADL,GACiE,IADxE;EAEH,CAHD;EAIA;EACA;;;EACAi6E,WAAW,CAAC3wG,SAAZ,CAAsBy4G,cAAtB,GAAuC,UAAU9xG,CAAV,EAAa;IAChD,IAAI,CAAC,KAAKywB,UAAV,EAAsB;MAClB;IACH;;IACD,QAAQzwB,CAAC,CAACu1B,MAAV;MACI,KAAK,KAAL;MACA,KAAK,MAAL;MACA,KAAK,OAAL;MACA,KAAK,WAAL;MACA,KAAK,YAAL;MACA,KAAK,SAAL;MACA,KAAK,OAAL;MACA,KAAK,OAAL;MACA,KAAK,UAAL;MACA,KAAK,SAAL;MACA,KAAK,UAAL;MACA,KAAK,OAAL;MACA,KAAK,UAAL;MACA,KAAK,WAAL;MACA,KAAK,QAAL;MACA,KAAK,UAAL;MACA,KAAK,WAAL;MACA,KAAK,QAAL;MACA,KAAK,UAAL;MACA,KAAK,WAAL;MACA,KAAK,QAAL;MACA,KAAK,KAAL;MACA,KAAK,KAAL;MACA,KAAK,UAAL;MACA,KAAK,OAAL;MACA,KAAK,OAAL;MACA,KAAK,OAAL;MACA,KAAK,IAAL;MACA,KAAK,UAAL;MACA,KAAK,QAAL;MACA,KAAK,OAAL;QACIv1B,CAAC,CAAC6qC,cAAF;QACA;;MACJ;QACI;IAnCR;EAqCH,CAzCD;;EA0CAm/D,WAAW,CAAC3wG,SAAZ,CAAsBw4G,YAAtB,GAAqC,UAAU7xG,CAAV,EAAa;IAC9C,IAAI,CAAC,KAAKywB,UAAV,EAAsB;MAClB;IACH;;IACDzwB,CAAC,CAAC6qC,cAAF;IACA,IAAItV,MAAM,GAAGv1B,CAAC,CAACu1B,MAAf,CAL8C,CAM9C;;IACA,IAAI08E,SAAS,GAAGr+B,aAAa,CAAC,KAAKn0E,MAAN,EAAc,KAAK6xE,OAAL,CAAatgB,UAA3B,CAA7B;IACA,IAAIkhD,UAAU,GAAGD,SAAS,CAACz3G,MAA3B;IACA,IAAI23G,OAAO,GAAG,KAAKriB,cAAL,EAAd;IACA,IAAIsiB,QAAQ,GAAG,KAAKJ,mBAAL,EAAf;IACA,IAAIK,QAAQ,GAAG,KAAK/gC,OAAL,CAAao+B,gBAA5B;IACA,IAAI4C,aAAa,GAAG,KAAKhhC,OAAL,CAAai9B,qBAAb,EAApB,CAZ8C,CAa9C;;IACA,IAAIgC,OAAJ;IACA,IAAIxgB,SAAJ;IACA,IAAIrD,QAAJ;;IACA,QAAQn3D,MAAR;MACI,KAAK,UAAL;QACI,KAAK91B,MAAL,CAAYgb,MAAZ,CAAmBoxD,WAAnB,EAAgC,EAAhC;QACAsQ,UAAU,CAAC,KAAK18E,MAAN,EAAc,KAAKA,MAAL,CAAY4wE,aAA1B,EAAyC,KAAK5wE,MAAL,CAAYuuE,IAArD,EAA2D,SAA3D,CAAV;QACA;;MACJ,KAAK,KAAL;QACIiB,YAAY,CAAC,KAAKxvE,MAAN,CAAZ;QACA;;MACJ,KAAK,KAAL;MACA,KAAK,UAAL;QACI,KAAKoxF,aAAL;QACA;;MACJ,KAAK,OAAL;QACI,IAAI,KAAKvf,OAAL,CAAao+B,gBAAb,KAAkC,CAAC,CAAvC,EAA0C;UACtC;QACH;;QACDa,OAAO,GAAG,KAAKj/B,OAAL,CAAam9B,aAAb,GAA6B,KAAKn9B,OAAL,CAAao+B,gBAA1C,EAA4Dn1G,IAAtE;;QACA,IAAIg2G,OAAJ,EAAa;UACT;UACA,IAAIh2G,IAAI,GAAGihB,IAAI,CAACC,KAAL,CAAWD,IAAI,CAAC2rB,SAAL,CAAeopE,OAAf,CAAX,CAAX;UACA,KAAKF,WAAL,CAAiB91G,IAAjB;QACH;;QACD;;MACJ,KAAK,OAAL;QACI43E,SAAS,CAAC,KAAK1yE,MAAN,CAAT;QACA;;MACJ,KAAK,OAAL;QACI,KAAKA,MAAL,CAAY42E,UAAZ,GAAyB,EAAzB;QACAF,YAAY,CAAC,KAAK12E,MAAN,CAAZ;QACA;;MACJ,KAAK,OAAL;QACI4yE,QAAQ,CAAC,KAAK5yE,MAAN,CAAR;QACA;;MACJ,KAAK,OAAL;QACI,KAAKu6E,UAAL;QACA;;MACJ,KAAK,IAAL;QACI,KAAK8W,aAAL;QACA;;MACJ,KAAK,OAAL;QACI,IAAI,CAACl1F,uEAAiB,CAACq2G,SAAS,CAAC,CAAD,CAAV,CAAlB,IAAoC,KAAKxyG,MAAL,CAAYuuF,mBAApD,EAAyE;UACrE,IAAIkhB,OAAO,GAAG,KAAK59B,OAAL,CAAa69B,UAAb,GAA0B3sG,aAA1B,CAAwC,YAAxC,CAAd;UACA,IAAI+vG,SAAS,GAAGrD,OAAO,CAAClzE,SAAxB;UACA,IAAIw2E,aAAa,GAAG,KAAKlhC,OAAL,CAAao+B,gBAAjC;UACA,KAAKp+B,OAAL,CAAao/B,eAAb,CAA6BC,iBAA7B,CAA+C,CAA/C,EAAkDsB,SAAS,CAACz3G,MAAV,GAAmB,CAArE;UACA00G,OAAO,CAAClzE,SAAR,GAAoBu2E,SAApB;;UACA,IAAIC,aAAa,KAAK,CAAC,CAAvB,EAA0B;YACtB,KAAKhjB,QAAL,CAAcgjB,aAAd;UACH;QACJ;;QACD;;MACJ,KAAK,UAAL;MACA,KAAK,KAAL;QACI,IAAI,CAAC52G,uEAAiB,CAACq2G,SAAS,CAAC,CAAD,CAAV,CAAtB,EAAsC;UAClC,IAAI,CAAC,KAAKxyG,MAAL,CAAYuuF,mBAAb,IAAoChuF,CAAC,CAACu1B,MAAF,KAAa,UAArD,EAAiE;YAC7D,KAAK+7C,OAAL,CAAau/B,SAAb,CAAuB,CAAvB;UACH,CAFD,MAGK,IAAI,KAAKv/B,OAAL,CAAao+B,gBAAb,KAAkC,CAAC,CAAnC,IAAwC1vG,CAAC,CAACu1B,MAAF,KAAa,KAAzD,EAAgE;YACjE;UACH,CAFI,MAGA,IAAI,CAAC,KAAKi1E,YAAV,EAAwB;YACzB,KAAKiI,cAAL;YACA,KAAKjI,YAAL,GAAoB,IAApB;UACH,CAHI,MAIA;YACD,KAAKhb,QAAL,CAAc,CAAd;YACA,KAAKgb,YAAL,GAAoB,KAApB;UACH;QACJ;;QACD;;MACJ,KAAK,SAAL;QACI,IAAI,CAAC5uG,uEAAiB,CAACq2G,SAAS,CAAC,CAAD,CAAV,CAAtB,EAAsC;UAClC,IAAI,CAAC,KAAKxyG,MAAL,CAAYuuF,mBAAjB,EAAsC;YAClC,KAAK1c,OAAL,CAAau/B,SAAb,CAAuBqB,UAAU,GAAG,CAApC;UACH,CAFD,MAGK;YACD,KAAK1iB,QAAL,CAAc0iB,UAAU,GAAG,CAA3B;UACH;QACJ;;QACD;;MACJ,KAAK,WAAL;MACA,KAAK,UAAL;MACA,KAAK,QAAL;MACA,KAAK,OAAL;QACI,IAAI,CAAC,KAAKzyG,MAAL,CAAYuuF,mBAAjB,EAAsC;UAClC,KAAK1c,OAAL,CAAau/B,SAAb,CAAwB7wG,CAAC,CAACu1B,MAAF,KAAa,WAAb,IAA4Bv1B,CAAC,CAACu1B,MAAF,KAAa,QAA1C,GAAsD,CAAtD,GAA0D08E,SAAS,CAACz3G,MAAV,GAAmB,CAApG;QACH,CAFD,MAGK;UACD,IAAI,CAACoB,uEAAiB,CAACq2G,SAAS,CAAC,CAAD,CAAV,CAAtB,EAAsC;YAClC,IAAI,CAACr2G,uEAAiB,CAACy2G,QAAD,CAAlB,IAAgCA,QAAQ,KAAK,CAAC,CAAlD,EAAqD;cACjD,KAAKK,YAAL,CAAkBT,SAAlB,EAA6BI,QAA7B,EAAuC,IAAvC,EAA6CryG,CAA7C;YACH,CAFD,MAGK;cACD,IAAIA,CAAC,CAACu1B,MAAF,KAAa,QAAb,IAAyBv1B,CAAC,CAACu1B,MAAF,KAAa,WAA1C,EAAuD;gBACnD,KAAK+7C,OAAL,CAAau/B,SAAb,CAAuB,CAAvB;cACH,CAFD,MAGK;gBACD,KAAKv/B,OAAL,CAAao/B,eAAb,CAA6BC,iBAA7B,CAA+C,CAA/C,EAAkDsB,SAAS,CAACz3G,MAAV,GAAmB,CAArE;cACH;YACJ;UACJ;QACJ;;QACD;;MACJ,KAAK,OAAL;MACA,KAAK,SAAL;MACA,KAAK,YAAL;MACA,KAAK,WAAL;QACI,KAAKm4G,cAAL,CAAoBL,aAApB,EAAmCF,QAAnC,EAA6CC,QAA7C,EAAuDryG,CAAvD;QACA;;MACJ,KAAK,MAAL;MACA,KAAK,QAAL;MACA,KAAK,SAAL;MACA,KAAK,WAAL;QACI,KAAK4yG,eAAL,CAAqBX,SAArB,EAAgCI,QAAhC,EAA0CD,QAA1C,EAAoDE,aAApD,EAAmEtyG,CAAnE;QACA;;MACJ,KAAK,QAAL;MACA,KAAK,UAAL;QACI,IAAI,CAAC,KAAKP,MAAL,CAAYuuF,mBAAjB,EAAsC;UAClC,KAAK6kB,YAAL,CAAkBZ,SAAlB,EAA6BjyG,CAA7B,EAAgCqyG,QAAhC;QACH,CAFD,MAGK;UACD,KAAKS,gBAAL,CAAsBb,SAAtB,EAAiCjyG,CAAjC,EAAoCqyG,QAApC;QACH;;QACD;;MACJ,KAAK,MAAL;QACItiB,SAAS,GAAG,CAACn1F,8DAAQ,CAAC,KAAK6E,MAAL,CAAYyuE,KAAZ,GAAoB,IAApB,GAA2B,MAA5B,EAAoC+jC,SAAS,CAAC,CAAD,CAA7C,CAAT,CAAZ;QACA,KAAKxyG,MAAL,CAAY4xB,aAAZ,CAA0B;UAAEg/C,aAAa,EAAE0f;QAAjB,CAA1B,EAAwD,IAAxD;QACA,KAAK2e,aAAL,CAAmB3e,SAAnB;QACA;;MACJ,KAAK,QAAL;MACA,KAAK,UAAL;QACI,KAAK8iB,YAAL,CAAkBZ,SAAlB,EAA6BjyG,CAA7B,EAAgCqyG,QAAhC;QACA;;MACJ,KAAK,KAAL;QACI3lB,QAAQ,GAAG,CAAC9xF,8DAAQ,CAAC,KAAK6E,MAAL,CAAYyuE,KAAZ,GAAoB,IAApB,GAA2B,MAA5B,EAAoC+jC,SAAS,CAACC,UAAU,GAAG,CAAd,CAA7C,CAAT,CAAX;QACA,KAAKzyG,MAAL,CAAY4xB,aAAZ,CAA0B;UAAEg/C,aAAa,EAAEqc;QAAjB,CAA1B,EAAuD,IAAvD;QACA,KAAKgiB,aAAL,CAAmBhiB,QAAnB;QACA;IAzIR;EA2IH,CA5JD,CA3zCmD,CAw9CnD;;;EACAsd,WAAW,CAAC3wG,SAAZ,CAAsBq4G,eAAtB,GAAwC,YAAY;IAChD,OAAO,KAAKpgC,OAAL,CAAa8+B,kBAAb,EAAP;EACH,CAFD;;EAGApG,WAAW,CAAC3wG,SAAZ,CAAsB2gF,UAAtB,GAAmC,YAAY;IAC3C,IAAI,KAAKv6E,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAzC,EAA4C;MACxC,KAAKiF,MAAL,CAAYmxE,QAAZ,GAAuB,KAAKU,OAAL,CAAa8+B,kBAAb,EAAvB,CADwC,CAExC;;MACA,IAAIlnD,KAAK,GAAG,KAAKzpD,MAAL,CAAYmxE,QAAxB;;MACA,KAAK,IAAIz1E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+tD,KAAK,CAAC1uD,MAA1B,EAAkCW,CAAC,EAAnC,EAAuC;QACnC,IAAI,CAAC8+E,iBAAiB,CAAC/wB,KAAK,CAAC/tD,CAAD,CAAN,CAAtB,EAAkC;UAC9B82E,kBAAkB,CAAC,KAAKxyE,MAAN,EAAcypD,KAAK,CAAC/tD,CAAD,CAAnB,EAAwB0yE,kBAAxB,CAAlB;UACA;QACH;MACJ;;MACDqM,QAAQ,CAAC,KAAKz6E,MAAN,EAAc,KAAKA,MAAL,CAAYuuE,IAA1B,EAAgC,KAAKvuE,MAAL,CAAY4wE,aAA5C,CAAR;IACH;EACJ,CAbD;;EAcA25B,WAAW,CAAC3wG,SAAZ,CAAsBw3F,aAAtB,GAAsC,YAAY;IAC9C,IAAI,KAAKpxF,MAAL,CAAY4wE,aAAZ,IAA6B,KAAK5wE,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,GAAmC,CAApE,EAAuE;MACnE,KAAKiF,MAAL,CAAYmxE,QAAZ,GAAuB,KAAKU,OAAL,CAAa8+B,kBAAb,EAAvB,CADmE,CAEnE;;MACA,IAAIlnD,KAAK,GAAG,KAAKzpD,MAAL,CAAYmxE,QAAxB;;MACA,KAAK,IAAIz1E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG+tD,KAAK,CAAC1uD,MAA1B,EAAkCW,CAAC,EAAnC,EAAuC;QACnC,IAAI,CAAC4+E,aAAa,CAAC7wB,KAAK,CAAC/tD,CAAD,CAAN,CAAlB,EAA8B;UAC1B82E,kBAAkB,CAAC,KAAKxyE,MAAN,EAAcypD,KAAK,CAAC/tD,CAAD,CAAnB,EAAwBsyE,cAAxB,CAAlB;UACA;QACH;MACJ;;MACDkJ,YAAY,CAAC,KAAKl3E,MAAN,EAAc,QAAd,CAAZ;IACH;EACJ,CAbD;;EAcAuqG,WAAW,CAAC3wG,SAAZ,CAAsBy3F,aAAtB,GAAsC,YAAY;IAC9C,IAAI,KAAKrxF,MAAL,CAAY4wE,aAAZ,CAA0B71E,MAA1B,KAAqC,CAAzC,EAA4C;MACxC,KAAKyxF,gBAAL;MACAnS,QAAQ,CAAC,KAAKr6E,MAAN,CAAR;IACH;EACJ,CALD;;EAMAuqG,WAAW,CAAC3wG,SAAZ,CAAsB4yF,gBAAtB,GAAyC,YAAY;IACjD;IACA,IAAI1xF,IAAI,GAAG,KAAKm3G,eAAL,GAAuB,CAAvB,CAAX;IACA/3B,kBAAkB,CAAC,KAAKl6E,MAAN,EAAclF,IAAd,CAAlB;EACH,CAJD,CA9/CmD,CAmgDnD;;;EACAyvG,WAAW,CAAC3wG,SAAZ,CAAsBu5G,eAAtB,GAAwC,UAAUX,SAAV,EAAqBI,QAArB,EAA+BD,QAA/B,EAAyCE,aAAzC,EAAwDtyG,CAAxD,EAA2D;IAC/F,IAAI,CAAC,KAAKP,MAAL,CAAYuuF,mBAAjB,EAAsC;MAClC,KAAK6kB,YAAL,CAAkBZ,SAAlB,EAA6BjyG,CAA7B,EAAgCqyG,QAAhC;IACH,CAFD,MAGK;MACD,IAAIA,QAAQ,KAAK,CAAC,CAAd,KAAoBryG,CAAC,CAACu1B,MAAF,KAAa,MAAb,IAAuBv1B,CAAC,CAACu1B,MAAF,KAAa,QAAxD,CAAJ,EAAuE;QACnE,KAAKu9E,gBAAL,CAAsBb,SAAtB,EAAiCjyG,CAAjC,EAAoCqyG,QAApC;MACH,CAFD,MAGK,IAAIA,QAAQ,KAAK,CAAC,CAAd,IAAmBD,QAAQ,KAAKC,QAAhC,IACL,EAAE,CAACryG,CAAC,CAACu1B,MAAF,KAAa,MAAb,IAAuBv1B,CAAC,CAACu1B,MAAF,KAAa,QAArC,KAAkD,KAAKw9E,UAAL,CAAgBT,aAAhB,EAA+BF,QAA/B,CAApD,CADC,EAC8F;QAC/F,KAAKY,oBAAL,CAA0BX,QAA1B,EAAoCD,QAApC,EAA8CE,aAA9C,EAA6DtyG,CAA7D;MACH,CAHI,MAIA;QACD,KAAKizG,iBAAL,CAAuBZ,QAAvB,EAAiCC,aAAjC,EAAgDL,SAAhD,EAA2DjyG,CAA3D;MACH;IACJ;EACJ,CAhBD,CApgDmD,CAqhDnD;;;EACAgqG,WAAW,CAAC3wG,SAAZ,CAAsBw5G,YAAtB,GAAqC,UAAUxiC,aAAV,EAAyBrwE,CAAzB,EAA4BswG,QAA5B,EAAsC;IACvE,IAAI,CAAC10G,uEAAiB,CAAC,KAAKk0F,cAAL,EAAD,CAAlB,IAA6C,KAAKrwF,MAAL,CAAYuuF,mBAA7D,EAAkF;MAC9E,IAAIhuF,CAAC,CAACu1B,MAAF,KAAa,UAAjB,EAA6B;QACzB,KAAK+7C,OAAL,CAAau/B,SAAb,CAAuB,KAAKmB,mBAAL,KAA6B,CAApD;MACH,CAFD,MAGK;QACD,KAAK1gC,OAAL,CAAau/B,SAAb,CAAuB,KAAKmB,mBAAL,KAA6B,CAApD;MACH;IACJ,CAPD,MAQK,IAAI,CAACp2G,uEAAiB,CAAC00G,QAAD,CAAlB,IAAgCA,QAAQ,KAAK,CAAC,CAAlD,EAAqD;MACtD,IAAItwG,CAAC,CAACu1B,MAAF,KAAa,UAAb,IAA2Bv1B,CAAC,CAACu1B,MAAF,KAAa,UAAxC,IAAsDv1B,CAAC,CAACu1B,MAAF,KAAa,WAAnE,IAAkFv1B,CAAC,CAACu1B,MAAF,KAAa,QAAnG,EAA6G;QACzG,KAAK+7C,OAAL,CAAau/B,SAAb,CAAuBP,QAAQ,IAAKA,QAAQ,KAAKjgC,aAAa,CAAC71E,MAAd,GAAuB,CAArC,GAA0C,CAA1C,GAA8C,CAAlD,CAA/B;MACH,CAFD,MAGK;QACD,KAAK82E,OAAL,CAAau/B,SAAb,CAAuBP,QAAQ,IAAKA,QAAQ,KAAK,CAAd,GAAmB,CAAnB,GAAuB,CAA3B,CAA/B;MACH;IACJ,CAPI,MAQA;MACD,IAAI,CAAC10G,uEAAiB,CAACy0E,aAAa,CAAC,CAAD,CAAd,CAAtB,EAA0C;QACtC,KAAKiB,OAAL,CAAau/B,SAAb,CAAuB,CAAvB;MACH;IACJ;EACJ,CAtBD;;EAuBA7G,WAAW,CAAC3wG,SAAZ,CAAsBs5G,cAAtB,GAAuC,UAAUL,aAAV,EAAyBF,QAAzB,EAAmCC,QAAnC,EAA6CryG,CAA7C,EAAgD;IACnF,IAAI,CAAC,KAAK+yG,UAAL,CAAgBT,aAAhB,EAA+BF,QAA/B,CAAD,IAA6CC,QAAQ,KAAK,CAAC,CAA3D,KAAiEryG,CAAC,CAACu1B,MAAF,KAAa,YAAb,IAA6Bv1B,CAAC,CAACu1B,MAAF,KAAa,SAA3G,CAAJ,EAA2H;MACvH,IAAI68E,QAAQ,GAAGC,QAAf,EAAyB;QACrB,KAAK/gC,OAAL,CAAao/B,eAAb,CAA6BC,iBAA7B,CAA+CyB,QAA/C,EAAyDC,QAAzD;MACH,CAFD,MAGK;QACD,KAAK/gC,OAAL,CAAao/B,eAAb,CAA6BC,iBAA7B,CAA+C0B,QAA/C,EAAyDD,QAAzD;MACH;IACJ,CAPD,MAQK,IAAI,CAACx2G,uEAAiB,CAAC,KAAKk0F,cAAL,EAAD,CAAlB,IAA6CsiB,QAAQ,KAAKC,QAA9D,EAAwE;MACzEC,aAAa,CAACrzG,IAAd,CAAmB,KAAK+yG,mBAAL,EAAnB;MACA,KAAK1gC,OAAL,CAAa8mB,UAAb,CAAwBka,aAAxB;IACH,CAHI,MAIA,IAAID,QAAQ,KAAK,CAAC,CAAd,IAAmBryG,CAAC,CAACu1B,MAAF,KAAa,WAAhC,IAA+C,KAAK91B,MAAL,CAAYuuF,mBAA/D,EAAoF;MACrF,IAAI2D,KAAK,GAAG0gB,QAAZ;MACAC,aAAa,CAAC11B,GAAd;MACA,KAAKtL,OAAL,CAAa8mB,UAAb,CAAwBka,aAAxB;MACA,KAAK9iB,QAAL,CAAcmC,KAAd;IACH,CALI,MAMA,IAAI3xF,CAAC,CAACu1B,MAAF,KAAa,YAAjB,EAA+B;MAChC,KAAK+7C,OAAL,CAAau/B,SAAb,CAAuBwB,QAAvB;IACH;EACJ,CAtBD,CA7iDmD,CAokDnD;;;EACArI,WAAW,CAAC3wG,SAAZ,CAAsBy5G,gBAAtB,GAAyC,UAAU5pD,KAAV,EAAiBlpD,CAAjB,EAAoBswG,QAApB,EAA8B;IACnE,IAAIjf,QAAJ;;IACA,IAAI,CAACz1F,uEAAiB,CAAC,KAAKk0F,cAAL,EAAD,CAAtB,EAA+C;MAC3C,IAAIojB,SAAS,GAAG,KAAKlB,mBAAL,EAAhB;MACA3gB,QAAQ,GAAIrxF,CAAC,CAACu1B,MAAF,KAAa,UAAb,IAA2Bv1B,CAAC,CAACu1B,MAAF,KAAa,QAAzC,GACP29E,SAAS,IAAKA,SAAS,GAAGhqD,KAAK,CAAC1uD,MAAN,GAAe,CAA5B,GAAiC,CAAjC,GAAqC,CAAzC,CADF,GACgD04G,SAAS,IAAKA,SAAS,GAAG,CAAb,GAAkB,CAAlB,GAAsB,CAA1B,CADpE;IAEH,CAJD,MAKK,IAAI,CAACt3G,uEAAiB,CAAC00G,QAAD,CAAlB,IAAgCA,QAAQ,KAAK,CAAC,CAAlD,EAAqD;MACtDjf,QAAQ,GAAIrxF,CAAC,CAACu1B,MAAF,KAAa,UAAb,IAA2Bv1B,CAAC,CAACu1B,MAAF,KAAa,QAAzC,GACP+6E,QAAQ,IAAKA,QAAQ,GAAGpnD,KAAK,CAAC1uD,MAAlB,GAA4B,CAA5B,GAAgC,CAApC,CADD,GAC0C81G,QAAQ,IAAKA,QAAQ,GAAG,CAAZ,GAAiB,CAAjB,GAAqB,CAAzB,CAD7D;IAEH,CAHI,MAIA;MACD,IAAI,CAAC10G,uEAAiB,CAACstD,KAAK,CAAC,CAAD,CAAN,CAAtB,EAAkC;QAC9BmoC,QAAQ,GAAG,CAAX;MACH;IACJ;;IACD,KAAK7B,QAAL,CAAc6B,QAAd;EACH,CAjBD,CArkDmD,CAulDnD;;;EACA2Y,WAAW,CAAC3wG,SAAZ,CAAsBq5G,YAAtB,GAAqC,UAAUxpD,KAAV,EAAiBiqD,UAAjB,EAA6Bf,QAA7B,EAAuCpyG,CAAvC,EAA0C;IAC3E,IAAI,KAAKsxE,OAAL,CAAa8hC,YAAb,KAA8B,SAA9B,IAA2C,KAAK9hC,OAAL,CAAa8hC,YAAb,KAA8B,cAA7E,EAA6F;MACzF,IAAIpzG,CAAC,CAACu1B,MAAF,KAAa,QAAb,IAAyBv1B,CAAC,CAACu1B,MAAF,KAAa,OAA1C,EAAmD;QAC/C,IAAI35B,uEAAiB,CAAC,KAAKyzF,UAAN,CAAjB,IAAsC,KAAK8a,cAAL,KAAwBgJ,UAAlE,EAA8E;UAC1E,KAAKhJ,cAAL,GAAsBgJ,UAAtB;QACH;;QACD,IAAInzG,CAAC,CAACu1B,MAAF,KAAa,UAAjB,EAA6B;UACzB,KAAK+7C,OAAL,CAAao/B,eAAb,CAA6BC,iBAA7B,CAA+C,KAAKxG,cAApD,EAAoEjhD,KAAK,CAAC1uD,MAAN,GAAe,CAAnF;QACH,CAFD,MAGK;UACD,KAAK82E,OAAL,CAAao/B,eAAb,CAA6BC,iBAA7B,CAA+C,CAA/C,EAAkD,KAAKxG,cAAvD;QACH;;QACD,KAAK9a,UAAL,GAAkB8jB,UAAlB;MACH,CAXD,MAYK;QACD,IAAInzG,CAAC,CAACu1B,MAAF,KAAa,OAAjB,EAA0B;UACtB,KAAK+7C,OAAL,CACI8mB,UADJ,CACe,KAAKib,UAAL,CAAgBz3G,uEAAiB,CAACu3G,UAAD,CAAjB,GAAgC,CAAhC,GAAoCA,UAApD,EAAgEv3G,uEAAiB,CAACw2G,QAAD,CAAjB,GAA8BlpD,KAAK,CAAC1uD,MAAN,GAAe,CAA7C,GAAiD43G,QAAjH,EAA2HpyG,CAA3H,CADf;QAEH,CAHD,MAIK;UACD,IAAIpE,uEAAiB,CAACu3G,UAAD,CAArB,EAAmC;YAC/B,KAAK7hC,OAAL,CAAau/B,SAAb,CAAuB,CAAvB;UACH,CAFD,MAGK;YACD,KAAKv/B,OAAL,CAAa8mB,UAAb,CAAwB,KAAKib,UAAL,CAAgBz3G,uEAAiB,CAACw2G,QAAD,CAAjB,GAA8B,CAA9B,GAAkCA,QAAlD,EAA4De,UAA5D,EAAwEnzG,CAAxE,CAAxB;UACH;QACJ;MACJ;IACJ,CA3BD,MA4BK;MACD,KAAKsxE,OAAL,CAAao/B,eAAb,CAA6BG,SAA7B,CAAyC7wG,CAAC,CAACu1B,MAAF,KAAa,WAAb,IAA4Bv1B,CAAC,CAACu1B,MAAF,KAAa,QAA1C,GAAsD,CAAtD,GAA0D2zB,KAAK,CAAC1uD,MAAN,GAAe,CAAjH;IACH;EACJ,CAhCD;;EAiCAwvG,WAAW,CAAC3wG,SAAZ,CAAsBg6G,UAAtB,GAAmC,UAAUxjB,KAAV,EAAiB8B,KAAjB,EAAwB3xF,CAAxB,EAA2B;IAC1D,IAAIszG,OAAO,GAAG,KAAKhiC,OAAL,CAAai9B,qBAAb,EAAd;;IACA,IAAIvuG,CAAC,CAACu1B,MAAF,KAAa,OAAjB,EAA0B;MACtB,KAAK,IAAIp6B,CAAC,GAAG00F,KAAK,GAAG,CAArB,EAAwB10F,CAAC,IAAIw2F,KAA7B,EAAoCx2F,CAAC,EAArC,EAAyC;QACrCm4G,OAAO,CAACr0G,IAAR,CAAa9D,CAAb;MACH;IACJ,CAJD,MAKK;MACD,KAAK,IAAIA,CAAC,GAAGw2F,KAAK,GAAG,CAArB,EAAwB9B,KAAK,IAAI10F,CAAjC,EAAoCA,CAAC,EAArC,EAAyC;QACrCm4G,OAAO,CAACr0G,IAAR,CAAa9D,CAAb;MACH;IACJ;;IACD,OAAOm4G,OAAP;EACH,CAbD;;EAcAtJ,WAAW,CAAC3wG,SAAZ,CAAsB25G,oBAAtB,GAA6C,UAAUX,QAAV,EAAoBkB,MAApB,EAA4BC,aAA5B,EAA2CxzG,CAA3C,EAA8C;IACvF,IAAI2xF,KAAK,GAAG4hB,MAAM,IAAKvzG,CAAC,CAACu1B,MAAF,KAAa,WAAb,IAA4Bv1B,CAAC,CAACu1B,MAAF,KAAa,QAA1C,GAAsD,CAAtD,GAA0D,CAAC,CAA/D,CAAlB;IACA,IAAIs6D,KAAK,GAAGj0F,uEAAiB,CAAC,KAAKyzF,UAAN,CAAjB,GAAqCgjB,QAArC,GAAgDmB,aAAa,CAAC,CAAD,CAAzE;;IACA,IAAI3jB,KAAK,KAAK8B,KAAd,EAAqB;MACjB,KAAKrgB,OAAL,CAAau/B,SAAb,CAAuBhhB,KAAvB;IACH,CAFD,MAGK;MACD,IAAIA,KAAK,GAAG8B,KAAZ,EAAmB;QACf,IAAI3xF,CAAC,CAACu1B,MAAF,KAAa,WAAb,IAA4Bv1B,CAAC,CAACu1B,MAAF,KAAa,QAA7C,EAAuD;UACnD,KAAK+7C,OAAL,CAAao/B,eAAb,CAA6BC,iBAA7B,CAA+C9gB,KAA/C,EAAsD8B,KAAtD;QACH,CAFD,MAGK;UACD,KAAKrgB,OAAL,CAAao/B,eAAb,CAA6BC,iBAA7B,CAA+Chf,KAA/C,EAAsD9B,KAAtD;QACH;MACJ,CAPD,MAQK,IAAI7vF,CAAC,CAACu1B,MAAF,KAAa,WAAb,IAA4Bv1B,CAAC,CAACu1B,MAAF,KAAa,QAA7C,EAAuD;QACxD,KAAK+7C,OAAL,CAAao/B,eAAb,CAA6BC,iBAA7B,CAA+Chf,KAA/C,EAAsD9B,KAAtD;MACH,CAFI,MAGA;QACD,KAAKve,OAAL,CAAao/B,eAAb,CAA6BC,iBAA7B,CAA+C9gB,KAA/C,EAAsD8B,KAAtD;MACH;IACJ;;IACD,KAAKtC,UAAL,GAAkB,KAAK/d,OAAL,CAAao+B,gBAA/B;EACH,CAvBD;;EAwBA1F,WAAW,CAAC3wG,SAAZ,CAAsBm2F,QAAtB,GAAiC,UAAUruC,IAAV,EAAgB;IAC7C,IAAI0uC,KAAK,GAAG,KAAKC,cAAL,EAAZ;IACA,IAAI2jB,WAAW,GAAG,KAAKniC,OAAL,CAAakgC,aAAb,CAA2BrwD,IAA3B,CAAlB;;IACA,IAAI0uC,KAAJ,EAAW;MACPA,KAAK,CAACn2D,eAAN,CAAsB,UAAtB;MACA3M,iEAAW,CAAC,CAAC8iE,KAAD,CAAD,EAAU,CAAChqB,KAAD,EAAQC,OAAR,CAAV,CAAX;IACH;;IACD,IAAI,CAAClqE,uEAAiB,CAAC63G,WAAD,CAAtB,EAAqC;MACjC,KAAKniC,OAAL,CAAanxE,OAAb,CAAqB+rB,YAArB,CAAkC,UAAlC,EAA8C,IAA9C;MACAunF,WAAW,CAACvnF,YAAZ,CAAyB,UAAzB,EAAqC,GAArC;MACAunF,WAAW,CAACnyG,KAAZ;MACA+qB,8DAAQ,CAAC,CAAConF,WAAD,CAAD,EAAgB,CAAC5tC,KAAD,EAAQC,OAAR,CAAhB,CAAR;IACH;EACJ,CAbD;;EAcAkkC,WAAW,CAAC3wG,SAAZ,CAAsBo5G,cAAtB,GAAuC,YAAY;IAC/C,IAAIiB,SAAS,GAAGjlF,4DAAM,CAAC,QAAD,EAAW,KAAKtuB,OAAhB,CAAtB;IACA,KAAKmxE,OAAL,CAAanxE,OAAb,CAAqB+rB,YAArB,CAAkC,UAAlC,EAA8C,IAA9C;IACA,IAAIynF,SAAS,GAAGllF,4DAAM,CAAC,mBAAD,EAAsB,KAAKtuB,OAA3B,CAAtB;IACAwzG,SAAS,CAACznF,YAAV,CAAuB,UAAvB,EAAmC,GAAnC;IACAynF,SAAS,CAACryG,KAAV;IACA+qB,8DAAQ,CAAC,CAACsnF,SAAD,CAAD,EAAc,CAAC9tC,KAAD,EAAQC,OAAR,CAAd,CAAR;IACA4tC,SAAS,CAACxnF,YAAV,CAAuB,UAAvB,EAAmC,GAAnC;;IACA,IAAIwnF,SAAS,CAACE,QAAV,KAAuB,CAAvB,IAA4BD,SAAS,CAACC,QAAV,KAAuB,CAAvD,EAA0D;MACtD7mF,iEAAW,CAAC,CAAC2mF,SAAD,CAAD,EAAc,CAAC7tC,KAAD,EAAQC,OAAR,CAAd,CAAX;IACH;EACJ,CAXD;;EAYAkkC,WAAW,CAAC3wG,SAAZ,CAAsBy2F,cAAtB,GAAuC,YAAY;IAC/C,OAAOrhE,4DAAM,CAAC,MAAMq3C,OAAP,EAAgB,KAAK3lE,OAArB,CAAb;EACH,CAFD;;EAGA6pG,WAAW,CAAC3wG,SAAZ,CAAsB05G,UAAtB,GAAmC,UAAUS,aAAV,EAAyBpB,QAAzB,EAAmC;IAClE,IAAIyB,KAAK,GAAG,KAAZ;;IACA,KAAK,IAAI14G,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAIq4G,aAAa,CAACh5G,MAAd,GAAuB,CAA5C,EAA+CW,CAAC,EAAhD,EAAoD;MAChD,IAAIq4G,aAAa,CAACr4G,CAAD,CAAb,KAAqBi3G,QAAzB,EAAmC;QAC/ByB,KAAK,GAAG,IAAR;QACA;MACH;IACJ;;IACD,OAAOA,KAAP;EACH,CATD,CA5rDmD,CAssDnD;;;EACA7J,WAAW,CAAC3wG,SAAZ,CAAsB45G,iBAAtB,GAA0C,UAAUZ,QAAV,EAAoBmB,aAApB,EAAmCvB,SAAnC,EAA8CjyG,CAA9C,EAAiD;IACvF,IAAIqyG,QAAQ,KAAK,CAAC,CAAlB,EAAqB;MACjB,KAAK/gC,OAAL,CAAau/B,SAAb,CAAuB,CAAvB;IACH,CAFD,MAGK;MACD,IAAIj1G,uEAAiB,CAAC,KAAKyzF,UAAN,CAAjB,IAAsCrvF,CAAC,CAACi1C,QAA5C,EAAsD;QAClD,KAAKo6C,UAAL,GAAkB,KAAK/d,OAAL,CAAao+B,gBAA/B;QACA,KAAKp+B,OAAL,CAAa8mB,UAAb,CAAwB,CAACia,QAAD,EAAYryG,CAAC,CAACu1B,MAAF,KAAa,WAAb,IAA4Bv1B,CAAC,CAACu1B,MAAF,KAAa,QAA1C,GAC1B88E,QAAQ,IAAKA,QAAQ,KAAKJ,SAAS,CAACz3G,MAAV,GAAmB,CAAjC,GAAsC,CAAtC,GAA0C,CAA9C,CADkB,GACmC63G,QAAQ,IAAKA,QAAQ,KAAK,CAAd,GAAmB,CAAnB,GAAuB,CAA3B,CADtD,CAAxB;MAEH,CAJD,MAKK;QACD,IAAIryG,CAAC,CAACu1B,MAAF,KAAa,WAAb,IAA4Bv1B,CAAC,CAACu1B,MAAF,KAAa,SAA7C,EAAwD;UACpD,IAAIv1B,CAAC,CAACu1B,MAAF,KAAa,WAAb,IAA4Bi+E,aAAa,CAAC32G,OAAd,CAAsBw1G,QAAQ,GAAG,CAAjC,MAAwC,CAAC,CAAzE,EAA4E;YACxE,IAAIA,QAAQ,KAAKJ,SAAS,CAACz3G,MAAV,GAAmB,CAApC,EAAuC;cACnCg5G,aAAa,CAACv0G,IAAd,CAAmBozG,QAAQ,GAAG,CAA9B;YACH;UACJ,CAJD,MAKK,IAAIryG,CAAC,CAACu1B,MAAF,KAAa,SAAb,IAA0Bi+E,aAAa,CAAC32G,OAAd,CAAsBw1G,QAAQ,GAAG,CAAjC,MAAwC,CAAC,CAAvE,EAA0E;YAC3E,IAAIA,QAAQ,KAAK,CAAjB,EAAoB;cAChBmB,aAAa,CAACv0G,IAAd,CAAmBozG,QAAQ,GAAG,CAA9B;YACH;UACJ,CAJI,MAKA;YACDmB,aAAa,CAAC52B,GAAd;UACH;;UACD,KAAKtL,OAAL,CAAa8mB,UAAb,CAAwBob,aAAxB;QACH,CAfD,MAgBK;UACD,IAAIxzG,CAAC,CAACu1B,MAAF,KAAa,QAAjB,EAA2B;YACvB,IAAI,CAAC,KAAKw9E,UAAL,CAAgBS,aAAhB,EAA+B,KAAKxB,mBAAL,KAA6B,CAA5D,CAAL,EAAqE;cACjEwB,aAAa,CAACv0G,IAAd,CAAoB,KAAK+yG,mBAAL,KAA6B,CAAjD;cACA,KAAK1gC,OAAL,CAAa8mB,UAAb,CAAwBob,aAAxB;YACH,CAHD,MAIK;cACD,KAAKhkB,QAAL,CAAc,KAAKwiB,mBAAL,KAA6B,CAA3C;YACH;UACJ,CARD,MASK,IAAI,CAAC,KAAKe,UAAL,CAAgBS,aAAhB,EAA+B,KAAKxB,mBAAL,KAA6B,CAA5D,CAAL,EAAqE;YACtEwB,aAAa,CAACv0G,IAAd,CAAoB,KAAK+yG,mBAAL,KAA6B,CAAjD;YACA,KAAK1gC,OAAL,CAAa8mB,UAAb,CAAwBob,aAAxB;UACH,CAHI,MAIA;YACD,KAAKhkB,QAAL,CAAc,KAAKwiB,mBAAL,KAA6B,CAA3C;UACH;QACJ;MACJ;IACJ;EACJ,CA/CD,CAvsDmD,CAuvDnD;;;EACAhI,WAAW,CAAC3wG,SAAZ,CAAsBg0F,YAAtB,GAAqC,UAAUrtF,CAAV,EAAa;IAC9C,IAAI,KAAKP,MAAL,CAAYkyE,IAAZ,KAAqB,SAAzB,EAAoC;MAChC;IACH;;IACD,IAAIp8C,MAAM,GAAG36B,8DAAQ,CAAC,QAAD,EAAWoF,CAAX,CAArB;;IACA,QAAQu1B,MAAR;MACI,KAAK,aAAL;QACI,KAAK+8D,WAAL,CAAiB13F,8DAAQ,CAAC,KAAD,EAAQoF,CAAR,CAAzB;QACA;;MACJ,KAAK,eAAL;QACI,KAAKuyF,aAAL,CAAmB33F,8DAAQ,CAAC,KAAD,EAAQoF,CAAR,CAA3B;QACA;;MACJ,KAAK,UAAL;QACI,KAAKwyF,QAAL,CAAc53F,8DAAQ,CAAC,IAAD,EAAOoF,CAAP,CAAtB;QACA;;MACJ,KAAK,cAAL;QACI,KAAKiqG,WAAL,GAAmB,KAAnB;QACA;;MACJ,KAAK,YAAL;QACI,KAAKA,WAAL,GAAmB,KAAnB;QACA,KAAKxX,UAAL,CAAgB73F,8DAAQ,CAAC,IAAD,EAAOoF,CAAP,CAAxB,EAAmCpF,8DAAQ,CAAC,SAAD,EAAYoF,CAAZ,CAA3C;QACA;;MACJ,KAAK,WAAL;QACI,KAAKiqG,WAAL,GAAmB,KAAnB;QACA,KAAKzd,eAAL;QACA;;MACJ,KAAK,gBAAL;QACI,KAAKyd,WAAL,GAAmB,KAAnB;QACA,KAAKnd,cAAL;QACA;IAxBR;EA0BH,CA/BD,CAxvDmD,CAwxDnD;;;EACAkd,WAAW,CAAC3wG,SAAZ,CAAsBy6G,UAAtB,GAAmC,UAAUlyD,KAAV,EAAiB;IAChD;IACA,IAAIytD,WAAW,GAAG,KAAK/9B,OAAL,CAAag+B,qBAAb,EAAlB,CAFgD,CAGhD;;IACA,IAAI/lD,OAAO,GAAG,EAAd;IACA,IAAIwqD,SAAS,GAAI,KAAKt0G,MAAL,CAAYwwE,mBAAZ,CAAgCC,SAAhC,CAA0C/vE,OAA1C,CAAkDpF,KAAlD,KAA4D,EAA5D,IAAkE,KAAK0E,MAAL,CAAY0wE,UAA/E,GAA6F,IAA7F,GAAoG,KAApH;IACA,IAAIiiB,SAAS,GAAG,KAAK3yF,MAAL,CAAYyuE,KAAZ,GAAoB,IAApB,GAA2B,MAA3C;;IACA,IAAI,KAAKzuE,MAAL,CAAYyuE,KAAZ,IAAqB,CAAC6lC,SAA1B,EAAqC;MACjC,KAAK,IAAI54G,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAGwuG,WAAW,CAAC70G,MAAlC,EAA0CW,CAAC,GAAG0F,GAA9C,EAAmD1F,CAAC,EAApD,EAAwD;QACpD,IAAIymD,KAAK,CAAC/kD,OAAN,CAAcjC,8DAAQ,CAACw3F,SAAD,EAAYid,WAAW,CAACl0G,CAAD,CAAvB,CAAtB,MAAuD,CAAC,CAA5D,EAA+D;UAC3DouD,OAAO,CAACtqD,IAAR,CAAaowG,WAAW,CAACl0G,CAAD,CAAxB;QACH;MACJ;IACJ,CAND,MAOK;MACD,KAAK,IAAIA,CAAC,GAAG,CAAR,EAAW0F,GAAG,GAAGwuG,WAAW,CAAC70G,MAAlC,EAA0CW,CAAC,GAAG0F,GAA9C,EAAmD1F,CAAC,EAApD,EAAwD;QACpD,IAAI64G,MAAM,GAAGp5G,8DAAQ,CAAC,YAAD,EAAey0G,WAAW,CAACl0G,CAAD,CAA1B,CAAR,GAAyCP,8DAAQ,CAAC,MAAD,EAASy0G,WAAW,CAACl0G,CAAD,CAApB,CAA9D;;QACA,IAAIymD,KAAK,CAAC/kD,OAAN,CAAcm3G,MAAd,MAA0B,CAAC,CAA/B,EAAkC;UAC9BzqD,OAAO,CAACtqD,IAAR,CAAaowG,WAAW,CAACl0G,CAAD,CAAxB;QACH;MACJ;IACJ;;IACD,OAAOouD,OAAP;EACH,CAvBD;;EAwBAygD,WAAW,CAAC3wG,SAAZ,CAAsBi5F,WAAtB,GAAoC,UAAU7jB,GAAV,EAAe;IAC/C,KAAKhvE,MAAL,CAAYkwE,YAAZ,GAA2B,aAA3B;;IACA,IAAI/zE,uEAAiB,CAAC6yE,GAAD,CAArB,EAA4B;MACxB,KAAKoiB,aAAL;MACA;IACH,CAL8C,CAM/C;;;IACA,IAAItnC,OAAO,GAAG,KAAKuqD,UAAL,CAAgBrlC,GAAhB,CAAd;;IACA,IAAIllB,OAAO,CAAC/uD,MAAR,KAAmB,CAAvB,EAA0B;MACtB;IACH,CAV8C,CAW/C;;;IACA,IAAID,IAAI,GAAG,EAAX;IACA,IAAI6/E,MAAM,GAAG,EAAb;;IACA,KAAK,IAAIj/E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAGouD,OAAO,CAAC/uD,MAA5B,EAAoCW,CAAC,EAArC,EAAyC;MACrCZ,IAAI,CAACY,CAAD,CAAJ,GAAUouD,OAAO,CAACpuD,CAAD,CAAjB;MACAi/E,MAAM,CAACj/E,CAAD,CAAN,GAAYo9E,WAAW,CAAC,KAAK94E,MAAN,EAAclF,IAAI,CAACY,CAAD,CAAlB,CAAvB;IACH;;IACDg/E,aAAa,CAAC,KAAK16E,MAAN,EAAclF,IAAd,EAAoB6/E,MAApB,CAAb;EACH,CAnBD;;EAoBA4vB,WAAW,CAAC3wG,SAAZ,CAAsBk5F,aAAtB,GAAsC,UAAU9jB,GAAV,EAAe;IACjD,IAAI7yE,uEAAiB,CAAC6yE,GAAD,CAArB,EAA4B;MACxB,KAAKuL,UAAL;MACA;IACH,CAJgD,CAKjD;;;IACA,IAAIi6B,QAAQ,GAAG,KAAKH,UAAL,CAAgBrlC,GAAhB,CAAf;;IACA,IAAIwlC,QAAQ,CAACz5G,MAAT,KAAoB,CAAxB,EAA2B;MACvB;IACH,CATgD,CAUjD;;;IACA,IAAID,IAAI,GAAG,EAAX;IACA,IAAI6/E,MAAM,GAAG,EAAb;;IACA,KAAK,IAAIj/E,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG84G,QAAQ,CAACz5G,MAA7B,EAAqCW,CAAC,EAAtC,EAA0C;MACtCZ,IAAI,CAACY,CAAD,CAAJ,GAAU84G,QAAQ,CAAC94G,CAAD,CAAlB;MACAi/E,MAAM,CAACj/E,CAAD,CAAN,GAAYo9E,WAAW,CAAC,KAAK94E,MAAN,EAAclF,IAAI,CAACY,CAAD,CAAlB,CAAvB;IACH;;IACDm/E,eAAe,CAAC,KAAK76E,MAAN,EAAclF,IAAd,EAAoB6/E,MAApB,CAAf;EACH,CAlBD;;EAmBA4vB,WAAW,CAAC3wG,SAAZ,CAAsBm5F,QAAtB,GAAiC,UAAUjqF,EAAV,EAAc;IAC3C,IAAI3M,uEAAiB,CAAC2M,EAAD,CAArB,EAA2B;MACvB;IACH,CAH0C,CAI3C;;;IACA,IAAIghD,OAAO,GAAG,KAAKuqD,UAAL,CAAgB,CAACvrG,EAAD,CAAhB,CAAd;;IACA,IAAIghD,OAAO,CAAC/uD,MAAR,GAAiB,CAArB,EAAwB;MACpB,KAAK61G,WAAL,CAAiB9mD,OAAO,CAAC,CAAD,CAAxB;IACH;EACJ,CATD;;EAUAygD,WAAW,CAAC3wG,SAAZ,CAAsBo5F,UAAtB,GAAmC,UAAUlqF,EAAV,EAAcsS,IAAd,EAAoB;IACnD,KAAKpb,MAAL,CAAYkwE,YAAZ,GAA2B,aAA3B;;IACA,IAAI/zE,uEAAiB,CAAC2M,EAAD,CAArB,EAA2B;MACvB,KAAKuoF,aAAL;MACA;IACH,CALkD,CAMnD;;;IACA,IAAIvnC,OAAO,GAAG,KAAKuqD,UAAL,CAAgB,CAACvrG,EAAD,CAAhB,CAAd;;IACA,IAAIghD,OAAO,CAAC/uD,MAAR,GAAiB,CAArB,EAAwB;MACpBm/E,kBAAkB,CAAC,KAAKl6E,MAAN,EAAc8pD,OAAO,CAAC,CAAD,CAArB,CAAlB;;MACA,IAAI,CAAC3tD,uEAAiB,CAACif,IAAD,CAAtB,EAA8B;QAC1B,IAAIk/D,aAAa,CAAC,KAAKt6E,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAAD,CAAjB,EAA4C;UACxC4K,MAAM,CAAC,KAAK/7E,MAAN,EAAc,KAAKA,MAAL,CAAYuuE,IAA1B,EAAgCnzD,IAAhC,CAAN;QACH,CAFD,MAGK;UACDo3D,kBAAkB,CAAC,KAAKxyE,MAAN,EAAc,KAAKA,MAAL,CAAYmxE,QAAZ,CAAqB,CAArB,CAAd,EAAuCnD,cAAvC,CAAlB;QACH;MACJ,CAPD,MAQK;QACDqM,QAAQ,CAAC,KAAKr6E,MAAN,CAAR;MACH;IACJ;EACJ,CAtBD;;EAuBA,OAAOuqG,WAAP;AACH,CA13D0C,EAA3C;AA43DA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChuWgb;;AAEhb;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,kBAAkB;AAC7B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA,yBAAyB,8DAAQ;AACjC,yCAAyC,SAAS,gBAAgB;AAClE;AACA,6DAA6D,aAAa;AAC1E;AACA;AACA;AACA;AACA,QAAQ,gEAAU,YAAY,kBAAkB;AAChD;AACA,QAAQ,8DAAQ;AAChB,QAAQ,kEAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,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;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;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;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;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;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;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;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;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,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,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;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;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;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,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA,wCAAwC,qBAAqB;AAC7D;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;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,gBAAgB,uBAAuB;AACvC,QAAQ,yCAAyC;AACjD;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAiE;AACjF;AACA,QAAQ,wCAAwC;AAChD;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iDAAiD;AACjE;AACA,QAAQ,2CAA2C;AACnD;AACA,kBAAkB;AAClB;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,gBAAgB,iDAAiD;AACjE;AACA,QAAQ,2CAA2C;AACnD;AACA,kBAAkB;AAClB;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,QAAQ,qDAAqD;AAC7D;AACA,kBAAkB;AAClB;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,QAAQ,4CAA4C;AACpD;AACA,kBAAkB;AAClB;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,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;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;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;AA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sDAAsD;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,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,4BAA4B,yBAAyB;AACrD;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,aAAa;AACb;AACA;AACA,kDAAkD,6DAAW;AAC7D;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,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,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,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,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,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,mBAAmB,sDAAI;AACvB;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,gBAAgB,8DAAQ,0BAA0B,iEAAW;AAC7D;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;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,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,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,uBAAuB,6DAAO;AAC9B,aAAa,uEAAiB;AAC9B,4BAA4B,8DAAQ;AACpC;AACA;AACA,iCAAiC;AACjC;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa;AACb,gBAAgB,8DAAQ;AACxB;AACA,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,sCAAsC,uEAAiB;AACvD;AACA;AACA;AACA,4BAA4B,mFAAiC;AAC7D;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB;AAChD;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;AACA,gBAAgB,8DAAQ,8BAA8B,iEAAW;AACjE;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,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,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;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,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,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,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;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;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2BAA2B;AACnE;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,sEAAe;AAC1C;AACA;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,2BAA2B,0DAAM;AACjC;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA,2BAA2B,iEAAU;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2BAA2B;AACnE;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,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAE0pB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACznE1O;;AAEhb;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,kBAAkB;AAC7B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA,yBAAyB,8DAAQ;AACjC,yCAAyC,SAAS,gBAAgB;AAClE;AACA,6DAA6D,aAAa;AAC1E;AACA;AACA;AACA;AACA,QAAQ,gEAAU,YAAY,kBAAkB;AAChD;AACA,QAAQ,8DAAQ;AAChB,QAAQ,kEAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,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;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;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;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,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA,wCAAwC,qBAAqB;AAC7D;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;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,gBAAgB,uBAAuB;AACvC,QAAQ,yCAAyC;AACjD;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAiE;AACjF;AACA,QAAQ,wCAAwC;AAChD;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iDAAiD;AACjE;AACA,QAAQ,2CAA2C;AACnD;AACA,kBAAkB;AAClB;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,gBAAgB,iDAAiD;AACjE;AACA,QAAQ,2CAA2C;AACnD;AACA,kBAAkB;AAClB;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,QAAQ,qDAAqD;AAC7D;AACA,kBAAkB;AAClB;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,QAAQ,4CAA4C;AACpD;AACA,kBAAkB;AAClB;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,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;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,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,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,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,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,sFAAsF,QAAQ,uEAAiB,wCAAwC;AACvJ;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,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;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;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;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,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,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,qCAAqC;AACrC;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,iBAAiB,6DAAO;AACxB,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA,qCAAqC,mEAAiB;AACtD,mCAAmC,mEAAiB;AACpD;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA;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;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,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;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;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;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;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;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;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;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvvK4V;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,2CAA2C,uEAAiB;AAC5D;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;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,iCAAiC;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,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;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,iBAAiB,uEAAiB;AAClC;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,iCAAiC;AAC/H;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;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,iDAAiD;AACjD;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;AACA,oCAAoC,0DAA0D;AAC9F;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;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;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;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA,2BAA2B,kEAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrqJ6b;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;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;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;AACA,oCAAoC;AACpC;AACA,iEAAiE,+DAAS;AAC1E;AACA,2BAA2B,+DAAS;AACpC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,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,4BAA4B,qEAAmB;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,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;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,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA,wDAAwD;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,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,oBAAoB,uEAAiB;AACrC;AACA;AACA,6DAA6D,kCAAkC;AAC/F;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,YAAY,kEAAgB;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,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,uBAAuB,uEAAiB;AACxC;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;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;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;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;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;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,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;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,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,yBAAyB,uEAAiB;AAC1C;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,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,qCAAqC;AACrC,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,qBAAqB,uEAAiB;AACtC;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,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;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,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;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,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,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,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,yBAAyB,4DAAM;AAC/B,0BAA0B,4DAAM;AAChC;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,gCAAgC,uDAAuD;AACvF;AACA,kCAAkC,6DAAO;AACzC,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,wBAAwB;AACxD;AACA,kCAAkC,6DAAO;AACzC,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;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,4CAA4C,qBAAqB;AACjE,2CAA2C,+DAAS;AACpD;AACA;AACA;AACA,8CAA8C,4DAAM;AACpD;AACA;AACA;AACA,4FAA4F,uEAAiB;AAC7G;AACA,wCAAwC,iEAAW;AACnD;AACA;AACA,wCAAwC,8DAAQ;AAChD;AACA;AACA,2FAA2F,uEAAiB;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,uEAAiB;AAC7G;AACA;AACA,2FAA2F,uEAAiB;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4DAAM;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,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;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,6DAA6D,wBAAwB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;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,iCAAiC,4DAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;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;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;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;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;AACA,gCAAgC,kDAAkD;AAClF;AACA,kCAAkC,6DAAO;AACzC,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,wBAAwB;AACxD;AACA,kCAAkC,6DAAO;AACzC,qBAAqB,uEAAiB;AACtC;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;AACA,qBAAqB,uEAAiB;AACtC;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,6BAA6B,4DAAM,gEAAgE,4DAAM;AACzG,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,4DAAM,mEAAmE,4DAAM;AAC5G,qBAAqB,uEAAiB;AACtC;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,KAAK,+DAAa;AACvD,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;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;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;AACA;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;AACA,gCAAgC,eAAe;AAC/C;AACA;AACA,4CAA4C,uEAAiB,aAAa,uEAAiB;AAC3F;AACA,mCAAmC,4DAAM;AACzC,gFAAgF,uEAAiB;AACjG;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA,gDAAgD,uEAAiB,aAAa,uEAAiB;AAC/F;AACA,uCAAuC,4DAAM;AAC7C,oFAAoF,uEAAiB;AACrG;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,uEAAi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AAmB,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;AACA;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;AACzD;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;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;AAC/C;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;AACA;AACA,6BAA6B,sDAAI;AACjC;AACA;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;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;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;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,oBAAoB,qEAAmB;AACvC,oBAAoB,qEAAmB;AACvC,oBAAoB,qEAAmB;AACvC;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;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,0DAA0D,iCAAiC,iDAAiD;AAC5I;AACA;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,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;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,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,kDAAkD;AAC1G,wDAAwD,+BAA+B;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,8BAA8B;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,4EAA4E,qCAAqC,sKAAsK;AACvR;AACA,+EAA+E;AAC/E,gDAAgD,2DAAM,GAAG,4BAA4B;AACrF;AACA;AACA;AACA;AACA,4BAA4B,kEAAgB;AAC5C;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,QAAQ,8DAAQ;AAChB;AACA,sEAAsE,iDAAiD;AACvH,QAAQ,4DAAM;AACd;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,QAAQ,iEAAW;AACnB;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;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gEAAU,qDAAqD,yBAAyB;AACxG,gBAAgB,gEAAU,sDAAsD,wBAAwB;AACxG,gBAAgB,iEAAW;AAC3B,gBAAgB,8DAAQ;AACxB;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA,qDAAqD,sFAAsF;AAC3I;AACA;AACA;AACA;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,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,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,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,kEAAgB;AAC1D,8DAA8D,kEAAgB;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,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;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,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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+DAAS;AACrB;AACA,6BAA6B,iBAAiB;AAC9C;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;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,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;;AAE0c;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpvjB1B;;AAEhb;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,kBAAkB;AAC7B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA,yBAAyB,8DAAQ;AACjC,yCAAyC,SAAS,gBAAgB;AAClE;AACA,6DAA6D,aAAa;AAC1E;AACA;AACA;AACA;AACA,QAAQ,gEAAU,YAAY,kBAAkB;AAChD;AACA,QAAQ,8DAAQ;AAChB,QAAQ,kEAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,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;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;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;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;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;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;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;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;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,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,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;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;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;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,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA,wCAAwC,qBAAqB;AAC7D;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;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,gBAAgB,uBAAuB;AACvC,QAAQ,yCAAyC;AACjD;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAiE;AACjF;AACA,QAAQ,wCAAwC;AAChD;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iDAAiD;AACjE;AACA,QAAQ,2CAA2C;AACnD;AACA,kBAAkB;AAClB;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,gBAAgB,iDAAiD;AACjE;AACA,QAAQ,2CAA2C;AACnD;AACA,kBAAkB;AAClB;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,QAAQ,qDAAqD;AAC7D;AACA,kBAAkB;AAClB;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,QAAQ,4CAA4C;AACpD;AACA,kBAAkB;AAClB;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,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;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;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,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1gJO;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,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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7lDvG;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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;AACA;AACA;AACA;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,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,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,SAAS;AACT;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,SAAS;AACT;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,SAAS;AACT;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,SAAS;AACT;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,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,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,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,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,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,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,CAAC,0CAA0C;;AAE3C,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;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,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;AACA;AACA;AACA;AACA;AACA;AACA;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;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;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;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;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;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAE+rG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACl6mC/rG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAItM,SAAS,GAAIx+B,MAAD,IAAuC,YAAY;EAC/D,IAAIy+B,aAAa,GAA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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;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;AACA,oBAAoB;AACpB;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;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;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,iCAAiC;AACjC,4BAA4B,iGAAiG;AAC7H;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;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;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,+CAA+C;AAClF;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;AACA,oBAAoB,uEAAiB,iBAAiB,SAAS,gEAAU,iBAAiB;AAC1F;AACA;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,yCAAyC,uEAAiB,uBAAuB,uEAAiB;AAClG,yCAAyC,uEAAiB,uBAAuB,uEAAiB;AAClG;AACA;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,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,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,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,mCAAmC,6DAAO;AAC1C,6CAA6C;AAC7C;AACA;AACA;AACA,wCAAwC,cAAc;AACtD,2CAA2C,4DAAM;AACjD;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,QAAQ,gEAAU,WAAW,uBAAuB;AACpD;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,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,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;AACA;AACA;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,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;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA,8DAA8D,kBAAkB;AAChF;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,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,aAAa,uEAAiB,uBAAuB,uEAAiB;AACtE,uCAAuC,+DAAS;AAChD;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;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;AACA,uBAAuB,kEAAgB;AACvC;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA,+CAA+C,+DAAS;AACxD;AACA,4DAA4D,0BAA0B;AACtF;AACA,oBAAoB,kEAAgB;AACpC;AACA;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;AACA;AACA,oBAAoB,kEAAgB;AACpC,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;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;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;AACA,gBAAgB,qEAAmB;AACnC;AACA;AACA,+CAA+C,+DAAS;AACxD,4DAA4D,0BAA0B;AACtF;AACA,oBAAoB,qEAAmB;AACvC;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA,0DAA0D,2BAA2B;AACrF;AACA;AACA,oBAAoB,qEAAmB;AACvC,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,4BAA4B,+DAAS;AACrC,0DAA0D,6BAA6B;AACvF;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,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;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,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;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;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,aAAa,uEAAiB,qDAAqD,uEAAiB;AACpG;AACA,iBAAiB,uEAAiB,qDAAqD,uEAAiB;AACxG;AACA;AACA,sBAAsB,uEAAiB,sDAAsD,uEAAiB;AAC9G;AACA;AACA,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,gFAAgF,0CAA0C;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB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;AACA;AACA;AACA;AACA;;AACA,IAAI8zb,gBAAgB,GAAG,kBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAI79M,KAAK,GAAG,OAAZ;AACA;AACA;AACA;AACA;;AACA,IAAIn2M,OAAO,GAAG,SAAd;AACA;AACA;AACA;AACA;;AACA,IAAIi4P,OAAO,GAAG,SAAd;AACA;AACA;AACA;AACA;;AACA,IAAIrtH,cAAc,GAAG,gBAArB;AACA;AACA;AACA;AACA;;AACA,IAAIqpR,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,IAAI3hZ,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIrmB,QAAQ,GAAG,UAAf;AACA;AACA;AACA;AACA;;AACA,IAAInS,UAAU,GAAG,YAAjB;AACA;AACA;AACA;AACA;;AACA,IAAI2qP,IAAI,GAAG,MAAX;AACA;AACA;AACA;AACA;;AACA,IAAIC,IAAI,GAAG,MAAX;AACA;AACA;AACA;AACA;;AACA,IAAIwvL,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,IAAI5yZ,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIyO,cAAc,GAAG,gBAArB;AACA;AACA;AACA;AACA;;AACA,IAAIokZ,oBAAoB,GAAG,sBAA3B;AACA;AACA;AACA;AACA;;AACA,IAAIh1G,aAAa,GAAG,eAApB;AACA;AACA;AACA;AACA;;AACA,IAAIi1G,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,IAAIr3c,KAAK,GAAG,OAAZ;AACA;AACA;AACA;AACA;;AACA,IAAIs3c,YAAY,GAAG,cAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIh/J,SAAS,GAAG,WAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIi/J,mBAAmB,GAAG,qBAA1B;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,eAApB;AACA;AACA;AACA;AACA;;AACA,IAAI92d,MAAM,GAAG,QAAb;AACA;AACA;AACA;AACA;;AACA,IAAI+2d,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,IAAI5qb,KAAK,GAAG,eAAZ;AACA;AACA;AACA;AACA;;AACA,IAAI6qb,SAAS,GAAG,aAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,OAAO,GAAG,UAAd;AACA;AACA;AACA;AACA;;AACA,IAAIlvX,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAImvX,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,IAAIz8W,UAAU,GAAG,YAAjB;AACA;AACA;AACA;AACA;;AACA,IAAIE,iBAAiB,GAAG,mBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIikG,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIu4Q,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,IAAIxvd,IAAI,GAAG,MAAX;AACA;AACA;AACA;AACA;;AACA,IAAIyvd,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,kBAAkB,GAAG,oBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,wBAAwB,GAAG,0BAA/B;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,qBAAqB,GAAG,uBAA5B;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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B;AAC7B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA,yBAAyB,8DAAQ;AACjC,yCAAyC,SAAS,gBAAgB;AAClE;AACA,6DAA6D,aAAa;AAC1E;AACA;AACA;AACA;AACA,QAAQ,gEAAU,YAAY,kBAAkB;AAChD;AACA,QAAQ,8DAAQ;AAChB,QAAQ,kEAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,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;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;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;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;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;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,OAAO;AACvD;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;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;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,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,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;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;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;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,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA,wCAAwC,qBAAqB;AAC7D;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;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,gBAAgB,uBAAuB;AACvC,QAAQ,yCAAyC;AACjD;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAiE;AACjF;AACA,QAAQ,wCAAwC;AAChD;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iDAAiD;AACjE;AACA,QAAQ,2CAA2C;AACnD;AACA,kBAAkB;AAClB;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,gBAAgB,iDAAiD;AACjE;AACA,QAAQ,2CAA2C;AACnD;AACA,kBAAkB;AAClB;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,QAAQ,qDAAqD;AAC7D;AACA,kBAAkB;AAClB;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,QAAQ,4CAA4C;AACpD;AACA,kBAAkB;AAClB;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,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;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;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;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AI,2DAAY;AAChB,IAAI,iDAAU;AACd,IAAI,iDAAU;AACd,IAAI,iDAAU;AACd;AACA,2BAA2B,iDAAU,GAAG,8CAAO,IAAI,qDAAM,CAAC,qDAAQ;AAClE,IAAI,iDAAU,uBAAuB,qDAAU;AAC/C,QAAQ,mDAAQ;AAChB,QAAQ,oDAAS;AACjB,QAAQ,mEAAwB;AAChC,QAAQ,2DAAgB;AACxB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;;AAErC;AACA;AACA,WAAW,8DAAgB;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,8CAA8C,cAAc;AAC5D,wDAAwD,cAAc;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,6BAA6B,MAAM;AACnC;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,kCAAkC,uDAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,gDAAgD,+DAAwB;AACjK,mDAAmD,+DAAwB,GAAG,oKAAoK;AAClP,QAAQ,wDAAiB,8EAA8E,uBAAuB;AAC9H,OAAO,YAAY,0FAA0F,aAAa,oCAAoC;AAC9J;AACA,MAAM;AACN;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,qDAAM;AACV,IAAI,iDAAU,gBAAgB,uDAAY;AAC1C;AACA,iDAAU;AACV,IAAI,2DAAY;AAChB,IAAI,iDAAU;AACd,IAAI,iDAAU;AACd,IAAI,iDAAU;AACd;AACA,gCAAgC,iDAAU,GAAG,iDAAU;AACvD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uDAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,4CAA4C,+DAAwB;AACrJ,+CAA+C,+DAAwB,GAAG,wJAAwJ;AAClO,QAAQ,wDAAiB,0EAA0E,uBAAuB;AAC1H,OAAO,YAAY,0FAA0F,aAAa,oCAAoC;AAC9J;AACA,MAAM;AACN;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,qDAAM;AACV,IAAI,iDAAU,gBAAgB,uDAAY;AAC1C;AACA,iDAAU;AACV,IAAI,2DAAY;AAChB,IAAI,iDAAU;AACd,IAAI,iDAAU;AACd,IAAI,iDAAU;AACd;AACA,4BAA4B,iDAAU,GAAG,iDAAU;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uDAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,yCAAyC,+DAAwB;AAC5I,4CAA4C,+DAAwB,GAAG,+IAA+I;AACtN,QAAQ,wDAAiB,uEAAuE,uBAAuB;AACvH,OAAO,YAAY,sBAAsB,aAAa,oCAAoC;AAC1F;AACA,MAAM;AACN;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,qDAAM;AACV,IAAI,iDAAU,gBAAgB,uDAAY;AAC1C;AACA,iDAAU;AACV,IAAI,2DAAY;AAChB,IAAI,iDAAU;AACd,IAAI,iDAAU;AACd,IAAI,iDAAU;AACd;AACA,yBAAyB,iDAAU,GAAG,iDAAU;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C,eAAe,2DAAU;AACzB;AACA;AACA;AACA;AACA,yBAAyB,cAAc;AACvC,eAAe,2DAAU;AACzB;AACA;AACA;AACA;AACA,qBAAqB,cAAc;AACnC,eAAe,2DAAU;AACzB;AACA;AACA;AACA;AACA,2BAA2B,cAAc;AACzC,eAAe,2DAAU;AACzB;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C,eAAe,2DAAU;AACzB;AACA;AACA;AACA;AACA,oBAAoB,sDAAsD;AAC1E,gBAAgB,qBAAqB;AACrC,mDAAmD,2DAAU;AAC7D,kBAAkB,4EAA4E,IAAI,sBAAsB;AACxH;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC,eAAe,2DAAU;AACzB;AACA;AACA;AACA;AACA,kBAAkB,cAAc;AAChC,eAAe,2DAAU;AACzB;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC,eAAe,2DAAU;AACzB;AACA;AACA,uFAAuF,+CAA+C,sDAAe;AACrJ,mDAAmD,gEAAyB,GAAG,6DAA6D,gDAAgD;AAC5L;AACA,MAAM;AACN;AACA,+BAA+B,iDAAU,GAAG,iDAAU;AACtD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6CAA6C;AACzD,YAAY,aAAa;AACzB,YAAY,aAAa;AACzB;AACA;AACA;AACA;AACA,mCAAmC,aAAa;AAChD,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,yDAAyD,wCAAwC,mDAAmD,oFAAoF,mEAA4B,2DAA2D;AAC/T,4CAA4C,gEAAyB,GAAG,sDAAsD,yCAAyC;;AAEvK;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ,oDAAoD,0BAA0B;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,+DAA+D,mCAAmC,+DAAwB,6BAA6B,+DAAwB,CAAC,oDAAS;AACzL,uCAAuC,0DAAmB,GAAG,0DAA0D;AACvH;AACA,MAAM,6BAA6B;AACnC,MAAM,6BAA6B,MAAM,iDAAM,SAAS,oDAAS,IAAI;AACrE;AACA,mBAAmB,iDAAU,GAAG,8CAAO,IAAI,qDAAM,CAAC,oDAAS;AAC3D,IAAI,iDAAU;AACd;;AAEA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,6CAA6C;AACzD;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,yCAAyC,+DAAwB;AAC5I,6CAA6C,0DAAmB,GAAG,sEAAsE;AACzI;AACA,MAAM;AACN;AACA,yBAAyB,iDAAU,GAAG,iDAAU;AAChD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uDAAY,IAAI;AACzC,4BAA4B,yCAAO;AACnC;AACA;AACA;AACA;AACA,sBAAsB,yDAAS;AAC/B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4CAAU;AAC7B;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,2DAA2D,iCAAiC,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,qDAAQ;AACtN,oCAAoC,+DAAwB,GAAG,mEAAmE,gDAAgD,aAAa,qBAAqB;AACpN;AACA,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,gCAAgC,MAAM,iDAAM,SAAS,qDAAQ,IAAI;AACvE;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,qDAAM;AACV,IAAI,iDAAU;AACd;AACA,iBAAiB,iDAAU,GAAG,8CAAO,IAAI,qDAAM,CAAC,qDAAQ;AACxD,IAAI,iDAAU,uBAAuB,oDAAS;AAC9C,QAAQ,qDAAU;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uDAAY,IAAI;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,wCAAwC,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,iDAAa,GAAG,+DAAwB,CAAC,oDAAgB;AAChP,2CAA2C,+DAAwB,GAAG,kFAAkF,8BAA8B;AACtL;AACA,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,iDAAM,EAAE;AACpB,MAAM,MAAM,oDAAS;AACrB;AACA,iDAAU;AACV,IAAI,qDAAM;AACV,IAAI,iDAAU;AACd;AACA,wBAAwB,iDAAU,GAAG,iDAAU,uBAAuB,qDAAU;AAChF,QAAQ,iDAAM;AACd,QAAQ,oDAAS;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAY;AAC3B;AACA;AACA,eAAe,iEAAiB;AAChC;AACA;AACA,eAAe,2DAAW;AAC1B;AACA;AACA,yDAAyD,gCAAgC,sDAAe;AACxG,oCAAoC,gEAAyB,GAAG,8CAA8C,iCAAiC;AAC/I;AACA,MAAM;AACN;AACA,gBAAgB,iDAAU,GAAG,iDAAU;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2BAA2B;AACvC,YAAY,6BAA6B;AACzC,YAAY,aAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yBAAyB;AAC7D;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA,UAAU,2DAAU,kCAAkC;AACtD,UAAU;AACV;AACA;AACA;AACA,aAAa,EAAE;AACf;AACA;AACA;AACA;AACA,sBAAsB,2DAAU,kCAAkC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA,uCAAuC,2DAAU;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,cAAc;AACvC,kBAAkB,2DAAU,gCAAgC;AAC5D;AACA;AACA;AACA;AACA;AACA,uBAAuB,eAAe;AACtC;AACA,iDAAiD,eAAe;AAChE;AACA;AACA,QAAQ,2DAAU,sCAAsC;AACxD,QAAQ,YAAY,SAAS,2DAAU;AACvC;AACA;AACA,iCAAiC,2DAAU,+BAA+B;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,eAAe;AAC5C;AACA,QAAQ,YAAY;AACpB,mBAAmB,2DAAU;AAC7B;AACA;AACA,0CAA0C,2DAAU,sCAAsC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;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,uDAAuD,+BAA+B,sDAAe,CAAC,2DAAqB;AAC3H,mCAAmC,gEAAyB,GAAG,6CAA6C,gCAAgC;AAC5I;AACA,MAAM,MAAM,2DAAc;AAC1B;AACA,eAAe,iDAAU,GAAG,iDAAU,uBAAuB,2DAAc;AAC3E;;AAEA;AACA;AACA;AACA;AACA,QAAQ,mCAAmC;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ,iDAAiD,0BAA0B;AAClH;AACA;AACA;AACA;AACA,+DAA+D,mCAAmC,+DAAwB,oBAAoB,+DAAwB,CAAC,oDAAS;AAChL,uCAAuC,0DAAmB,GAAG,0DAA0D;AACvH;AACA,MAAM,oBAAoB;AAC1B,MAAM,6BAA6B,MAAM,iDAAM,SAAS,oDAAS,IAAI;AACrE;AACA,mBAAmB,iDAAU,GAAG,8CAAO,IAAI,qDAAM,CAAC,oDAAS;AAC3D,IAAI,iDAAU;AACd;;AAEA,mBAAmB,yDAAc;AACjC;AACA;AACA;AACA;AACA,YAAY,6DAA6D;AACzE;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA;AACA,yBAAyB,cAAc;AACvC;AACA;AACA;AACA;AACA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA;AACA;AACA;AACA,2BAA2B,cAAc;AACzC;AACA;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA;AACA;AACA,oBAAoB,sDAAsD;AAC1E,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA,kBAAkB,4EAA4E,IAAI,sBAAsB;AACxH;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA,qFAAqF,8CAA8C,sDAAe,UAAU,sDAAe;AAC3K,kDAAkD,gEAAyB,GAAG,4DAA4D,+CAA+C;AACzL;AACA,MAAM,gCAAgC,MAAM,iDAAM,mBAAmB,GAAG;AACxE,MAAM;AACN;AACA,8BAA8B,iDAAU,GAAG,8CAAO,IAAI,qDAAM;AAC5D,IAAI,iDAAU;AACd;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C,iDAAiD,iBAAiB;AAClE;AACA;AACA;AACA;AACA,yBAAyB,cAAc;AACvC,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,2BAA2B,cAAc;AACzC,iDAAiD,iBAAiB;AAClE;AACA;AACA;AACA;AACA,8BAA8B,eAAe;AAC7C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,sDAAsD;AAC1E,gBAAgB,qBAAqB;AACrC;AACA;AACA;AACA;AACA,SAAS;AACT,kBAAkB,4EAA4E,IAAI,sBAAsB;AACxH;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC,iDAAiD,iBAAiB;AAClE;AACA;AACA;AACA;AACA,kBAAkB,cAAc;AAChC,iDAAiD,iBAAiB;AAClE;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,qFAAqF,8CAA8C,sDAAe;AAClJ,kDAAkD,gEAAyB,GAAG,4DAA4D,+CAA+C;AACzL;AACA,MAAM;AACN;AACA,8BAA8B,iDAAU,GAAG,iDAAU;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,gFAAgF;;AAEjF;AACA;AACA;AACA;AACA;AACA,YAAY,4CAA4C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE,0CAA0C,8DAAuB,GAAG,4BAA4B;AAChG,0CAA0C,8DAAuB,GAAG,YAAY,2DAAc,cAAc,yDAAY,IAAI;;AAE5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,uDAAY;AAChD;AACA;AACA;AACA,8BAA8B,uDAAY;AAC1C;AACA;AACA;AACA,gCAAgC,uDAAY;AAC5C;AACA;AACA;AACA,uCAAuC,uDAAY;AACnD;AACA;AACA;AACA,qCAAqC,uDAAY;AACjD;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,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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A;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,oCAAoC,uDAAY;AAChD;AACA;AACA;AACA,gCAAgC,uDAAY;AAC5C;AACA;AACA;AACA,qCAAqC,uDAAY;AACjD;AACA;AACA;AACA;AACA,oCAAoC,uDAAY;AAChD;AACA;AACA;AACA,sCAAsC,uDAAY;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,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,gEAAgE;AAChE;AACA;AACA;AACA,SAAS;AACT;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,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,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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iBAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;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,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iEAAiE,qHAAqH;AACtL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,mBAAmB;AAC1E;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa,wEAAwE;AACrF;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM,mCAAmC,6CAAM;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,iCAAiC,WAAW,mCAAmC,WAAW;AAC1F;AACA;AACA;AACA,iFAAiF,4CAA4C,+DAAwB,CAAC,4DAAwB,GAAG,+DAAwB,iBAAiB,+DAAwB,CAAC,oDAAS,GAAG,+DAAwB;AACvR,+CAA+C,+DAAwB,GAAG,oFAAoF,s6BAAs6B,aAAa,4LAA4L,aAAa,kEAA2B,8mJAA8mJ;AACn6L,QAAQ,4DAAqB;AAC7B,QAAQ,wDAAiB,qIAAqI,2CAA2C,8HAA8H,0BAA0B,kBAAkB,2BAA2B,wHAAwH,wCAAwC;AAC9iB,QAAQ,0DAAmB;AAC3B,QAAQ,wDAAiB;AACzB,QAAQ,4DAAqB;AAC7B,QAAQ,wDAAiB,uFAAuF,+BAA+B,wFAAwF,+BAA+B;AACtQ,QAAQ,wDAAiB;AACzB,QAAQ,4DAAqB;AAC7B,QAAQ,wDAAiB;AACzB,QAAQ,0DAAmB;AAC3B,MAAM;AACN,QAAQ,uDAAgB;AACxB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kB;AACtC;AACA,QAAQ,uDAAgB;AACxB,QAAQ,wDAAiB,2EAA2E,6DAAsB,6GAA6G,yDAAkB,oEAAoE,yDAAkB;AAC/U,OAAO,eAAe,iDAAW,EAAE,6DAAuB,WAAW,sDAAgB,qBAAqB;AAC1G;AACA,MAAM,mBAAmB;AACzB,MAAM,MAAM,iDAAM;AAClB;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU;AACd;AACA,iDAAU;AACV,IAAI,oDAAK;AACT,IAAI,iDAAU,gBAAgB,sDAAW;AACzC;AACA,6CAA6C,iDAAU,GAAG,iDAAU,oCAAoC,iDAAM;AAC9G;;AAEA;AACA;AACA,mEAAmE;AACnE,wCAAwC,8DAAuB,GAAG,0BAA0B;AAC5F,wCAAwC,8DAAuB,GAAG;AAClE,YAAY,yDAAY;AACxB,YAAY,uEAAe;AAC3B,YAAY,2EAAiB;AAC7B;AACA,WAAW,uEAAe;AAC1B,QAAQ,2EAAiB,GAAG;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,sCAAsC,uDAAY;AAClD;AACA;AACA;AACA,qCAAqC,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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2DAAc;AAC1C;AACA,aAAa;AACb,KAAK,iBAAiB;AACtB,eAAe,mDAAmD,gEAAyB,yBAAyB,4BAA4B,qTAAqT,yBAAyB,QAAQ,yDAAY,IAAI,yBAAyB,uTAAuT,IAAI;AAC10B,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;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,2BAA2B,sCAAsC;AACjE,4CAA4C,+BAA+B;AAC3E;AACA;AACA,kCAAkC,+BAA+B;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,kCAAkC;AAClC;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,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,4DAAwB,EAAE,IAAI,qBAAqB,IAAI;AAC7F,sBAAsB,iDAAM;AAC5B,uBAAuB,oDAAS;AAChC,aAAa,GAAG,IAAI,mBAAmB,IAAI,IAAI;AAC/C,kBAAkB,gDAAK;AACvB,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;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,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;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;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,YAAY,IAAI;AACtC,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2BAA2B;AACvC;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C,uBAAuB,uCAAuC;AAC9D;AACA,4CAA4C,cAAc;AAC1D,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gCAAgC;AACxD,wBAAwB,wCAAwC;AAChE;AACA,mCAAmC,uBAAuB;AAC1D,0CAA0C,mCAAmC;AAC7E,iCAAiC;AACjC;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,aAAa;AACb,KAAK,iBAAiB,YAAY,IAAI;AACtC,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,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;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,6BAA6B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,wBAAwB,cAAc;AACtC,wBAAwB,wCAAwC;AAChE;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA;AACA,yBAAyB,uCAAuC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,mCAAmC;AACrE;AACA;AACA,kCAAkC,mCAAmC;AACrE;AACA;AACA;AACA,gBAAgB;AAChB;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,aAAa;AACb,KAAK,iBAAiB,YAAY,IAAI;AACtC,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;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,mDAAQ;AACtB;AACA,0BAA0B,yDAAY,EAAE,2EAAiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2EAAiB;AACrC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;AACtB,eAAe,mDAAmD,gEAAyB,wBAAwB,4BAA4B,oIAAoI,yBAAyB,QAAQ,yDAAY,EAAE,2EAAiB,0BAA0B,yBAAyB,QAAQ,2EAAiB,gIAAgI,IAAI;AACniB,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kBAAkB;AAC3C;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,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6CAA6C;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,kDAAkD;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,kDAAkD,oBAAoB,IAAI;AAC1E;AACA,qCAAqC,uBAAuB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,YAAY;AAC3C;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,+BAA+B,aAAa;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,oDAAoD;AACpD;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;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,8BAA8B,gDAAgD;AAC9E;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uBAAuB;AAChE;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,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;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,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,4DAAwB,EAAE,IAAI,qBAAqB,IAAI;AAC7F,sBAAsB,iDAAM;AAC5B,uBAAuB,oDAAS;AAChC,aAAa,GAAG,IAAI,mBAAmB,IAAI,IAAI;AAC/C,kBAAkB,gDAAK;AACvB,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;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;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,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,gDAAK;AACvB,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;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;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,8CAA8C,+BAA+B;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,wCAAwC,gBAAgB;AACxD;AACA;AACA;AACA,gBAAgB,yDAAyD;AACzE;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,YAAY,IAAI;AACtC,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;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,wCAAwC,qBAAqB;AAC7D,+CAA+C,qBAAqB;AACpE;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,YAAY,IAAI;AACtC,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;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;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;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,OAAO;AACP;AACA;AACA;AACA,aAAa;AACb,KAAK,WAAW;AAChB,kBAAkB,gDAAK;AACvB,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;AAChB,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;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,OAAO;AACP;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,mBAAmB,IAAI,MAAM,iDAAa,EAAE,IAAI,IAAI;AACpF,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AAC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ClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;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,mCAAmC,uDAAY;AAC/C;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,uCAAuC,uDAAY;AACnD;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA;AACA;AACA,2BAA2B,uDAAY;AACvC;AACA;AACA;AACA,gCAAgC,yCAAO;AACvC;AACA;AACA;AACA,gCAAgC,yCAAO;AACvC;AACA;AACA;AACA,8BAA8B,yCAAO;AACrC;AACA,4BAA4B,yCAAO;AACnC,+BAA+B;AAC/B;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,uDAAuD,sDAAM;AAC7D,oBAAoB;AACpB;AACA,gCAAgC,wDAAQ;AACxC,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,aAAa;AACb,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B,+CAA+C,4CAAU;AACzD,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B,4BAA4B;AAC5B;AACA;AACA,aAAa,QAAQ,yDAAS,uBAAuB,mDAAG;AACxD,wBAAwB;AACxB;AACA;AACA,uBAAuB,GAAG;AAC1B,qCAAqC,yCAAO;AAC5C,uBAAuB,GAAG;AAC1B,oCAAoC,+CAAa;AACjD;AACA,wBA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CpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA,WAAW,uEAAuE;AAClF;AACA,wBAAwB;AACxB;AACA;AACA,qCAAqC,MAAM;AAC3C,aAAa;AACb;AACA,wBAAwB;AACxB;AACA;AACA;AACA,+BAA+B,GAAG;AAClC,qDAAqD,WAAW,MAAM,WAAW;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B,4BAA4B;AAC5B;AACA;AACA;AACA,iBAAiB;AACjB;AACA,2BAA2B,GAAG;AAC9B,4BAA4B;AAC5B;AACA;AACA;AACA,iBAAiB;AACjB;AACA,2BAA2B,GAAG;AAC9B,4BAA4B;AAC5B;AACA;AACA;AACA,iBAAiB;AACjB;AACA,2BAA2B,GAAG;AAC9B,4BAA4B;AAC5B;AACA;AACA;AACA,iBAAiB;AACjB;AACA,2BAA2B,GAAG;AAC9B,4BAA4B;AAC5B;AACA;AACA;AACA,iBAAiB;AACjB;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,iBAAiB;AACjB;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,wCAAwC,gDAAS;AACjD,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA,aAAa;AACb,uBAAuB,GAAG;AAC1B,sCAAsC,gDAAS;AAC/C;AACA,aAAa;AACb,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,yBAAyB,GAAG;AAC5B,gCAAgC,GAAG;AACnC,SAAS;AACT;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB;AAChB;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;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA,mEAAmE,qCAAqC,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,mBAAmB,+DAAwB,CAAC,iDAAa,GAAG,+DAAwB,CAAC,2DAAuB,GAAG,+DAAwB,wCAAwC,+DAAwB,CAAC,sDAAQ;AACza,wCAAwC,+DAAwB,GAAG,2EAA2E,obAAob,aAAa,kJAAkJ,aAAa,kEAA2B,GAAG;AAC5wB;AACA;AACA,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,uBAAuB;AAC7B,MAAM,MAAM,iDAAM,EAAE;AACpB,MAAM,MAAM,2DAAgB,EAAE;AAC9B,MAAM,wDAAwD,MAAM,mDAAQ,EAAE,GAAG;AACjF,MAAM,gCAAgC,MAAM,iDAAM,SAAS,sDAAQ,IAAI;AACvE;AACA;AACA,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,qBAAqB,MAAM,gDAAK,EAAE;AAClC,yBAAyB,MAAM,gDAAK,EAAE;AACtC,yCAAyC,MAAM,gDAAK,EAAE;AACtD,qBAAqB,MAAM,gDAAK,EAAE;AAClC,mBAAmB,MAAM,gDAAK,EAAE;AAChC,wBAAwB,MAAM,gDAAK,EAAE;AACrC,6BAA6B,MAAM,gDAAK,EAAE;AAC1C,6BAA6B,MAAM,gDAAK,EAAE;AAC1C,4BAA4B,MAAM,gDAAK,EAAE;AACzC,mBAAmB,MAAM,gDAAK,EAAE;AAChC,wBAAwB,MAAM,iDAAM,EAAE;AACtC,kBAAkB,MAAM,iDAAM,EAAE;AAChC,4BAA4B,MAAM,iDAAM,EAAE;AAC1C,iBAAiB,MAAM,iDAAM,EAAE;AAC/B,gBAAgB,MAAM,iDAAM,EAAE;AAC9B;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,qDAAiB,EAAE,IAAI,MAAM,oDAAgB,EAAE,IAAI,uBAAuB,IAAI,MAAM,iDAAa,EAAE,IAAI,MAAM,2DAAuB,EAAE,IAAI;AAChL,sBAAsB,mDAAQ;AAC9B,aAAa,GAAG,IAAI;AACpB,sBAAsB,iDAAM;AAC5B,uBAAuB,sDAAQ;AAC/B,aAAa,GAAG,IAAI,IAAI;AACxB,kBAAkB,gDAAK;AACvB,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;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,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,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA;AACA;AACA,wBAAwB,uDAAY,IAAI;AACxC;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,aAAa;AACb,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B,yCAAyC,mDAAG;AAC5C,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA,eAAe,oCAAoC;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B,kGAAkG,GAAG;AACrG,2BAA2B,GAAG;AAC9B;AACA,wCAAwC,0BAA0B;AAClE;AACA;AACA;AACA,kFAAkF,GAAG;AACrF;AACA;AACA;AACA;AACA,aAAa;AACb,uBAAuB,GAAG;AAC1B,oDAAoD,qEAAoB;AACxE,uBAAuB,GAAG;AAC1B;AACA;AACA,sBAAsB,sDAAM;AAC5B,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AA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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;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,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;AACO;AACP;AACA;AACA,8CAA8C,8DAA8D;AAC5G,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,uOAAuO,4BAA4B;AACnQ;AACA;AACA;AACA;AACA,0CAA0C,4BAA4B;AACtE,gDAAgD,sCAAsC;AACtF;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mCAAmC,sBAAsB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,iBAAiB;AACjB,KAAK;AACL,+BAA+B,6BAA6B;AAC5D,+BAA+B,oBAAoB;AACnD,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,KAAK,IAAI;AACT;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,aAAa;AACb;AACA;AACA,+CAA+C,4BAA4B;AAC3E,4CAA4C,4BAA4B;AACxE;AACA,4CAA4C,iBAAiB,UAAU,SAAS,IAAI;AACpF;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,2CAA2C,cAAc,YAAY;AACrE,aAAa;AACb,uCAAuC,WAAW,oBAAoB;AACtE,SAAS;AACT;AACA,iGAAiG,yBAAyB;AAC1H;AACA,4CAA4C,oCAAoC;AAChF;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,YAAY,wCAAwC;AAC3F,SAAS;AACT;AACA;AACA;AACA;AACA,iHAAiH,sCAAsC;AACvJ;AACA,+CAA+C,YAAY,0EAA0E,yBAAyB,iBAAiB;AAC/K;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;AACO;AACP,wmBAAwmB,4BAA4B,qFAAqF,4BAA4B;AACrvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,yCAAyC,4BAA4B;AACrE,mCAAmC,4BAA4B;AAC/D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,4BAA4B;AACtE;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sCAAsC;AAC1D;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD;AACA,yDAAyD,qDAAqD;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,UAAU;AAC9B;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,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uBAAuB;AACxE;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,qCAAqC;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,0EAA0E,kCAAkC;AAC5G;AACA,iDAAiD,sBAAsB;AACvE;AACA;AACA,KAAK;AACL;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;AACxC;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,yBAAyB,oBAAoB;AAC7C;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kEAAkE;AAC5D;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,KAAK;AACL;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnpBkU;AAC3T;AACP;AACA,iBAAiB,gDAAO;AACxB,kBAAkB,gDAAQ;AAC1B,oBAAoB,gDAAU;AAC9B,oBAAoB,gDAAU;AAC9B,0BAA0B,gDAAgB;AAC1C,6BAA6B,gDAAmB;AAChD,6BAA6B,gDAAmB;AAChD,kBAAkB,gDAAQ;AAC1B,oBAAoB,gDAAU;AAC9B,mBAAmB,gDAAS;AAC5B,gBAAgB,iDAAM;AACtB,kBAAkB,iDAAQ;AAC1B,mBAAmB,iDAAS;AAC5B,qBAAqB,iDAAW;AAChC,sBAAsB,iDAAY;AAClC,aAAa,iDAAG;AAChB,kBAAkB,iDAAQ;AAC1B,oBAAoB,iDAAU;AAC9B,oBAAoB,iDAAU;AAC9B,uBAAuB,iDAAa;AACpC,sBAAsB,iDAAY;AAClC,qBAAqB,iDAAW;AAChC,kBAAkB,iDAAQ;AAC1B,oBAAoB,iDAAU;AAC9B;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5B4H;AAC7E;;AAEP;AACxC;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,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB;AACvB;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,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA,0CAA0C,YAAY;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,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8HAA8H;AAC9H;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,UAAU;AACV;AACA;AACA;AACA,kDAAkD;AAClD,qEAAqE;AACrE;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE;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,UAAU;AACV;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA,sCAAsC,uDAAY;AAClD,qCAAqC,uDAAY;AACjD,8BAA8B,uDAAY;AAC1C;AACA,+BAA+B,uDAAY;AAC3C,mCAAmC,uDAAY;AAC/C;AACA;AACA;AACA;AACA,4BAA4B,wCAAwC;AACpE,4BAA4B,4CAA4C;AACxE,6BAA6B,2CAA2C;AACxE,6BAA6B,+CAA+C;AAC5E,6BAA6B,2CAA2C;AACxE;AACA;AACA,6BAA6B;AAC7B;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,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA,uDAAuD;AACvD;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,uCAAuC,QAAQ;AAC/C;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,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,sBAAsB,+DAAwB,CAAC,qDAAiB;AACrG,yBAAyB,+DAAwB,GAAG,4FAA4F;AAChJ,QAAQ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AAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA,6BAA6B,eAAe;AAC5C;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA,6BAA6B,eAAe;AAC5C;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA,0BAA0B,sDAAsD;AAChF,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA,wBAAwB,uCAAuC;AAC/D,eAAe,GAAG;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iDAAiD;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,0BAA0B;AAC1G;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,yBAAyB;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,oBAAoB;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,+BAA+B,uDAAY;AAC3C;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,2BAA2B,yCAAO;AAClC;AACA;AACA;AACA,6BAA6B,yCAAO;AACpC;AACA;AACA;AACA,6BAA6B,yCAAO;AACpC,4BAA4B,yCAAO;AACnC,gCAAgC,yCAAO;AACvC;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB,2BAA2B,2CAAK;AAChC,mBAAmB,GAAG;AACtB,2BAA2B,2CAAK,8DAA8D,mDAAG,IAAI,OAAO;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,GAAG,qDAAK;AACjB,mBAAmB,GAAG;AACtB,yBAAyB,2CAAK;AAC9B,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mCAAmC;AACnC;AACA;AACA,kBAAkB,yDAAS,oBAAoB,mDAAG;AAClD;AACA;AACA,SAAS,GAAG,yDAAS,qEAAqE,uCAAK,GAAG,yDAAS,4BAA4B,0DAAS;AAChJ,0BAA0B,kBAAkB;AAC5C,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,uBAAuB,GAAG;AAC1B;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,mBAAmB,GAAG;AACtB;AACA,kBAAkB,yDAAQ;AAC1B;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,2BAA2B,GAAG;AAC9B,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,GAAG,IAAI,2CAAK,iBAAiB,qDAAI,UAAU,mDAAG,yCAAyC,yDAAQ;AAC/H,sBAAsB,mDAAG;AACzB;AACA;AACA;AACA;AACA,aAAa;AACb,sBAAsB,uDAAM;AAC5B;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA,aAAa;AACb,sBAAsB,mDAAG;AACzB,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,sBAAsB,0DAAS,CAAC,2CAAK;AACrC,SAAS;AACT,kBAAkB,uDAAM;AACxB;AACA,kBAAkB,mDAAG,IAAI,kBAAkB;AAC3C,uDAAuD,GAAG,8CAA8C,GAAG;AAC3G,SAAS;AACT,kBAAkB,uDAAM;AACxB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,kBAAkB,uDAAM;AACxB;AACA;AACA;AACA;AACA,2CAA2C,GAAG;AAC9C,sDAAsD,GAAG;AACzD;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA,SAAS,GAAG,0DAAS;AACrB;AACA;AACA,8EAA8E,uBAAuB;AACrG,6EAA6E,sBAAsB;AACnG,2EAA2E,oBAAoB;AAC/F,4EAA4E,qBAAqB;AACjG;AACA;AACA;AACA;AACA;AACA,+CAA+C,GAAG;AAClD,0DAA0D,GAAG;AAC7D;AACA,yBAAyB;AACzB;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA,wBAAwB,GAAG;AAC3B,SAAS;AACT;AACA,kBAAkB,mDAAG,IAAI,yBAAyB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,SAAS;AACT,kBAAkB,uDAAM;AACxB;AACA,SAAS,GAAG,0DAAS;AACrB;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,gCAAgC;AAC5G,2EAA2E,+BAA+B;AAC1G,8EAA8E,kCAAkC;AAChH,6EAA6E,iCAAiC;AAC9G;AACA;AACA,4BAA4B,GAAG,uDAAuD,GAAG;AACzF;AACA,4BAA4B,GAAG,wDAAwD,GAAG;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,2EAA2E;AAC3E,qBAAqB;AACrB,iBAAiB;AACjB;AACA,SAAS;AACT,sBAAsB,0DAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,GAAG;AACtD,8DAA8D,GAAG;AACjE,0DAA0D,GAAG;AAC7D,6BAA6B;AAC7B,mDAAmD,GAAG;AACtD,yBAAyB;AACzB,qBAAqB;AACrB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,YAAY,mEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,qCAAqC,+DAAwB,CAAC,sDAAW,GAAG,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,iDAAa;AAC9Q,wCAAwC,+DAAwB,GAAG,2EAA2E,sWAAsW,aAAa,0EAA0E,yCAAyC,kEAA2B,GAAG;AAClpB;AACA;AACA,MAAM,gCAAgC,MAAM,iDAAM,SAAS,sDAAW,IAAI,GAAG;AAC7E,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,iDAAM;AAClB;AACA;AACA,uBAAuB,MAAM,gDAAK,EAAE;AACpC,oBAAoB,MAAM,gDAAK,EAAE;AACjC,0BAA0B,MAAM,gDAAK,EAAE;AACvC,uBAAuB,MAAM,gDAAK,EAAE;AACpC,sBAAsB,MAAM,gDAAK,EAAE;AACnC,8BAA8B,MAAM,gDAAK,EAAE;AAC3C,gCAAgC,MAAM,gDAAK,EAAE;AAC7C,6BAA6B,MAAM,gDAAK,EAAE;AAC1C,4BAA4B,MAAM,gDAAK,EAAE;AACzC,oBAAoB,MAAM,iDAAM,EAAE;AAClC,iBAAiB,MAAM,iDAAM,EAAE;AAC/B,kBAAkB,MAAM,iDAAM,EAAE;AAChC;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU;AAChC,sBAAsB,iDAAM;AAC5B,uBAAuB,sDAAW;AAClC,aAAa,GAAG,IAAI,MAAM,oDAAgB,EAAE,IAAI,MAAM,qDAAiB,EAAE,IAAI,MAAM,iDAAa,EAAE,IAAI,IAAI;AAC1G,kBAAkB,gDAAK;AACvB,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;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA,+BAA+B,6CAAU;AACzC,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA,gCAAgC,GAAG;AACnC;AACA;AACA,SAAS,OAAO,qDAAK;AACrB,+BAA+B,6CAAU;AACzC,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA,gCAAgC,GAAG;AACnC;AACA;AACA,SAAS,OAAO,qDAAK;AACrB,6BAA6B,6CAAU;AACvC,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA,aAAa;AACb;AACA;AACA;AACA,gCAAgC,GAAG;AACnC,gCAAgC,GAAG;AACnC;AACA;AACA,SAAS,OAAO,qDAAK;AACrB;AACA;;AAEA;AACA;AACA,cAAc,wEAAwE;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,0BAA0B;AACpE;AACA;AACA;AACA;AACA;AACA,gFAAgF,0BAA0B;AAC1G;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yCAAO;AACnC;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB,gBAAgB,2CAAK;AACrB;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,yBAAyB,GAAG;AAC5B;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,eAAe,gDAAS,6CAA6C,0DAAS;AAC9E;AACA;AACA,yEAAyE,wCAAwC,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,iDAAa,GAAG,+DAAwB;AAC3Q,2CAA2C,+DAAwB,GAAG,iFAAiF,wEAAwE;AAC/N;AACA;AACA,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,iDAAM,EAAE;AACpB,MAAM,yCAAyC,MAAM,mDAAQ,EAAE;AAC/D;AACA;AACA,oBAAoB,MAAM,gDAAK,EAAE;AACjC,2BAA2B,MAAM,gDAAK,EAAE;AACxC;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,oDAAgB,EAAE,IAAI,MAAM,qDAAiB,EAAE,IAAI,MAAM,iDAAa,EAAE,IAAI;AAClH,sBAAsB,mDAAQ;AAC9B,aAAa,GAAG,IAAI,IAAI;AACxB,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;;AAEhB;AACA;AACA,cAAc,wEAAwE;AACtF;AACA;AACA;AACA,6DAA6D;AAC7D,qCAAqC,8DAAuB,GAAG,uBAAuB;AACtF,qCAAqC,8DAAuB,GAAG;AAC/D,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,mDAAQ;AACtB;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;AACtB,eAAe,mDAAmD,gEAAyB,oBAAoB,iHAAiH,IAAI;;AAEpO;AACA;AACA,cAAc,wEAAwE;AACtF;;AAEA;AACA;AACA,cAAc,wEAAwE;AACtF;;AAEsE;;;;;;;;;;;;;;;;;;ACr/BtE;AACO;AACP;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;;;;;;;;;;;;;;;ACfe;AACf;AACA;AACA;AACA;;;;;;;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACO;AACP;AACA;;;;;;;;;;;;;;;ACZe;AACf;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;ACZmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB,eAAe,mEAAS;;AAExB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;ACtCmD;AACO;AACD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,eAAe,mEAAS;AACxB,SAAS,qEAAe;AACxB;;;;;;;;;;;;;;;;;;AC3BmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,kBAAkB,4DAAM;AACxB,eAAe,mEAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;AC3BmD;AACO;AACD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,eAAe,mEAAS;AACxB,SAAS,qEAAe;AACxB;;;;;;;;;;;;;;;;;;AC3BmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB,eAAe,mEAAS;;AAExB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;AChEmD;AACO;AACD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,eAAe,mEAAS;AACxB,SAAS,qEAAe;AACxB;;;;;;;;;;;;;;;;;;AC1BmD;AACT;AACe;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,eAAe,mEAAS;AACxB;AACA,SAAS,6DAAO;AAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEO;;;;;;;;;;;;;;;;;;ACtLwF;AAC/C;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,uBAAuB,gEAAU;AACjC,wBAAwB,gEAAU;AAClC,iDAAiD,yFAA+B;AAChF,mDAAmD,yFAA+B,mBAAmB;AACrG;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;;AC7CwC;AACoC;AACnB,CAAC;AAC1D;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ,cAAc,0BAA0B;AACxC,IAAI;AACJ;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,aAAa,QAAQ;AACrB,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;;;AAGe;AACf,EAAE,sEAAY;AACd,iBAAiB,4DAAM;AACvB,kBAAkB,4DAAM;AACxB;AACA,4BAA4B,8EAAwB;AACpD,4DAA4D;AAC5D;;AAEA;AACA,uDAAuD;;AAEvD;AACA;;;;;;;;;;;;;;;;;AClFwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,SAAS,4DAAM,uBAAuB,4DAAM;AAC5C;;;;;;;;;;;;;;;;;;;AC5B6D;AACe;AACnB;AACY;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,8EAAwB,wBAAwB,qEAAoB;AACjF,SAAS,gFAAiB;AAC1B;;;;;;;;;;;;;;;;;;ACxC4E;AACnB;AACY;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,8EAAwB;AACrC,SAAS,gFAAiB;AAC1B;;;;;;;;;;;;;;;;;AChCwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB;AACA;AACA;;;;;;;;;;;;;;;;;AC1BwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC5BoE;AAC5B;AACW;AACM;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ,iEAAiE;AACpF,WAAW,eAAe;AAC1B,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,iBAAiB;AAChF;AACA;AACe;AACf;;AAEA,EAAE,sEAAY;AACd,uBAAuB,+EAAiB;AACxC,qBAAqB,mEAAS,22BAA22B;;AAEz4B;AACA;AACA;;AAEA,aAAa,4DAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACjDwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB;AACA;AACA;;;;;;;;;;;;;;;;;ACzBwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,eAAe;AAC5B,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB;AACA;AACA;;;;;;;;;;;;;;;;;ACzBwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC7BwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB;AACA;AACA;;;;;;;;;;;;;;;;;;ACzBwC;AACgB;AACC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB;AACA;AACA;AACA;AACA,wBAAwB,oEAAc;AACtC;AACA;AACA;AACA,wBAAwB,oEAAc;;AAEtC;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;;;;;;;;;;;;;;;;;;AC5CwC;AACgB;AACQ;AACP;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB,aAAa,oEAAc,mBAAmB,wEAAkB,kBAAkB;AAClF;AACA;;AAEA;AACA;;;;;;;;;;;;;;;;;ACjCwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB;AACA;AACA;;;;;;;;;;;;;;;;;ACzBwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB;AACA;AACA;;;;;;;;;;;;;;;;;ACzBwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,SAAS,4DAAM;AACf;;;;;;;;;;;;;;;;;ACvBgD;AACS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,2BAA2B,gEAAU;AACrC,4BAA4B,gEAAU;AACtC;AACA;;;;;;;;;;;;;;;;;ACpCwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,iBAAiB,4DAAM;AACvB,kBAAkB,4DAAM;AACxB;AACA;;;;;;;;;;;;;;;;;AC/BsD;AACG;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,aAAa,SAAS;AACtB,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;;AAEe;AACf,EAAE,sEAAY;AACd,8BAA8B,mEAAa;AAC3C,+BAA+B,mEAAa;AAC5C;AACA;;;;;;;;;;;;;;;;;AC7CwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,iBAAiB;AAC5B,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,kBAAkB;;AAElB;AACA,kCAAkC;AAClC,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,4DAAM;;AAE5B;AACA;AACA;AACA,GAAG;AACH;AACA;;;;;;;;;;;;;;;;;;AC/CmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB,mBAAmB,mEAAS;AAC5B;AACA;AACA;;;;;;;;;;;;;;;;;;AC5BmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB,cAAc,mEAAS;AACvB;AACA;AACA;;;;;;;;;;;;;;;;;;AC5BmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB,gBAAgB,mEAAS;AACzB;AACA;AACA;;;;;;;;;;;;;;;;;;;AC5BmD;AACX;AACgB;AACC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB,cAAc,mEAAS;AACvB;AACA;AACA;AACA;AACA;AACA,oBAAoB,oEAAc,wBAAwB;AAC1D;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;ACrCmD;AACX;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB,aAAa,mEAAS,aAAa;;AAEnC;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;ACjCwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB;AACA;AACA;;;;;;;;;;;;;;;;;;AC1BwD;AACA;AACC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,oEAAc;AAC3B;AACA;AACA;AACA,aAAa,oEAAc;AAC3B;AACA;;;;;;;;;;;;;;;;;ACjCkD;AACO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,SAAS,iEAAW;AACpB;AACA,GAAG;AACH;;;;;;;;;;;;;;;;;AC5BwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB;AACA;AACA;;;;;;;;;;;;;;;;;AC1BwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC3BwC;AACiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,aAAa,4DAAM;AACnB;AACA;AACA;;;;;;;;;;;;;;;;;;;AC1BwC;AACW;AACM;AACW;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ,iEAAiE;AACpF,WAAW,eAAe;AAC1B,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,iBAAiB;AAClF;AACA;;AAEe;AACf;;AAEA,EAAE,sEAAY;AACd,uBAAuB,+EAAiB;AACxC,qBAAqB,mEAAS,22BAA22B;;AAEz4B;AACA;AACA;;AAEA,aAAa,4DAAM;AACnB;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACjD0C;AACe;AACN;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,eAAe,mEAAS;AACxB,SAAS,6DAAO;AAChB;;;;;;;;;;;;;;;;;;AC1BmD;AACL;AACW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,eAAe,mEAAS;AACxB,SAAS,+DAAS;AAClB;;;;;;;;;;;;;;;;;;AC1BmD;AACP;AACa;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,eAAe,mEAAS;AACxB,SAAS,8DAAQ;AACjB;;;;;;;;;;;;;;;;AC1ByD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,MAAM;AACnB,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,EAAE,sEAAY;AACd,yDAAyD;;AAEzD;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA,0OAA0O;;AAE1O;AACA;;AAEA;AACA;AACA;;;;;;;;;;ACnDA;;AAEA;AACA,EAAE,KAA4D;AAC9D,EAAE,CACwG;AAC1G,CAAC,uBAAuB;;AAExB;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,kFAAkF;AAClF;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,2CAA2C,SAAS;;AAEpD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6FAA6F,aAAa;AAC1G;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6EAA6E,eAAe;AAC5F;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,k/BAAk/B;;AAEl/B;AACA,wYAAwY;AACxY;AACA;AACA;;AAEA;AACA,gTAAgT;AAChT;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8BAA8B,EAAE,iBAAiB,EAAE,MAAM;;AAEzD;AACA,sDAAsD;;AAEtD,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,2BAA2B;AACxC,aAAa,UAAU;AACvB,cAAc,oBAAoB;AAClC;AACA;;;AAGA;AACA;AACA;AACA,MAAM;AACN;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;;AAEN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,0CAA0C;AAC1C;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA,kBAAkB,sBAAsB;AACxC,kBAAkB,sBAAsB;AACxC,kBAAkB,SAAS;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA,2CAA2C;AAC3C;;AAEA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA,sKAAsK;;AAEtK;AACA;AACA,QAAQ;AACR;;AAEA,wDAAwD;AACxD,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,sDAAsD;AACtD,sDAAsD;AACtD;AACA,uDAAuD;;AAEvD,uDAAuD;;AAEvD,sEAAsE;;AAEtE,4DAA4D;;AAE5D,oDAAoD;;AAEpD,4CAA4C;;AAE5C,8DAA8D;;AAE9D,8DAA8D;;AAE9D,4CAA4C;;AAE5C,iDAAiD;;AAEjD,iDAAiD;;AAEjD,wCAAwC;;AAExC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA,kCAAkC;AAClC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,QAAQ;AACR;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA,oDAAoD;AACpD,6CAA6C,yDAAyD;AACtG;AACA;AACA;;AAEA,kDAAkD;AAClD;AACA;AACA;;AAEA,kCAAkC;AAClC;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB,iBAAiB,SAAS;AAC1B;AACA;AACA;;AAEA;AACA,2CAA2C;AAC3C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA,UAAU;AACV;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;;;AAGA;AACA;AACA,UAAU;AACV;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;;;AAGA;AACA,QAAQ;AACR;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;;;AAGA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,MAAM;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA,SAAS;AACT;;AAEA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA,YAAY;AACZ,UAAU;AACV;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,UAAU;AAC1B;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,UAAU,WAAW;AACrB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B,gBAAgB,UAAU;AAC1B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB,gBAAgB,SAAS;AACzB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB,gBAAgB,SAAS;AACzB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,MAAM;AACtB,gBAAgB,QAAQ;AACxB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,MAAM;AACvB,iBAAiB,SAAS;AAC1B;;;AAGA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;;AAGA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC,QAAQ;AACjD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,SAAS;AACzB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;;;AAG5C,wFAAwF,+DAA+D;AACvJ;AACA;AACA;AACA;AACA;AACA,uTAAuT;AACvT;AACA;AACA;;AAEA,QAAQ,wCAAwC,sFAAsF,oKAAoK,qHAAqH,mBAAmB;AAClb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,MAAM;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,sCAAsC;;AAEtC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C;;AAE7C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;;;AAGA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,QAAQ;AACvB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,UAAU;AACV;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,SAAS;AACzB;;;AAGA;AACA;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,UAAU;AACzB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,gBAAgB,UAAU;AAC1B;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,CAAC;;;;;;;;;;;;AC3mDD,wEAAiD;;;;;;;;;;ACDjD,aAAa,mEAA4C;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;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,oCAAoC;AAC/C;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;AC5MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;AAGD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS,YAAY;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa,wEAAiD;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA,MAAM;AACN,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,+CAA+C;AAC/C,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,IAAI;;AAEJ;;AAEA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;;;;;;;;;AClKD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,sDAAsD,SAAS;AAC/D;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,kBAAkB;AAClB,kDAAkD,SAAS;AAC3D;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,QAAQ,KAA0B;AAClC;AACA,MAAM,SAAS,IAA0C;AACzD,QAAQ,iCAAO,EAAE,mCAAE;AACnB;AACA,SAAS;AAAA,kGAAC;AACV,MAAM,KAAK,EAEN;;AAEL,CAAC;;;;;;;;;;;;;ACzDD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAE,aAAW;EAEX;EACA,IAAIl7G,SAAJ;EAEA;;EACA,IAAImxlB,OAAO,GAAG,SAAd;EAEA;;EACA,IAAIC,gBAAgB,GAAG,GAAvB;EAEA;;EACA,IAAIC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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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,SAASwkmB,MAAT,CAAgB5imB,KAAhB,EAAuB;MACrB,IAAI6imB,YAAY,CAAC7imB,KAAD,CAAZ,IAAuB,CAACgC,OAAO,CAAChC,KAAD,CAA/B,IAA0C,EAAEA,KAAK,YAAY8imB,WAAnB,CAA9C,EAA+E;QAC7E,IAAI9imB,KAAK,YAAY+imB,aAArB,EAAoC;UAClC,OAAO/imB,KAAP;QACD;;QACD,IAAImD,cAAc,CAACoB,IAAf,CAAoBvE,KAApB,EAA2B,aAA3B,CAAJ,EAA+C;UAC7C,OAAOgjmB,YAAY,CAAChjmB,KAAD,CAAnB;QACD;MACF;;MACD,OAAO,IAAI+imB,aAAJ,CAAkB/imB,KAAlB,CAAP;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAIijmB,UAAU,GAAI,YAAW;MAC3B,SAASvxZ,MAAT,GAAkB,CAAE;;MACpB,OAAO,UAASwxZ,KAAT,EAAgB;QACrB,IAAI,CAAClimB,QAAQ,CAACkimB,KAAD,CAAb,EAAsB;UACpB,OAAO,EAAP;QACD;;QACD,IAAI/C,YAAJ,EAAkB;UAChB,OAAOA,YAAY,CAAC+C,KAAD,CAAnB;QACD;;QACDxxZ,MAAM,CAACpzM,SAAP,GAAmB4kmB,KAAnB;QACA,IAAI5gmB,MAAM,GAAG,IAAIovM,MAAJ,EAAb;QACAA,MAAM,CAACpzM,SAAP,GAAmBF,SAAnB;QACA,OAAOkE,MAAP;MACD,CAXD;IAYD,CAdiB,EAAlB;IAgBA;AACJ;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CJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASi9c,cAAT,CAAwB/4mB,KAAxB,EAA+BslD,SAA/B,EAA0C;MACxC,OAAQtlD,KAAK,IAAIA,KAAK,CAACvE,MAAhB,GACHqzmB,SAAS,CAAC9umB,KAAD,EAAQmsmB,WAAW,CAAC7mjB,SAAD,EAAY,CAAZ,CAAnB,EAAmC,IAAnC,EAAyC,IAAzC,CADN,GAEH,EAFJ;IAGD;IAED;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;;;IACI,SAAS0zjB,SAAT,CAAmBh5mB,KAAnB,EAA0BslD,SAA1B,EAAqC;MACnC,OAAQtlD,KAAK,IAAIA,KAAK,CAACvE,MAAhB,GACHqzmB,SAAS,CAAC9umB,KAAD,EAAQmsmB,WAAW,CAAC7mjB,SAAD,EAAY,CAAZ,CAAnB,EAAmC,IAAnC,CADN,GAEH,EAFJ;IAGD;IAED;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;;;IACI,SAASorR,IAAT,CAAc1wU,KAAd,EAAqBhE,KAArB,EAA4BU,KAA5B,EAAmC6d,GAAnC,EAAwC;MACtC,IAAI9e,MAAM,GAAGuE,KAAK,IAAI,IAAT,GAAgB,CAAhB,GAAoBA,KAAK,CAACvE,MAAvC;;MACA,IAAI,CAACA,MAAL,EAAa;QACX,OAAO,EAAP;MACD;;MACD,IAAIiB,KAAK,IAAI,OAAOA,KAAP,IAAgB,QAAzB,IAAqCo1mB,cAAc,CAAC9xmB,KAAD,EAAQhE,KAAR,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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;;;IACI,SAAS++mB,cAAT,CAAwBx6mB,KAAxB,EAA+BslD,SAA/B,EAA0C;MACxC,OAAQtlD,KAAK,IAAIA,KAAK,CAACvE,MAAhB,GACHqzmB,SAAS,CAAC9umB,KAAD,EAAQmsmB,WAAW,CAAC7mjB,SAAD,EAAY,CAAZ,CAAnB,EAAmC,KAAnC,EAA0C,IAA1C,CADN,GAEH,EAFJ;IAGD;IAED;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;;;IACI,SAASm1jB,SAAT,CAAmBz6mB,KAAnB,EAA0BslD,SAA1B,EAAqC;MACnC,OAAQtlD,KAAK,IAAIA,KAAK,CAACvE,MAAhB,GACHqzmB,SAAS,CAAC9umB,KAAD,EAAQmsmB,WAAW,CAAC7mjB,SAAD,EAAY,CAAZ,CAAnB,CADN,GAEH,EAFJ;IAGD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAIo1jB,KAAK,GAAG3N,QAAQ,CAAC,UAAS9E,MAAT,EAAiB;MACpC,OAAOwG,QAAQ,CAAC5H,WAAW,CAACoB,MAAD,EAAS,CAAT,EAAY4D,iBAAZ,EAA+B,IAA/B,CAAZ,CAAf;IACD,CAFmB,CAApB;IAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAI8O,OAAO,GAAG5N,QAAQ,CAAC,UAAS9E,MAAT,EAAiB;MACtC,IAAIhR,QAAQ,GAAGprd,IAAI,CAACo8d,MAA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,MAAM,CAACxsmB,MAAM,GAAG,CAAV,CAAnB,GAAkCrB,SADjD;MAGA68lB,QAAQ,GAAG,OAAOA,QAAP,IAAmB,UAAnB,IAAiCgR,MAAM,CAACpqhB,GAAP,IAAco5gB,QAA/C,IAA2D78lB,SAAtE;MACA,OAAO6gnB,SAAS,CAAChT,MAAD,EAAShR,QAAT,CAAhB;IACD,CANqB,CAAtB;IAQA;;IAEA;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;;IACI,SAASykB,KAAT,CAAe1/mB,KAAf,EAAsB;MACpB,IAAIsC,MAAM,GAAGsgmB,MAAM,CAAC5imB,KAAD,CAAnB;MACAsC,MAAM,CAACihmB,SAAP,GAAmB,IAAnB;MACA,OAAOjhmB,MAAP;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASg8C,GAAT,CAAat+C,KAAb,EAAoB2/mB,WAApB,EAAiC;MAC/BA,WAAW,CAAC3/mB,KAAD,CAAX;MACA,OAAOA,KAAP;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASs3mB,IAAT,CAAct3mB,KAAd,EAAqB2/mB,WAArB,EAAkC;MAChC,OAAOA,WAAW,CAAC3/mB,KAAD,CAAlB;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAI4/mB,SAAS,GAAGzI,QAAQ,CAAC,UAAS5+gB,KAAT,EAAgB;MACvC,IAAI94F,MAAM,GAAG84F,KAAK,CAAC94F,MAAnB;MAAA,IACIiB,KAAK,GAAGjB,MAAM,GAAG84F,KAAK,CAAC,CAAD,CAAR,GAA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,eAAe,CAACxlmB,MAAD,EAAS1B,GAAT,EAAc,CAAd,CAAf;MACD;IACF,CAN6B,CAA9B;IAQA;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;;IACI,SAASknF,KAAT,CAAeglE,UAAf,EAA2BxjG,SAA3B,EAAsCusjB,KAAtC,EAA6C;MAC3C,IAAI/a,IAAI,GAAG94lB,OAAO,CAAC8qJ,UAAD,CAAP,GAAsBuuc,UAAtB,GAAmCiP,SAA9C;;MACA,IAAIuL,KAAK,IAAIC,cAAc,CAAChpd,UAAD,EAAaxjG,SAAb,EAAwBusjB,KAAxB,CAA3B,EAA2D;QACzDvsjB,SAAS,GAAGlrD,SAAZ;MACD;;MACD,OAAO08lB,IAAI,CAAChuc,UAAD,EAAaqjd,WAAW,CAAC7mjB,SAAD,EAAY,CAAZ,CAAxB,CAAX;IACD;IAED;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;;;IACI,SAAS5xB,MAAT,CAAgBo1H,UAAhB,EAA4BxjG,SAA5B,EAAuC;MACrC,IAAIwxiB,IAAI,GAAG94lB,OAAO,CAAC8qJ,UAAD,CAAP,GAAsBwuc,WAAtB,GAAoCsP,UAA/C;MACA,OAAO9P,IAAI,CAAChuc,UAAD,EAAaqjd,WAAW,CAAC7mjB,SAAD,EAAY,CAAZ,CAAxB,CAAX;IACD;IAED;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;;;IACI,IAAImpL,IAAI,GAAGukY,UAAU,CAACptZ,SAAD,CAArB;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAI22Z,QAAQ,GAAGvJ,UAAU,CAACiG,aAAD,CAAzB;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,SAASuD,OAAT,CAAiB1zd,UAAjB,EAA6Bmuc,QAA7B,EAAuC;MACrC,OAAO4P,WAAW,CAAC7hmB,GAAG,CAAC8jJ,UAAD,EAAamuc,QAAb,CAAJ,EAA4B,CAA5B,CAAlB;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASwlB,WAAT,CAAqB3zd,UAArB,EAAiCmuc,QAAjC,EAA2C;MACzC,OAAO4P,WAAW,CAAC7hmB,GAAG,CAAC8jJ,UAAD,EAAamuc,QAAb,CAAJ,EAA4B5J,QAA5B,CAAlB;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASqvB,YAAT,CAAsB5zd,UAAtB,EAAkCmuc,QAAlC,EAA4CvuZ,KAA5C,EAAmD;MACjDA,KAAK,GAAGA,KAAK,KAAKtuM,SAAV,GAAsB,CAAtB,GAA0BssmB,SAAS,CAACh+Z,KAAD,CAA3C;MACA,OAAOm+Z,WAAW,CAAC7hmB,GAAG,CAAC8jJ,UAAD,EAAamuc,QAAb,CAAJ,EAA4BvuZ,KAA5B,CAAlB;IACD;IAED;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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AAR;MAGA,OAAOrB,MAAP;IACD,CATuB,CAAxB;IAWA;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;;IACI,IAAIy+mB,KAAK,GAAGvL,gBAAgB,CAAC,UAASlzmB,MAAT,EAAiBtC,KAAjB,EAAwBY,GAAxB,EAA6B;MACxDknmB,eAAe,CAACxlmB,MAAD,EAAS1B,GAAT,EAAcZ,KAAd,CAAf;IACD,CAF2B,CAA5B;IAIA;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;;IACI,SAASgJ,GAAT,CAAa8jJ,UAAb,EAAyBmuc,QAAzB,EAAmC;MACjC,IAAIH,IAAI,GAAG94lB,OAAO,CAAC8qJ,UAAD,CAAP,GAAsB8uc,QAAtB,GAAiCqT,OAA5C;MACA,OAAOnU,IAAI,CAAChuc,UAAD,EAAaqjd,WAAW,CAAClV,QAAD,EAAW,CAAX,CAAxB,CAAX;IACD;IAED;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;;;IACI,SAAS+lB,OAAT,CAAiBl0d,UAAjB,EAA6B03c,SAA7B,EAAwC0L,MAAxC,EAAgD2F,KAAhD,EAAuD;MACrD,IAAI/od,UAAU,IAAI,IAAlB,EAAwB;QACtB,OAAO,EAAP;MACD;;MACD,IAAI,CAAC9qJ,OAAO,CAACwimB,SAAD,CAAZ,EAAyB;QACvBA,SAAS,GAAGA,SAAS,IAAI,IAAb,GAAoB,EAApB,GAAyB,CAACA,SAAD,CAArC;MACD;;MACD0L,MAAM,GAAG2F,KAAK,GAAGz3mB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,CAACs+mB,YAAD,EAAevY,IAAf,CAApB;QACD;;QACD,OAAOvnmB,MAAP;MACD;;MACDsgnB,SAAS,CAAC/5lB,MAAV,GAAmBA,MAAnB;MACA+5lB,SAAS,CAACD,KAAV,GAAkBA,KAAlB;MACA,OAAOC,SAAP;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAIE,KAAK,GAAG/R,QAAQ,CAAC,UAASjW,IAAT,EAAen3lB,IAAf,EAAqB;MACxC,OAAOimmB,SAAS,CAAC9O,IAAD,EAAO,CAAP,EAAUn3lB,IAAV,CAAhB;IACD,CAFmB,CAApB;IAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAIH,KAAK,GAAGutmB,QAAQ,CAAC,UAASjW,IAAT,EAAe+O,IAAf,EAAqBlmmB,IAArB,EAA2B;MAC9C,OAAOimmB,SAAS,CAAC9O,IAAD,EAAOke,QAAQ,CAACnP,IAAD,CAAR,IAAkB,CAAzB,EAA4BlmmB,IAA5B,CAAhB;IACD,CAFmB,CAApB;IAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,SAASo/mB,IAAT,CAAcjoB,IAAd,EAAoB;MAClB,OAAO8e,UAAU,CAAC9e,IAAD,EAAOjK,cAAP,CAAjB;IACD;IAED;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;;;IACI,SAASirB,OAAT,CAAiBhhB,IAAjB,EAAuB1qe,QAAvB,EAAiC;MAC/B,IAAI,OAAO0qe,IAAP,IAAe,UAAf,IAA8B1qe,QAAQ,IAAI,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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASjggB,IAAT,CAAc76F,KAAd,EAAqBwjP,OAArB,EAA8B;MAC5B,OAAO6/X,OAAO,CAAChQ,YAAY,CAAC7vX,OAAD,CAAb,EAAwBxjP,KAAxB,CAAd;IACD;IAED;;IAEA;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;;;IACI,SAAS4jnB,SAAT,GAAqB;MACnB,IAAI,CAACrhnB,SAAS,CAAC9C,MAAf,EAAuB;QACrB,OAAO,EAAP;MACD;;MACD,IAAIO,KAAK,GAAGuC,SAAS,CAAC,CAAD,CAArB;MACA,OAAOP,OAAO,CAAChC,KAAD,CAAP,GAAiBA,KAAjB,GAAyB,CAACA,KAAD,CAAhC;IACD;IAED;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;;;IACI,SAAS8C,KAAT,CAAe9C,KAAf,EAAsB;MACpB,OAAOwomB,SAAS,CAACxomB,KAAD,EAAQiwlB,kBAAR,CAAhB;IACD;IAED;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;;;IACI,SAAS4zB,SAAT,CAAmB7jnB,KAAnB,EAA0B0omB,UAA1B,EAAsC;MACpCA,UAAU,GAAG,OAAOA,UAAP,IAAqB,UAArB,GAAkCA,UAAlC,GAA+CtqmB,SAA5D;MACA,OAAOoqmB,SAAS,CAACxomB,KAAD,EAAQiwlB,kBAAR,EAA4ByY,UAA5B,CAAhB;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASob,SAAT,CAAmB9jnB,KAAnB,EAA0B;MACxB,OAAOwomB,SAAS,CAACxomB,KAAD,EAAQ+vlB,eAAe,GAAGE,kBAA1B,CAAhB;IACD;IAED;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;;;IACI,SAAS8zB,aAAT,CAAuB/jnB,KAAvB,EAA8B0omB,UAA9B,EAA0C;MACxCA,UAAU,GAAG,OAAOA,UAAP,IAAqB,UAArB,GAAkCA,UAAlC,GAA+CtqmB,SAA5D;MACA,OAAOoqmB,SAAS,CAACxomB,KAAD,EAAQ+vlB,eAAe,GAAGE,kBAA1B,EAA8CyY,UAA9C,CAAhB;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASsb,UAAT,CAAoBtya,MAApB,EAA4BnyM,MAA5B,EAAoC;MAClC,OAAOA,MAAM,IAAI,IAAV,IAAkBoqmB,cAAc,CAACj4Z,MAAD,EAASnyM,MAAT,EAAiBkB,IAAI,CAAClB,MAAD,CAArB,CAAvC;IACD;IAED;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;;;IACI,SAASsomB,EAAT,CAAY7nmB,KAAZ,EAAmBihT,KAAnB,EAA0B;MACxB,OAAOjhT,KAAK,KAAKihT,KAAV,IAAoBjhT,KAAK,KAAKA,KAAV,IAAmBihT,KAAK,KAAKA,KAAxD;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAIgjU,EAAE,GAAGlL,yBAAyB,CAACnN,MAAD,CAAlC;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAIsY,GAAG,GAAGnL,yBAAyB,CAAC,UAAS/4mB,KAAT,EAAgBihT,KAAhB,EAAuB;MACzD,OAAOjhT,KAAK,IAAIihT,KAAhB;IACD,CAFkC,CAAnC;IAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAIimT,WAAW,GAAGsF,eAAe,CAAC,YAAW;MAAE,OAAOjqmB,SAAP;IAAmB,CAAhC,EAAD,CAAf,GAAsDiqmB,eAAtD,GAAwE,UAASxsmB,KAAT,EAAgB;MACxG,OAAO6imB,YAAY,CAAC7imB,KAAD,CAAZ,IAAuBmD,cAAc,CAACoB,IAAf,CAAoBvE,KAApB,EAA2B,QAA3B,CAAvB,IACL,CAACogmB,oBAAoB,CAAC77lB,IAArB,CAA0BvE,KAA1B,EAAiC,QAAjC,CADH;IAED,CAHD;IAKA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAIgC,OAAO,GAAGD,KAAK,CAACC,OAApB;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAIo4lB,aAAa,GAAGD,iBAAiB,GAAGmD,SAAS,CAACnD,iBAAD,CAAZ,GAAkCsS,iBAAvE;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,SAASyC,WAAT,CAAqBlvmB,KAArB,EAA4B;MAC1B,OAAOA,KAAK,IAAI,IAAT,IAAiBsumB,QAAQ,CAACtumB,KAAK,CAACP,MAAP,CAAzB,IAA2C,CAAC2rmB,UAAU,CAACprmB,KAAD,CAA7D;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAAS6vmB,iBAAT,CAA2B7vmB,KAA3B,EAAkC;MAChC,OAAO6imB,YAAY,CAAC7imB,KAAD,CAAZ,IAAuBkvmB,WAAW,CAAClvmB,KAAD,CAAzC;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASmknB,SAAT,CAAmBnknB,KAAnB,EAA0B;MACxB,OAAOA,KAAK,KAAK,IAAV,IAAkBA,KAAK,KAAK,KAA5B,IACJ6imB,YAAY,CAAC7imB,KAAD,CAAZ,IAAuB0rmB,UAAU,CAAC1rmB,KAAD,CAAV,IAAqBgylB,OAD/C;IAED;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAImP,QAAQ,GAAGD,cAAc,IAAI0a,SAAjC;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAIx9iB,MAAM,GAAGi8hB,UAAU,GAAGiD,SAAS,CAACjD,UAAD,CAAZ,GAA2BqS,UAAlD;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,SAASrqb,SAAT,CAAmBriL,KAAnB,EAA0B;MACxB,OAAO6imB,YAAY,CAAC7imB,KAAD,CAAZ,IAAuBA,KAAK,CAACu0B,QAAN,KAAmB,CAA1C,IAA+C,CAACk8B,aAAa,CAACzwD,KAAD,CAApE;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASormB,UAAT,CAAoBprmB,KAApB,EAA2B;MACzB,IAAI,CAACgB,QAAQ,CAAChB,KAAD,CAAb,EAAsB;QACpB,OAAO,KAAP;MACD,CAHwB,CAIzB;MACA;;;MACA,IAAI0iM,GAAG,GAAGgpa,UAAU,CAAC1rmB,KAAD,CAApB;MACA,OAAO0iM,GAAG,IAAI0vZ,OAAP,IAAkB1vZ,GAAG,IAAI2vZ,MAAzB,IAAmC3vZ,GAAG,IAAIqvZ,QAA1C,IAAsDrvZ,GAAG,IAAIiwZ,QAApE;IACD;IAED;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;;;IACI,SAASpoZ,SAAT,CAAmBvqM,KAAnB,EAA0B;MACxB,OAAO,OAAOA,KAAP,IAAgB,QAAhB,IAA4BA,KAAK,IAAI0qmB,SAAS,CAAC1qmB,KAAD,CAArD;IACD;IAED;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;;;IACI,SAASsumB,QAAT,CAAkBtumB,KAAlB,EAAyB;MACvB,OAAO,OAAOA,KAAP,IAAgB,QAAhB,IACLA,KAAK,GAAG,CAAC,CADJ,IACSA,KAAK,GAAG,CAAR,IAAa,CADtB,IAC2BA,KAAK,IAAIsxlB,gBAD3C;IAED;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAAStwlB,QAAT,CAAkBhB,KAAlB,EAAyB;MACvB,IAAI+P,IAAI,GAAG,OAAO/P,KAAlB;MACA,OAAOA,KAAK,IAAI,IAAT,KAAkB+P,IAAI,IAAI,QAAR,IAAoBA,IAAI,IAAI,UAA9C,CAAP;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAAS8ylB,YAAT,CAAsB7imB,KAAtB,EAA6B;MAC3B,OAAOA,KAAK,IAAI,IAAT,IAAiB,OAAOA,KAAP,IAAgB,QAAxC;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAIu6lB,KAAK,GAAGD,SAAS,GAAGgD,SAAS,CAAChD,SAAD,CAAZ,GAA0BsT,SAA/C;IAEA;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;;IACI,SAAS72E,OAAT,CAAiBrlV,MAAjB,EAAyBnyM,MAAzB,EAAiC;MAC/B,OAAOmyM,MAAM,KAAKnyM,MAAX,IAAqBsumB,WAAW,CAACn8Z,MAAD,EAASnyM,MAAT,EAAiB4vmB,YAAY,CAAC5vmB,MAAD,CAA7B,CAAvC;IACD;IAED;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;;;IACI,SAAS+knB,WAAT,CAAqB5ya,MAArB,EAA6BnyM,MAA7B,EAAqCmpmB,UAArC,EAAiD;MAC/CA,UAAU,GAAG,OAAOA,UAAP,IAAqB,UAArB,GAAkCA,UAAlC,GAA+CtqmB,SAA5D;MACA,OAAOyvmB,WAAW,CAACn8Z,MAAD,EAASnyM,MAAT,EAAiB4vmB,YAAY,CAAC5vmB,MAAD,CAA7B,EAAuCmpmB,UAAvC,CAAlB;IACD;IAED;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;;;IACI,SAAS13lB,KAAT,CAAehR,KAAf,EAAsB;MACpB;MACA;MACA;MACA,OAAO0K,QAAQ,CAAC1K,KAAD,CAAR,IAAmBA,KAAK,IAAI,CAACA,KAApC;IACD;IAED;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;;;IACI,SAASuknB,QAAT,CAAkBvknB,KAAlB,EAAyB;MACvB,IAAI27mB,UAAU,CAAC37mB,KAAD,CAAd,EAAuB;QACrB,MAAM,IAAIgF,KAAJ,CAAUyqlB,eAAV,CAAN;MACD;;MACD,OAAOwe,YAAY,CAACjumB,KAAD,CAAnB;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASixD,MAAT,CAAgBjxD,KAAhB,EAAuB;MACrB,OAAOA,KAAK,KAAK,IAAjB;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASwknB,KAAT,CAAexknB,KAAf,EAAsB;MACpB,OAAOA,KAAK,IAAI,IAAhB;IACD;IAED;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;;;IACI,SAAS0K,QAAT,CAAkB1K,KAAlB,EAAyB;MACvB,OAAO,OAAOA,KAAP,IAAgB,QAAhB,IACJ6imB,YAAY,CAAC7imB,KAAD,CAAZ,IAAuB0rmB,UAAU,CAAC1rmB,KAAD,CAAV,IAAqBuylB,SAD/C;IAED;IAED;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;;;IACI,SAAS9hiB,aAAT,CAAuBzwD,KAAvB,EAA8B;MAC5B,IAAI,CAAC6imB,YAAY,CAAC7imB,KAAD,CAAb,IAAwB0rmB,UAAU,CAAC1rmB,KAAD,CAAV,IAAqByylB,SAAjD,EAA4D;QAC1D,OAAO,KAAP;MACD;;MACD,IAAIyQ,KAAK,GAAGhD,YAAY,CAAClgmB,KAAD,CAAxB;;MACA,IAAIkjmB,KAAK,KAAK,IAAd,EAAoB;QAClB,OAAO,IAAP;MACD;;MACD,IAAIgT,IAAI,GAAG/ymB,cAAc,CAACoB,IAAf,CAAoB2+lB,KAApB,EAA2B,aAA3B,KAA6CA,KAAK,CAAChimB,WAA9D;MACA,OAAO,OAAOg1mB,IAAP,IAAe,UAAf,IAA6BA,IAAI,YAAYA,IAA7C,IACL1W,YAAY,CAACj7lB,IAAb,CAAkB2xmB,IAAlB,KAA2BrW,gBAD7B;IAED;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAIpF,QAAQ,GAAGD,YAAY,GAAG8C,SAAS,CAAC9C,YAAD,CAAZ,GAA6B2T,YAAxD;IAEA;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;;IACI,SAASsW,aAAT,CAAuBzknB,KAAvB,EAA8B;MAC5B,OAAOuqM,SAAS,CAACvqM,KAAD,CAAT,IAAoBA,KAAK,IAAI,CAACsxlB,gBAA9B,IAAkDtxlB,KAAK,IAAIsxlB,gBAAlE;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAIqJ,KAAK,GAAGD,SAAS,GAAG4C,SAAS,CAAC5C,SAAD,CAAZ,GAA0B0T,SAA/C;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,SAASyS,QAAT,CAAkB7gnB,KAAlB,EAAyB;MACvB,OAAO,OAAOA,KAAP,IAAgB,QAAhB,IACJ,CAACgC,OAAO,CAAChC,KAAD,CAAR,IAAmB6imB,YAAY,CAAC7imB,KAAD,CAA/B,IAA0C0rmB,UAAU,CAAC1rmB,KAAD,CAAV,IAAqB8ylB,SADlE;IAED;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAAS0X,QAAT,CAAkBxqmB,KAAlB,EAAyB;MACvB,OAAO,OAAOA,KAAP,IAAgB,QAAhB,IACJ6imB,YAAY,CAAC7imB,KAAD,CAAZ,IAAuB0rmB,UAAU,CAAC1rmB,KAAD,CAAV,IAAqB+ylB,SAD/C;IAED;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAI8H,YAAY,GAAGD,gBAAgB,GAAG0C,SAAS,CAAC1C,gBAAD,CAAZ,GAAiCyT,gBAApE;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,SAAShumB,WAAT,CAAqBL,KAArB,EAA4B;MAC1B,OAAOA,KAAK,KAAK5B,SAAjB;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASsmnB,SAAT,CAAmB1knB,KAAnB,EAA0B;MACxB,OAAO6imB,YAAY,CAAC7imB,KAAD,CAAZ,IAAuBgigB,MAAM,CAAChigB,KAAD,CAAN,IAAiBizlB,UAA/C;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAAS0xB,SAAT,CAAmB3knB,KAAnB,EAA0B;MACxB,OAAO6imB,YAAY,CAAC7imB,KAAD,CAAZ,IAAuB0rmB,UAAU,CAAC1r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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASglnB,aAAT,CAAuBhlnB,KAAvB,EAA8B;MAC5B,OAAOA,KAAK,GACR0nmB,SAAS,CAACgD,SAAS,CAAC1qmB,KAAD,CAAV,EAAmB,CAACsxlB,gBAApB,EAAsCA,gBAAtC,CADD,GAEPtxlB,KAAK,KAAK,CAAV,GAAcA,KAAd,GAAsB,CAF3B;IAGD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASO,QAAT,CAAkBP,KAAlB,EAAyB;MACvB,OAAOA,KAAK,IAAI,IAAT,GAAgB,EAAhB,GAAqBwymB,YAAY,CAACxymB,KAAD,CAAxC;IACD;IAED;;IAEA;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;;;IACI,IAAI4/J,MAAM,GAAG81c,cAAc,CAAC,UAAShka,MAAT,EAAiBnyM,MAAjB,EAAyB;MACnD,IAAIqvmB,WAAW,CAACrvmB,MAAD,CAAX,IAAuB2vmB,WAAW,CAAC3vmB,MAAD,CAAtC,EAAgD;QAC9C2omB,UAAU,CAAC3omB,MAAD,EAASkB,IAAI,CAAClB,MAAD,CAAb,EAAuBmyM,MAAvB,CAAV;QACA;MACD;;MACD,KAAK,IAAI9wM,GAAT,IAAgBrB,MAAhB,EAAwB;QACtB,IAAI4D,cAAc,CAACoB,IAAf,CAAoBhF,MAApB,EAA4BqB,GAA5B,CAAJ,EAAsC;UACpCujT,WAAW,CAACzyG,MAAD,EAAS9wM,GAAT,EAAcrB,MAAM,CAACqB,GAAD,CAApB,CAAX;QACD;MACF;IACF,CAV0B,CAA3B;IAYA;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;;IACI,IAAIqknB,QAAQ,GAAGvP,cAAc,CAAC,UAAShka,MAAT,EAAiBnyM,MAAjB,EAAyB;MACrD2omB,UAAU,CAAC3omB,MAAD,EAAS6omB,MAAM,CAAC7omB,MAAD,CAAf,EAAyBmyM,MAAzB,CAAV;IACD,CAF4B,CAA7B;IAIA;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;;IACI,IAAIwza,YAAY,GAAGxP,cAAc,CAAC,UAAShka,MAAT,EAAiBnyM,MAAjB,EAAyBiwmB,QAAzB,EAAmC9G,UAAnC,EAA+C;MAC/ER,UAAU,CAAC3omB,MAAD,EAAS6omB,MAAM,CAAC7omB,MAAD,CAAf,EAAyBmyM,MAAzB,EAAiCg3Z,UAAjC,CAAV;IACD,CAFgC,CAAjC;IAIA;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;;IACI,IAAIyc,UAAU,GAAGzP,cAAc,CAAC,UAAShka,MAAT,EAAiBnyM,MAAjB,EAAyBiwmB,QAAzB,EAAmC9G,UAAnC,EAA+C;MAC7ER,UAAU,CAAC3omB,MAAD,EAASkB,IAAI,CAAClB,MAAD,CAAb,EAAuBmyM,MAAvB,EAA+Bg3Z,UAA/B,CAAV;IACD,CAF8B,CAA/B;IAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAI0c,EAAE,GAAGjO,QAAQ,CAAC9O,MAAD,CAAjB;IAEA;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;;IACI,SAAS3rkB,MAAT,CAAgBp+B,SAAhB,EAA2ByyB,UAA3B,EAAuC;MACrC,IAAIzuB,MAAM,GAAG2gmB,UAAU,CAAC3kmB,SAAD,CAAvB;MACA,OAAOyyB,UAAU,IAAI,IAAd,GAAqBzuB,MAArB,GAA8B2lmB,UAAU,CAAC3lmB,MAAD,EAASyuB,UAAT,CAA/C;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAI8oL,QAAQ,GAAGk3Z,QAAQ,CAAC,UAASr/Z,MAAT,EAAiBkka,OAAjB,EAA0B;MAChDlka,MAAM,GAAGhwM,MAAM,CAACgwM,MAAD,CAAf;MAEA,IAAIvxL,KAAK,GAAG,CAAC,CAAb;MACA,IAAI1gB,MAAM,GAAGm2mB,OAAO,CAACn2mB,MAArB;MACA,IAAIo2mB,KAAK,GAAGp2mB,MAAM,GAAG,CAAT,GAAam2mB,OAAO,CAAC,CAAD,CAApB,GAA0Bx3mB,SAAtC;;MAEA,IAAIy3mB,KAAK,IAAIC,cAAc,CAACF,OAAO,CAAC,CAAD,CAAR,EAAaA,OAAO,CAAC,CAAD,CAApB,EAAyBC,KAAzB,CAA3B,EAA4D;QAC1Dp2mB,MAAM,GAAG,CAAT;MACD;;MAED,OAAO,EAAE0gB,KAAF,GAAU1gB,MAAjB,EAAyB;QACvB,IAAIF,MAAM,GAAGq2mB,OAAO,CAACz1lB,KAAD,CAApB;QACA,IAAIrX,KAAK,GAAGs/lB,MAAM,CAAC7omB,MAAD,CAAlB;QACA,IAAI8lnB,UAAU,GAAG,CAAC,CAAlB;QACA,IAAIC,WAAW,GAAGx8mB,KAAK,CAACrJ,MAAxB;;QAEA,OAAO,EAAE4lnB,UAAF,GAAeC,WAAtB,EAAmC;UACjC,IAAI1knB,GAAG,GAAGkI,KAAK,CAACu8mB,UAAD,CAAf;UACA,IAAIrlnB,KAAK,GAAG0xM,MAAM,CAAC9wM,GAAD,CAAlB;;UAEA,IAAIZ,KAAK,KAAK5B,SAAV,IACCypmB,EAAE,CAAC7nmB,KAAD,EAAQs/lB,WAAW,CAAC1+lB,GAAD,CAAnB,CAAF,IAA+B,CAACuC,cAAc,CAACoB,IAAf,CAAoBmtM,MAApB,EAA4B9wM,GAA5B,CADrC,EACwE;YACtE8wM,MAAM,CAAC9wM,GAAD,CAAN,GAAcrB,MAAM,CAACqB,GAAD,CAApB;UACD;QACF;MACF;;MAED,OAAO8wM,MAAP;IACD,CA7BsB,CAAvB;IA+BA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAI6za,YAAY,GAAGxU,QAAQ,CAAC,UAASptmB,IAAT,EAAe;MACzCA,IAAI,CAACO,IAAL,CAAU9F,SAAV,EAAqB07mB,mBAArB;MACA,OAAOt7mB,KAAK,CAACgnnB,SAAD,EAAYpnnB,SAAZ,EAAuBuF,IAAvB,CAAZ;IACD,CAH0B,CAA3B;IAKA;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;;IACI,SAAS8hnB,OAAT,CAAiB/za,MAAjB,EAAyBpoJ,SAAzB,EAAoC;MAClC,OAAOgziB,WAAW,CAAC5qZ,MAAD,EAASy+Z,WAAW,CAAC7mjB,SAAD,EAAY,CAAZ,CAApB,EAAoC6gjB,UAApC,CAAlB;IACD;IAED;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;;;IACI,SAASub,WAAT,CAAqBh0a,MAArB,EAA6BpoJ,SAA7B,EAAwC;MACtC,OAAOgziB,WAAW,CAAC5qZ,MAAD,EAASy+Z,WAAW,CAAC7mjB,SAAD,EAAY,CAAZ,CAApB,EAAoC+gjB,eAApC,CAAlB;IACD;IAED;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;;;IACI,SAASsb,KAAT,CAAej0a,MAAf,EAAuBupZ,QAAvB,EAAiC;MAC/B,OAAOvpZ,MAAM,IAAI,IAAV,GACHA,MADG,GAEHs5Z,OAAO,CAACt5Z,MAAD,EAASy+Z,WAAW,CAAClV,QAAD,EAAW,CAAX,CAApB,EAAmCmN,MAAnC,CAFX;IAGD;IAED;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;;;IACI,SAASwd,UAAT,CAAoBl0a,MAApB,EAA4BupZ,QAA5B,EAAsC;MACpC,OAAOvpZ,MAAM,IAAI,IAAV,GACHA,MADG,GAEHw5Z,YAAY,CAACx5Z,MAAD,EAASy+Z,WAAW,CAAClV,QAAD,EAAW,CAAX,CAApB,EAAmCmN,MAAnC,CAFhB;IAGD;IAED;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;;;IACI,SAASyd,MAAT,CAAgBn0a,MAAhB,EAAwBupZ,QAAxB,EAAkC;MAChC,OAAOvpZ,MAAM,IAAIy4Z,UAAU,CAACz4Z,MAAD,EAASy+Z,WAAW,CAAClV,QAAD,EAAW,CAAX,CAApB,CAA3B;IACD;IAED;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;;;IACI,SAAS6qB,WAAT,CAAqBp0a,MAArB,EAA6BupZ,QAA7B,EAAuC;MACrC,OAAOvpZ,MAAM,IAAI24Z,eAAe,CAAC34Z,MAAD,EAASy+Z,WAAW,CAAClV,QAAD,EAAW,CAAX,CAApB,CAAhC;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAAS8qB,SAAT,CAAmBr0a,MAAnB,EAA2B;MACzB,OAAOA,MAAM,IAAI,IAAV,GAAiB,EAAjB,GAAsBy5Z,aAAa,CAACz5Z,MAAD,EAASjxM,IAAI,CAACixM,MAAD,CAAb,CAA1C;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASs0a,WAAT,CAAqBt0a,MAArB,EAA6B;MAC3B,OAAOA,MAAM,IAAI,IAAV,GAAiB,EAAjB,GAAsBy5Z,aAAa,CAACz5Z,MAAD,EAAS02Z,MAAM,CAAC12Z,MAAD,CAAf,CAA1C;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAAS9lL,GAAT,CAAa8lL,MAAb,EAAqBz+H,IAArB,EAA2B56C,YAA3B,EAAyC;MACvC,IAAI/1B,MAAM,GAAGovM,MAAM,IAAI,IAAV,GAAiBtzM,SAAjB,GAA6BitmB,OAAO,CAAC35Z,MAAD,EAASz+H,IAAT,CAAjD;MACA,OAAO3wE,MAAM,KAAKlE,SAAX,GAAuBi6B,YAAvB,GAAsC/1B,MAA7C;IACD;IAED;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;;;IACI,SAASm7lB,GAAT,CAAa/rZ,MAAb,EAAqBz+H,IAArB,EAA2B;MACzB,OAAOy+H,MAAM,IAAI,IAAV,IAAkB8pa,OAAO,CAAC9pa,MAAD,EAASz+H,IAAT,EAAe44hB,OAAf,CAAhC;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AA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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;;;IACI,SAAS+jnB,SAAT,CAAmB30a,MAAnB,EAA2BupZ,QAA3B,EAAqC;MACnC,IAAI34lB,MAAM,GAAG,EAAb;MACA24lB,QAAQ,GAAGkV,WAAW,CAAClV,QAAD,EAAW,CAAX,CAAtB;MAEAkP,UAAU,CAACz4Z,MAAD,EAAS,UAAS1xM,KAAT,EAAgBY,GAAhB,EAAqB8wM,MAArB,EAA6B;QAC9Co2Z,eAAe,CAACxlmB,MAAD,EAAS1B,GAAT,EAAcq6lB,QAAQ,CAACj7lB,KAAD,EAAQY,GAAR,EAAa8wM,MAAb,CAAtB,CAAf;MACD,CAFS,CAAV;MAGA,OAAOpvM,MAAP;IACD;IAED;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;;;IACI,IAAIhB,KAAK,GAAGo0mB,cAAc,CAAC,UAAShka,MAAT,EAAiBnyM,MAAjB,EAAyBiwmB,QAAzB,EAAmC;MAC5DD,SAAS,CAAC79Z,MAAD,EAASnyM,MAAT,EAAiBiwmB,QAAjB,CAAT;IACD,CAFyB,CAA1B;IAIA;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;;IACI,IAAIgW,SAAS,GAAG9P,cAAc,CAAC,UAAShka,MAAT,EAAiBnyM,MAAjB,EAAyBiwmB,QAAzB,EAAmC9G,UAAnC,EAA+C;MAC5E6G,SAAS,CAAC79Z,MAAD,EAASnyM,MAAT,EAAiBiwmB,QAAjB,EAA2B9G,UAA3B,CAAT;IACD,CAF6B,CAA9B;IAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAI4d,IAAI,GAAGnP,QAAQ,CAAC,UAASzla,MAAT,EAAiBn5G,KAAjB,EAAwB;MAC1C,IAAIj2F,MAAM,GAAG,EAAb;;MACA,IAAIovM,MAAM,IAAI,IAAd,EAAoB;QAClB,OAAOpvM,MAAP;MACD;;MACD,IAAIqmmB,MAAM,GAAG,KAAb;MACApwgB,KAAK,GAAGqjgB,QAAQ,CAACrjgB,KAAD,EAAQ,UAAStlB,IAAT,EAAe;QACrCA,IAAI,GAAGq4hB,QAAQ,CAACr4hB,IAAD,EAAOy+H,MAAP,CAAf;QACAi3Z,MAAM,KAAKA,MAAM,GAAG11hB,IAAI,CAACxzE,MAAL,GAAc,CAA5B,CAAN;QACA,OAAOwzE,IAAP;MACD,CAJe,CAAhB;MAKAi1hB,UAAU,CAACx2Z,MAAD,EAAS83Z,YAAY,CAAC93Z,MAAD,CAArB,EAA+BpvM,MAA/B,CAAV;;MACA,IAAIqmmB,MAAJ,EAAY;QACVrmmB,MAAM,GAAGkmmB,SAAS,CAAClmmB,MAAD,EAASytlB,eAAe,GAAGC,eAAlB,GAAoCC,kBAA7C,EAAiE8pB,eAAjE,CAAlB;MACD;;MACD,IAAIt6mB,MAAM,GAAG84F,KAAK,CAAC94F,MAAnB;;MACA,OAAOA,MAAM,EAAb,EAAiB;QACfmxmB,SAAS,CAACtumB,MAAD,EAASi2F,KAAK,CAAC94F,MAAD,CAAd,CAAT;MACD;;MACD,OAAO6C,MAAP;IACD,CApBkB,CAAnB;IAsBA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,SAASiknB,MAAT,CAAgB70a,MAAhB,EAAwBpoJ,SAAxB,EAAmC;MACjC,OAAOk9jB,MAAM,CAAC90a,MAAD,EAASyva,MAAM,CAAChR,WAAW,CAAC7mjB,SAAD,CAAZ,CAAf,CAAb;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAI61iB,IAAI,GAAGgY,QAAQ,CAAC,UAASzla,MAAT,EAAiBn5G,KAAjB,EAAwB;MAC1C,OAAOm5G,MAAM,IAAI,IAAV,GAAiB,EAAjB,GAAsB4+Z,QAAQ,CAAC5+Z,MAAD,EAASn5G,KAAT,CAArC;IACD,CAFkB,CAAnB;IAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,SAASiuhB,MAAT,CAAgB90a,MAAhB,EAAwBpoJ,SAAxB,EAAmC;MACjC,IAAIooJ,MAAM,IAAI,IAAd,EAAoB;QAClB,OAAO,EAAP;MACD;;MACD,IAAI5oM,KAAK,GAAG8ylB,QAAQ,CAAC4N,YAAY,CAAC93Z,MAAD,CAAb,EAAuB,UAASjpM,IAAT,EAAe;QACxD,OAAO,CAACA,IAAD,CAAP;MACD,CAFmB,CAApB;MAGA6gD,SAAS,GAAG6mjB,WAAW,CAAC7mjB,SAAD,CAAvB;MACA,OAAOinjB,UAAU,CAAC7+Z,MAAD,EAAS5oM,KAAT,EAAgB,UAAS9I,KAAT,EAAgBizE,IAAhB,EAAsB;QACrD,OAAO3pB,SAAS,CAACtpD,KAAD,EAAQizE,IAAI,CAAC,CAAD,CAAZ,CAAhB;MACD,CAFgB,CAAjB;IAGD;IAED;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;;;IACI,SAAS3wE,MAAT,CAAgBovM,MAAhB,EAAwBz+H,IAAxB,EAA8B56C,YAA9B,EAA4C;MAC1C46C,IAAI,GAAGq4hB,QAAQ,CAACr4hB,IAAD,EAAOy+H,MAAP,CAAf;MAEA,IAAIvxL,KAAK,GAAG,CAAC,CAAb;MAAA,IACI1gB,MAAM,GAAGwzE,IAAI,CAACxzE,MADlB,CAH0C,CAM1C;;MACA,IAAI,CAACA,MAAL,EAAa;QACXA,MAAM,GAAG,CAAT;QACAiyM,MAAM,GAAGtzM,SAAT;MACD;;MACD,OAAO,EAAE+hB,KAAF,GAAU1gB,MAAjB,EAAyB;QACvB,IAAIO,KAAK,GAAG0xM,MAAM,IAAI,IAAV,GAAiBtzM,SAAjB,GAA6BszM,MAAM,CAAC65Z,KAAK,CAACt4hB,IAAI,CAAC9yD,KAAD,CAAL,CAAN,CAA/C;;QACA,IAAIngB,KAAK,KAAK5B,SAAd,EAAyB;UACvB+hB,KAAK,GAAG1gB,MAAR;UACAO,KAAK,GAAGq4B,YAAR;QACD;;QACDq5K,MAAM,GAAG05Z,UAAU,CAACprmB,KAAD,CAAV,GAAoBA,KAAK,CAACuE,IAAN,CAAWmtM,MAAX,CAApB,GAAyC1xM,KAAlD;MACD;;MACD,OAAO0xM,MAAP;IACD;IAED;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;;;IACI,SAAShjL,GAAT,CAAagjL,MAAb,EAAqBz+H,IAArB,EAA2BjzE,KAA3B,EAAkC;MAChC,OAAO0xM,MAAM,IAAI,IAAV,GAAiBA,MAAjB,GAA0B8+Z,OAAO,CAAC9+Z,MAAD,EAASz+H,IAAT,EAAejzE,KAAf,CAAxC;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASymnB,OAAT,CAAiB/0a,MAAjB,EAAyBz+H,IAAzB,EAA+BjzE,KAA/B,EAAsC0omB,UAAtC,EAAkD;MAChDA,UAAU,GAAG,OAAOA,UAAP,IAAqB,UAArB,GAAkCA,UAAlC,GAA+CtqmB,SAA5D;MACA,OAAOszM,MAAM,IAAI,IAAV,GAAiBA,MAAjB,GAA0B8+Z,OAAO,CAAC9+Z,MAAD,EAASz+H,IAAT,EAAejzE,KAAf,EAAsB0omB,UAAtB,CAAxC;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAIge,OAAO,GAAG/M,aAAa,CAACl5mB,IAAD,CAA3B;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAIkmnB,SAAS,GAAGhN,aAAa,CAACvR,MAAD,CAA7B;IAEA;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;;IACI,SAASvmkB,SAAT,CAAmB6vK,MAAnB,EAA2BupZ,QAA3B,EAAqCC,WAArC,EAAkD;MAChD,IAAImJ,KAAK,GAAGrimB,OAAO,CAAC0vM,MAAD,CAAnB;MAAA,IACIk1a,SAAS,GAAGviB,KAAK,IAAIlD,QAAQ,CAACzvZ,MAAD,CAAjB,IAA6BmpZ,YAAY,CAACnpZ,MAAD,CADzD;MAGAupZ,QAAQ,GAAGkV,WAAW,CAAClV,QAAD,EAAW,CAAX,CAAtB;;MACA,IAAIC,WAAW,IAAI,IAAnB,EAAyB;QACvB,IAAIgb,IAAI,GAAGxka,MAAM,IAAIA,MAAM,CAACxwM,WAA5B;;QACA,IAAI0lnB,SAAJ,EAAe;UACb1rB,WAAW,GAAGmJ,KAAK,GAAG,IAAI6R,IAAJ,EAAH,GAAc,EAAjC;QACD,CAFD,MAGK,IAAIl1mB,QAAQ,CAAC0wM,MAAD,CAAZ,EAAsB;UACzBwpZ,WAAW,GAAGkQ,UAAU,CAAC8K,IAAD,CAAV,GAAmBjT,UAAU,CAAC/C,YAAY,CAACxuZ,MAAD,CAAb,CAA7B,GAAsD,EAApE;QACD,CAFI,MAGA;UACHwpZ,WAAW,GAAG,EAAd;QACD;MACF;;MACD,CAAC0rB,SAAS,GAAGzrB,SAAH,GAAegP,UAAzB,EAAqCz4Z,MAArC,EAA6C,UAAS1xM,KAAT,EAAgBmgB,KAAhB,EAAuBuxL,MAAvB,EAA+B;QAC1E,OAAOupZ,QAAQ,CAACC,WAAD,EAAcl7lB,KAAd,EAAqBmgB,KAArB,EAA4BuxL,MAA5B,CAAf;MACD,CAFD;MAGA,OAAOwpZ,WAAP;IACD;IAED;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;;;IACI,SAAS2rB,KAAT,CAAen1a,MAAf,EAAuBz+H,IAAvB,EAA6B;MAC3B,OAAOy+H,MAAM,IAAI,IAAV,GAAiB,IAAjB,GAAwBk/Z,SAAS,CAACl/Z,MAAD,EAASz+H,IAAT,CAAxC;IACD;IAED;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;;;IACI,SAASxb,MAAT,CAAgBi6I,MAAhB,EAAwBz+H,IAAxB,EAA8B4/hB,OAA9B,EAAuC;MACrC,OAAOnha,MAAM,IAAI,IAAV,GAAiBA,MAAjB,GAA0Bkha,UAAU,CAAClha,MAAD,EAASz+H,IAAT,EAAeogiB,YAAY,CAACR,OAAD,CAA3B,CAA3C;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASiU,UAAT,CAAoBp1a,MAApB,EAA4Bz+H,IAA5B,EAAkC4/hB,OAAlC,EAA2CnK,UAA3C,EAAuD;MACrDA,UAAU,GAAG,OAAOA,UAAP,IAAqB,UAArB,GAAkCA,UAAlC,GAA+CtqmB,SAA5D;MACA,OAAOszM,MAAM,IAAI,IAAV,GAAiBA,MAAjB,GAA0Bkha,UAAU,CAAClha,MAAD,EAASz+H,IAAT,EAAeogiB,YAAY,CAACR,OAAD,CAA3B,EAAsCnK,UAAtC,CAA3C;IACD;IAED;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;;;IACI,SAASr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EAAgC8J,cAAhC,CADG,GAEHlnZ,MAFJ;IAGD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASq3F,YAAT,CAAsBr3F,MAAtB,EAA8B;MAC5BA,MAAM,GAAGv2M,QAAQ,CAACu2M,MAAD,CAAjB;MACA,OAAQA,MAAM,IAAI89Y,eAAe,CAACpllB,IAAhB,CAAqBsnM,MAArB,CAAX,GACHA,MAAM,CAAC52M,OAAP,CAAey0lB,YAAf,EAA6B,MAA7B,CADG,GAEH79Y,MAFJ;IAGD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAIywa,SAAS,GAAGhR,gBAAgB,CAAC,UAASj0mB,MAAT,EAAiB8knB,IAAjB,EAAuBjnmB,KAAvB,EAA8B;MAC7D,OAAO7d,MAAM,IAAI6d,KAAK,GAAG,GAAH,GAAS,EAAlB,CAAN,GAA8BinmB,IAAI,CAAC9pmB,WAAL,EAArC;IACD,CAF+B,CAAhC;IAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAIkqmB,SAAS,GAAGjR,gBAAgB,CAAC,UAASj0mB,MAAT,EAAiB8knB,IAAjB,EAAuBjnmB,KAAvB,EAA8B;MAC7D,OAAO7d,MAAM,IAAI6d,KAAK,GAAG,GAAH,GAAS,EAAlB,CAAN,GAA8BinmB,IAAI,CAAC9pmB,WAAL,EAArC;IACD,CAF+B,CAAhC;IAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAImqmB,UAAU,GAAGrR,eAAe,CAAC,aAAD,CAAhC;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,SAASsR,GA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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;;;IACI,SAAS6mB,QAAT,CAAkBu1J,MAAlB,EAA0B5lM,OAA1B,EAAmC2kmB,KAAnC,EAA0C;MACxC;MACA;MACA;MACA,IAAI95iB,QAAQ,GAAG6miB,MAAM,CAACc,gBAAtB;;MAEA,IAAImS,KAAK,IAAIC,cAAc,CAACh/Z,MAAD,EAAS5lM,OAAT,EAAkB2kmB,KAAlB,CAA3B,EAAqD;QACnD3kmB,OAAO,GAAG9S,SAAV;MACD;;MACD04M,MAAM,GAAGv2M,QAAQ,CAACu2M,MAAD,CAAjB;MACA5lM,OAAO,GAAGg0mB,YAAY,CAAC,EAAD,EAAKh0mB,OAAL,EAAc6qD,QAAd,EAAwB89iB,sBAAxB,CAAtB;MAEA,IAAImO,OAAO,GAAG9C,YAAY,CAAC,EAAD,EAAKh0mB,OAAO,CAAC82mB,OAAb,EAAsBjsjB,QAAQ,CAACisjB,OAA/B,EAAwCnO,sBAAxC,CAA1B;MAAA,IACIoO,WAAW,GAAGxnnB,IAAI,CAACunnB,OAAD,CADtB;MAAA,IAEIE,aAAa,GAAG3qB,UAAU,CAACyqB,OAAD,EAAUC,WAAV,CAF9B;MAIA,IAAIE,UAAJ;MAAA,IACIC,YADJ;MAAA,IAEIjomB,KAAK,GAAG,CAFZ;MAAA,IAGIkomB,WAAW,GAAGn3mB,OAAO,CAAC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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAAS2pnB,SAAT,CAAmB3pnB,KAAnB,EAA0Bq4B,YAA1B,EAAwC;MACtC,OAAQr4B,KAAK,IAAI,IAAT,IAAiBA,KAAK,KAAKA,KAA5B,GAAqCq4B,YAArC,GAAoDr4B,KAA3D;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAI4pnB,IAAI,GAAG1S,UAAU,EAArB;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAI2S,SAAS,GAAG3S,UAAU,CAAC,IAAD,CAA1B;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,SAAS1I,QAAT,CAAkBxumB,KAAlB,EAAyB;MACvB,OAAOA,KAAP;IACD;IAED;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;;;IACI,SAASi7lB,QAAT,CAAkBH,IAAlB,EAAwB;MACtB,OAAOyT,YAAY,CAAC,OAAOzT,IAAP,IAAe,UAAf,GAA4BA,IAA5B,GAAmC0N,SAAS,CAAC1N,IAAD,EAAO/K,eAAP,CAA7C,CAAnB;IACD;IAED;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;;;IACI,SAAS5+kB,OAAT,CAAiB5R,MAAjB,EAAyB;MACvB,OAAOmvmB,WAAW,CAAClG,SAAS,CAACjpmB,MAAD,EAASwwlB,eAAT,CAAV,CAAlB;IACD;IAED;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;;;IACI,SAAS+5B,eAAT,CAAyB72iB,IAAzB,EAA+B+6hB,QAA/B,EAAyC;MACvC,OAAOS,mBAAmB,CAACx7hB,IAAD,EAAOu1hB,SAAS,CAACwF,QAAD,EAAWje,eAAX,CAAhB,CAA1B;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAI3kkB,MAAM,GAAG2llB,QAAQ,CAAC,UAAS99hB,IAAT,EAAetvE,IAAf,EAAqB;MACzC,OAAO,UAAS+tM,MAAT,EAAiB;QACtB,OAAO66Z,UAAU,CAAC76Z,MAAD,EAASz+H,IAAT,EAAetvE,IAAf,CAAjB;MACD,CAFD;IAGD,CAJoB,CAArB;IAMA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAIomnB,QAAQ,GAAGhZ,QAAQ,CAAC,UAASr/Z,MAAT,EAAiB/tM,IAAjB,EAAuB;MAC7C,OAAO,UAASsvE,IAAT,EAAe;QACpB,OAAOs5hB,UAAU,CAAC76Z,MAAD,EAASz+H,IAAT,EAAetvE,IAAf,CAAjB;MACD,CAFD;IAGD,CAJsB,CAAvB;IAMA;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;;IACI,SAASqmnB,KAAT,CAAet4a,MAAf,EAAuBnyM,MAAvB,EAA+B2R,OAA/B,EAAwC;MACtC,IAAIpI,KAAK,GAAGrI,IAAI,CAAClB,MAAD,CAAhB;MAAA,IACIiqnB,WAAW,GAAGre,aAAa,CAAC5rmB,MAAD,EAASuJ,KAAT,CAD/B;;MAGA,IAAIoI,OAAO,IAAI,IAAX,IACA,EAAElQ,QAAQ,CAACzB,MAAD,CAAR,KAAqBiqnB,WAAW,CAAC/pnB,MAAZ,IAAsB,CAACqJ,KAAK,CAACrJ,MAAlD,CAAF,CADJ,EACkE;QAChEyR,OAAO,GAAG3R,MAAV;QACAA,MAAM,GAAGmyM,MAAT;QACAA,MAAM,GAAG,IAAT;QACA83a,WAAW,GAAGre,aAAa,CAAC5rmB,MAAD,EAASkB,IAAI,CAAClB,MAAD,CAAb,CAA3B;MACD;;MACD,IAAImgnB,KAAK,GAAG,EAAE1+mB,QAAQ,CAACkQ,OAAD,CAAR,IAAqB,WAAWA,OAAlC,KAA8C,CAAC,CAACA,OAAO,CAACwumB,KAApE;MAAA,IACI3W,MAAM,GAAGqC,UAAU,CAAC15Z,MAAD,CADvB;MAGAypZ,SAAS,CAACquB,WAAD,EAAc,UAASnT,UAAT,EAAqB;QAC1C,IAAIvb,IAAI,GAAGv7lB,MAAM,CAAC82mB,UAAD,CAAjB;QACA3ka,MAAM,CAAC2ka,UAAD,CAAN,GAAqBvb,IAArB;;QACA,IAAIiO,MAAJ,EAAY;UACVr3Z,MAAM,CAACpzM,SAAP,CAAiB+3mB,UAAjB,IAA+B,YAAW;YACxC,IAAIjT,QAAQ,GAAG,KAAKG,SAApB;;YACA,IAAImc,KAAK,IAAItc,QAAb,EAAuB;cACrB,IAAI9gmB,MAAM,GAAGovM,MAAM,CAAC,KAAK2xZ,WAAN,CAAnB;cAAA,IACIjyc,OAAO,GAAG9uJ,MAAM,CAACghmB,WAAP,GAAqBW,SAAS,CAAC,KAAKX,WAAN,CAD5C;cAGAlyc,OAAO,CAACltJ,IAAR,CAAa;gBAAE,QAAQ42lB,IAAV;gBAAgB,QAAQv4lB,SAAxB;gBAAmC,WAAWmvM;cAA9C,CAAb;cACApvM,MAAM,CAACihmB,SAAP,GAAmBH,QAAnB;cACA,OAAO9gmB,MAAP;YACD;;YACD,OAAOw4lB,IAAI,CAACt8lB,KAAL,CAAWkzM,MAAX,EAAmBmqZ,SAAS,CAAC,CAAC,KAAK77lB,KAAL,EAAD,CAAD,EAAiBuC,SAAjB,CAA5B,CAAP;UACD,CAXD;QAYD;MACF,CAjBQ,CAAT;MAmBA,OAAOmvM,MAAP;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASu4a,UAAT,GAAsB;MACpB,IAAI1lkB,IAAI,CAAC0hV,CAAL,KAAW,IAAf,EAAqB;QACnB1hV,IAAI,CAAC0hV,CAAL,GAAS65N,OAAT;MACD;;MACD,OAAO,IAAP;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAAS4Z,IAAT,GAAgB,CACd;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASwQ,MAAT,CAAgBpqd,CAAhB,EAAmB;MACjBA,CAAC,GAAG4qc,SAAS,CAAC5qc,CAAD,CAAb;MACA,OAAOixc,QAAQ,CAAC,UAASptmB,IAAT,EAAe;QAC7B,OAAOqsmB,OAAO,CAACrsmB,IAAD,EAAOm8J,CAAP,CAAd;MACD,CAFc,CAAf;IAGD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAIqqd,IAAI,GAAG3R,UAAU,CAAC5c,QAAD,CAArB;IAEA;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;;IACI,IAAIwuB,SAAS,GAAG5R,UAAU,CAACnd,UAAD,CAA1B;IAEA;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;;IACI,IAAIgvB,QAAQ,GAAG7R,UAAU,CAACvc,SAAD,CAAzB;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,SAAS98kB,QAAT,CAAkB8zD,IAAlB,EAAwB;MACtB,OAAOs6P,KAAK,CAACt6P,IAAD,CAAL,GAAckphB,YAAY,CAACoP,KAAK,CAACt4hB,IAAD,CAAN,CAA1B,GAA0Cw9hB,gBAAgB,CAACx9hB,IAAD,CAAjE;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASq3iB,UAAT,CAAoB54a,MAApB,EAA4B;MAC1B,OAAO,UAASz+H,IAAT,EAAe;QACpB,OAAOy+H,MAAM,IAAI,IAAV,GAAiBtzM,SAAjB,GAA6BitmB,OAAO,CAAC35Z,MAAD,EAASz+H,IAAT,CAA3C;MACD,CAFD;IAGD;IAED;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;;;IACI,IAAIz7D,KAAK,GAAGm7X,WAAW,EAAvB;IAEA;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;;IACI,IAAI43O,UAAU,GAAG53O,WAAW,CAAC,IAAD,CAA5B;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,SAASwoO,SAAT,GAAqB;MACnB,OAAO,EAAP;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASS,SAAT,GAAqB;MACnB,OAAO,KAAP;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAAS4O,UAAT,GAAsB;MACpB,OAAO,EAAP;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASC,UAAT,GAAsB;MACpB,OAAO,EAAP;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASC,QAAT,GAAoB;MAClB,OAAO,IAAP;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASC,KAAT,CAAe7qd,CAAf,EAAkBm7b,QAAlB,EAA4B;MAC1Bn7b,CAAC,GAAG4qc,SAAS,CAAC5qc,CAAD,CAAb;;MACA,IAAIA,CAAC,GAAG,CAAJ,IAASA,CAAC,GAAGwxb,gBAAjB,EAAmC;QACjC,OAAO,EAAP;MACD;;MACD,IAAInxkB,KAAK,GAAGsxkB,gBAAZ;MAAA,IACIhylB,MAAM,GAAG+hmB,SAAS,CAAC1hc,CAAD,EAAI2xb,gBAAJ,CADtB;MAGAwJ,QAAQ,GAAGkV,WAAW,CAAClV,QAAD,CAAtB;MACAn7b,CAAC,IAAI2xb,gBAAL;MAEA,IAAInvlB,MAAM,GAAG46lB,SAAS,CAACz9lB,MAAD,EAASw7lB,QAAT,CAAtB;;MACA,OAAO,EAAE96kB,KAAF,GAAU2/I,CAAjB,EAAoB;QAClBm7b,QAAQ,CAAC96kB,KAAD,CAAR;MACD;;MACD,OAAO7d,MAAP;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAASsonB,MAAT,CAAgB5qnB,KAAhB,EAAuB;MACrB,IAAIgC,OAAO,CAAChC,KAAD,CAAX,EAAoB;QAClB,OAAO47lB,QAAQ,CAAC57lB,KAAD,EAAQurmB,KAAR,CAAf;MACD;;MACD,OAAOf,QAAQ,CAACxqmB,KAAD,CAAR,GAAkB,CAACA,KAAD,CAAlB,GAA4BikmB,SAAS,CAACqP,YAAY,CAAC/ymB,QAAQ,CAACP,KAAD,CAAT,CAAb,CAA5C;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAAS+qZ,QAAT,CAAkB/xY,MAAlB,EAA0B;MACxB,IAAIxL,EAAE,GAAG,EAAEiylB,SAAX;MACA,OAAOl/lB,QAAQ,CAACyY,MAAD,CAAR,GAAmBxL,EAA1B;IACD;IAED;;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,IAAImiB,GAAG,GAAG4olB,mBAAmB,CAAC,UAASsS,MAAT,EAAiBC,MAAjB,EAAyB;MACrD,OAAOD,MAAM,GAAGC,MAAhB;IACD,CAF4B,EAE1B,CAF0B,CAA7B;IAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAIzxmB,IAAI,GAAGmgmB,WAAW,CAAC,MAAD,CAAtB;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAI5wU,MAAM,GAAG2vU,mBAAmB,CAAC,UAASwS,QAAT,EAAmBC,OAAnB,EAA4B;MAC3D,OAAOD,QAAQ,GAAGC,OAAlB;IACD,CAF+B,EAE7B,CAF6B,CAAhC;IAIA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,IAAI9+mB,KAAK,GAAGstmB,WAAW,CAAC,OAAD,CAAvB;IAEA;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACI,SAAShhmB,GAAT,CAAaxU,KAAb,EAAoB;MAClB,OAAQA,KAAK,IAAIA,KAAK,CAACvE,MAAhB,GACH8qmB,YAAY,CAACvmmB,KAAD,EAAQwqmB,QAAR,EAAkB5C,MAAlB,CADT,GAEHxtmB,SAFJ;IAGD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAAS6snB,KAAT,CAAejnnB,KAAf,EAAsBi3lB,QAAtB,EAAgC;MAC9B,OAAQj3lB,KAAK,IAAIA,KAAK,CAACvE,MAAhB,GACH8qmB,YAAY,CAACvmmB,KAAD,EAAQmsmB,WAAW,CAAClV,QAAD,EAAW,CAAX,CAAnB,EAAkC2Q,MAAlC,CADT,GAEHxtmB,SAFJ;IAGD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAAS8snB,IAAT,CAAclnnB,KAAd,EAAqB;MACnB,OAAO64lB,QAAQ,CAAC74lB,KAAD,EAAQwqmB,QAAR,CAAf;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,SAAS2c,MAAT,CAAgBnnnB,KAAhB,EAAuBi3lB,QAAvB,EAAiC;MAC/B,OAAO4B,QAAQ,CAAC74lB,KAAD,EAAQmsmB,WAAW,CAAClV,QAAD,EAAW,CAAX,CAAnB,CAAf;IACD;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;IACI,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ACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;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;;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;;AAEA,IAAI,KAA4B;AAChC;AACA;;;;;;;;;;;ACvPA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,eAAe;AACf,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjFD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;;AAEA;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;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvMD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,IAAI;AACvC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;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,SAAS;AACT;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,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClLD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;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,SAAS;AACT;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;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChKD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,sDAAsD;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9LD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,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,oCAAoC;AACpC,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5GD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gCAAgC;AAChC,+BAA+B;AAC/B,+BAA+B;AAC/B,8BAA8B;AAC9B;AACA;AACA;AACA,yDAAyD;AACzD;AACA,0DAA0D;AAC1D;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,SAAS;AACT;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,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;;AAEA;AACA;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;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;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,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;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,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;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,oCAAoC,IAAI;AACxC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpID;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,SAAS;AACT;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;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;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;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClLD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;;AAEA;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;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,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtKD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,oCAAoC,IAAI,IAAI,IAAI;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxGD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,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,kBAAkB;AAClB;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;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1ED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;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,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;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;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,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9JD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,8CAA8C,IAAI,IAAI,IAAI;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,SAAS;AACT;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,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;;AAEA;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;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjHD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;AACA,SAAS;AACT;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,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9FD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;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,SAAS;AACT;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,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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,yCAAyC,IAAI;AAC7C;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,cAAc;AACd;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACvID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;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,SAAS;AACT;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,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACxGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;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;;AAEA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,IAAI;AAC3D,6DAA6D,IAAI;AACjE,4DAA4D,IAAI;AAChE,kEAAkE,IAAI;AACtE;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrND;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;;AAEA;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,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,SAAS;AACT;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,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtJD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,+CAA+C;AAC/C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,+CAA+C;AAC/C,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzED;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;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,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtFD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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,kBAAkB;AAClB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;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;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/ND;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,KAAK;AACzC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;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,aAAa;AACb;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3JD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;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,SAAS;AACT;AACA;AACA;;AAEA;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,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrLD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,SAAS;AACT;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,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;AAEA;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;;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;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,iCAAiC;AACjC,cAAc;AACd,gCAAgC;AAChC,cAAc;AACd,mCAAmC;AACnC,cAAc;AACd,mCAAmC;AACnC,cAAc;AACd,gCAAgC;AAChC,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7ID;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClGD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/HD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC3ED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACrGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;;AAEA;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;;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,SAAS;AACT;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,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACtID;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;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;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACpHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACnGD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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;;AAET,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACzHD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,aAAa;AACb;AACA,SAAS;AACT;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;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACjLD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;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,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC5FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AChED;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC7DD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC1FD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;ACnFD;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,0CAA0C,IAAI;AAC9C;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/DD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;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,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AClID;AACA;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC/GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;AC9GD;AACA;AACA;AACA;;AAEA,CAAC;AACD,GAAG,KACoC,WAAW,mBAAO,CAAC,sBAAW;AACrE,GAAG,CACsB;AACzB,CAAC,4BAA4B;;AAE7B;;AAEA;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,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA,CAAC;;;;;;;;;;;;AC7GD;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,IAAI,KAA4D;AAChE,IAAI,CACyB;AAC7B,CAAC,sBAAsB;;AAEvB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,YAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,IAAI;AACxB;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wGAAwG,IAAI,wBAAwB,IAAI,uDAAuD,IAAI;AACnM,qEAAqE,IAAI;AACzE,4BAA4B;AAC5B;;AAEA;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;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2CAA2C,YAAY;AACvD;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;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,aAAa;AACb;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,EAAE;AACvB,qBAAqB,EAAE;AACvB,0BAA0B,EAAE;AAC5B;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B,wBAAwB,IAAI;AAC5B,6BAA6B,IAAI;AACjC;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA,mBAAmB,MAAM,wEAAwE,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI;AACjK;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;;AAEA;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;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB,QAAQ;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,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;AACV;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;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,OAAO;AAC3B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB;AACpB,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA,oBAAoB,UAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,QAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAO;AACxC,gBAAgB,2BAAe,IAAW,OAAO,CAAC;AAClD;AACA,cAAc;AACd;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,EAAE,IAAI,EAAE;AACpC;AACA,4BAA4B,EAAE,IAAI,EAAE;AACpC;AACA;AACA,qCAAqC,EAAE;AACvC,+BAA+B,EAAE;AACjC,iCAAiC,EAAE;AACnC,+BAA+B,EAAE;AACjC,6BAA6B,EAAE,IAAI,EAAE;AACrC,4BAA4B,EAAE;AAC9B,mCAAmC,GAAG;AACtC,6BAA6B,EAAE;AAC/B,+BAA+B,EAAE,IAAI,EAAE;AACvC,8BAA8B,EAAE,IAAI,EAAE;AACtC,4BAA4B,EAAE;AAC9B,2BAA2B,EAAE;AAC7B,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,IAAI,0DAA0D,IAAI,qEAAqE,EAAE;AACjM;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,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;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,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+BAA+B;AACnD;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,gBAAgB;AACpC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,mCAAmC,iBAAiB;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,aAAa;AACb;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,cAAc;AAClC;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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,cAAc;AACd;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,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,4GAA4G;AAC5G;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;;AAEA,oBAAoB,iBAAiB;AACrC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;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,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA,uBAAuB;AACvB;AACA;AACA,uBAAuB;AACvB;AACA;AACA,uBAAuB;AACvB;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;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;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sBAAsB;AAC1D;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,sBAAsB;AAC1D;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;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;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;;AAEA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;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;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,OAAO;AAC5C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,yBAAyB,mBAAmB;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA,sBAAsB,mBAAmB;AACzC;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;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;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;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;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpjLD;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,oCAAoC,UAAU;AAC9C;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB,yBAAyB,cAAc;AACvC,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,0LAA0L,IAAI;AAC9L;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,wBAAwB,YAAY;AACpC;AACA,+BAA+B,GAAG,uCAAuC,+BAA+B;AACxG;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,mBAAmB,EAAE;AACrB;AACA,WAAW,GAAG;AACd,mBAAmB,EAAE;AACrB;AACA,WAAW,GAAG;AACd,wBAAwB,EAAE;AAC1B;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,sBAAsB,IAAI;AAC1B;AACA,WAAW,GAAG;AACd,sBAAsB,IAAI;AAC1B;AACA,WAAW,GAAG;AACd,2BAA2B,IAAI;AAC/B;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,sCAAsC,IAAI;AAC1C;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,yBAAyB,MAAM,2DAA2D,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI;AAC1J,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,oBAAoB,mBAAmB;AACvC;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;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,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,gDAAgD,EAAE;AAClD,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB,kCAAkC;AAClC,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,OAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAOV;AACD,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd,0CAA0C,IAAI;AAC9C,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAoFV;AACD;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,4CAA4C,GAAG;AAC/C,uBAAuB,GAAG;AAC1B,oCAAoC,GAAG,sCAAsC,QAAQ;AACrF,oCAAoC,GAAG;AACvC;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA,0DAA0D,QAAQ;AAClE,2DAA2D,aAAa;AACxE;AACA;AACA,4BAA4B,4BAA4B,IAAI,iCAAiC;AAC7F;AACA;AACA;AACA,4DAA4D,GAAG;AAC/D;AACA;AACA,2DAA2D,GAAG;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,4DAA4D,kDAAkD;AAC9G,6DAA6D,uDAAuD;AACpH,2DAA2D,qDAAqD;AAChH;AACA;AACA,4BAA4B,8BAA8B,IAAI,mCAAmC,IAAI,iCAAiC;AACtI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,GAAG;AACrC;AACA;AACA,8BAA8B,GAAG;AACjC;AACA;AACA;AACA,8BAA8B,GAAG;AACjC;AACA;AACA;AACA,8BAA8B,GAAG;AACjC;AACA;AACA,0BAA0B,GAAG;AAC7B;AACA;AACA;AACA,0BAA0B,GAAG;AAC7B;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,wBAAwB,OAAO;AAC/B,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA,4CAA4C,sBAAsB;AAClE;AACA,kDAAkD,qBAAqB;AACvE,uDAAuD,sBAAsB;AAC7E;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA,8CAA8C,sBAAsB;AACpE;AACA;AACA,oDAAoD,qBAAqB;AACzE,yDAAyD,sBAAsB;AAC/E,uDAAuD,oBAAoB;AAC3E;AACA;AACA,IAAI,KAAK,EAAE,EA+JV;AACD;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;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,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB,0CAA0C,8CAA8C;AACxF,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA,iDAAiD;AACjD;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA,uCAAuC;AACvC,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA,0EAA0E;AAC1E,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA,yDAAyD;AACzD;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB,iDAAiD,eAAe;AAChE;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,yBAAyB,mBAAmB;AAC5C;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mDAAmD,MAAM;AACzD;AACA;AACA,sBAAsB,mBAAmB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,kBAAkB,GAAG,EAAE,IAAI;AAC3B,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,kBAAkB,GAAG,EAAE,IAAI,EAAE,IAAI;AACjC,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,kBAAkB,GAAG,EAAE,IAAI;AAC3B,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,kBAAkB,GAAG,EAAE,IAAI,EAAE,IAAI;AACjC,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,4BAA4B,GAAG;AAC/B;AACA;AACA;AACA;AACA,4BAA4B,GAAG;AAC/B;AACA;AACA,mCAAmC,GAAG;AACtC;AACA;AACA;AACA;AACA;AACA,8CAA8C,GAAG;AACjD;AACA,4BAA4B,GAAG,oCAAoC,kBAAkB,GAAG;AACxF;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,MAAM;AACN;AACA;AACA,mEAAmE,KAAK;AACxE,wEAAwE,KAAK;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,cAAc;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI;AACxC;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA,CAAC,KAAK;AACN;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,oBAAoB,qBAAqB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,MAAM;AACtD;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAaV;AACD;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA,sDAAsD,uBAAuB;AAC7E;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,yCAAyC,EAAE,IAAI,EAAE;AACjD;AACA,WAAW,GAAG;AACd,sCAAsC,EAAE,IAAI,EAAE;AAC9C,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,6BAA6B,EAAE;AAC/B,uBAAuB,EAAE;AACzB,yBAAyB,EAAE;AAC3B,uBAAuB,EAAE;AACzB,qBAAqB,EAAE,IAAI,EAAE;AAC7B,oBAAoB,EAAE;AACtB,2BAA2B,GAAG;AAC9B,qBAAqB,EAAE;AACvB;AACA,uBAAuB,EAAE,IAAI,EAAE;AAC/B,sBAAsB,EAAE,IAAI,EAAE;AAC9B,oBAAoB,EAAE;AACtB;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,4DAA4D,IAAI,0DAA0D,IAAI,qEAAqE,EAAE;AACrM;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,OAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB,uEAAuE,IAAI;AAC3E,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+BAA+B;AAC/C;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,gBAAgB,sBAAsB;AACtC;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,mBAAmB,GAAG;AACtB,mDAAmD,GAAG;AACtD;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA,iCAAiC,SAAS,gBAAgB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;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,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA,+CAA+C;AAC/C,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,eAAe,IAAI;AAC1C;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB,kBAAkB;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA,iBAAiB;AACjB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB,kDAAkD,mCAAmC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA,kDAAkD;AAClD,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA,CAAC;AACD,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA,4BAA4B,GAAG;AAC/B,KAAK;AACL,CAAC;AACD,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,yEAAyE,CAAE;AAC3E,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,yEAAyE,CAAE;AAC3E,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,yEAAyE,CAAE;AAC3E,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,yEAAyE,CAAE;AAC3E,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,8FAA8F,CAAE;AAChG,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;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;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,0CAA0C,IAAI,IAAI,IAAI;AACtD;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,wBAAwB,GAAG;AAC3B;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,KAAK;AACrC;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,yCAAyC;AACzC,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,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,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,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,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,yBAAyB;AACzB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,WAAW,GAAG;AACd;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,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,gCAAgC,IAAI;AACpC;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;;AAEqzB;;;;;;;;;;;;;;;;;;;;ACruV9uB;AAC8C;;AAErH;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AAC0B;AACM;AAC9C;AACA,WAAW,GAAG;AACd;AACA,IAAI,0DAAK,GAAG,iCAAiC;AAC7C,IAAI,4DAAO,4BAA4B,0DAAK,GAAG,oCAAoC;AACnF;AACA,WAAW,GAAG;AACd;AACA,IAAI,0DAAK,GAAG,oCAAoC;AAChD,IAAI,4DAAO,4BAA4B,0DAAK,GAAG,iCAAiC;AAChF;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA;AACA;AACA,2BAA2B,uDAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,iEAAiE,oCAAoC,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,CAAC,iEAAuB;AAC9O,uCAAuC,+DAAwB,GAAG,2IAA2I;AAC7M,QAAQ,yDAAkB;AAC1B,QAAQ,yDAAkB;AAC1B,OAAO,YAAY,oEAAoE,aAAa,0FAA0F,6BAA6B;AAC3N;AACA;AACA,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,MAAM,iEAAgB;AAC5B;AACA;AACA,kBAAkB,MAAM,iDAAM,EAAE;AAChC,kBAAkB,MAAM,iDAAM,EAAE;AAChC,iBAAiB,MAAM,iDAAM,EAAE;AAC/B,gBAAgB,MAAM,iDAAM,EAAE;AAC9B,mBAAmB,MAAM,sDAAW,uBAAuB,IAAI,MAAM,sDAAW,yBAAyB,IAAI,MAAM,sDAAW,iCAAiC;AAC/J,oBAAoB,MAAM,sDAAW,+BAA+B;AACpE,mBAAmB,MAAM,sDAAW,6BAA6B;AACjE,qBAAqB,MAAM,sDAAW,+BAA+B;AACrE,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,mBAAmB,MAAM,gDAAK,EAAE;AAChC,iBAAiB,MAAM,gDAAK,EAAE;AAC9B;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,qDAAiB,EAAE,IAAI,MAAM,oDAAgB,EAAE,IAAI,MAAM,iEAAuB,EAAE,IAAI,IAAI;AAChI,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,sDAAW;AAC7B;AACA,SAAS;AACT,kBAAkB,sDAAW;AAC7B;AACA,SAAS;AACT,kBAAkB,sDAAW;AAC7B;AACA,SAAS;AACT,kBAAkB,sDAAW;AAC7B;AACA,SAAS;AACT,kBAAkB,sDAAW;AAC7B;AACA,SAAS;AACT,kBAAkB,sDAAW;AAC7B;AACA,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB,IAAI,KAAK,EAAE,EAsFV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,2DAA2D;AAC3D,oCAAoC,8DAAuB,GAAG,sBAAsB;AACpF,oCAAoC,8DAAuB,GAAG;AAC9D,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,mDAAQ;AACtB;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;AACtB,eAAe,mDAAmD,gEAAyB,mBAAmB,iEAAiE,IAAI;;AAEnL;AACA;AACA,cAAc,wFAAwF;AACtG;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;;AAE6C;;;;;;;;;;;;;;;;;;;;;;;AC5YiG;AAC7C;AAClC;;AAE/D;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACwC;AACY;AACpD;AACA;AACA,IAAI,KAAK,EAAE,EAKV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAOV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uDAAY;AAC5C;AACA,2BAA2B,uDAAY;AACvC;AACA,gCAAgC,uDAAY;AAC5C,4BAA4B,uDAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,wCAAwC,GAAG;AAC3C;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,6BAA6B,0DAAe;AAC5C;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,qDAAU;AACpD;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,cAAc;AACxD;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,KAAK;AACvC;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,oBAAoB;AACpB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,SAAS;AACT,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT,sCAAsC,uEAAkB;AACxD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA,uCAAuC,yEAAoB;AAC3D;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,mCAAmC,qEAAgB;AACnD;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,sDAAW;AAC1C;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,yDAAyD;AACzD;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B,yCAAyC,0DAAe;AACxD;AACA;AACA,aAAa;AACb,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA,6DAA6D,QAAQ;AACrE;AACA;AACA,IAAI,KAAK,EAAE,EA6HV;;AAED;AACA;AACA,cAAc,wFAAwF;A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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,mEAAmE;AACnE,8CAA8C,oEAAkB,GAAG,iDAAiD,kCAAkC,iDAAiD;AACvM,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,YAAY,UAAU;AAC5C,IAAI,KAAK,EAAE,EAqLV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd,4BAA4B,4DAAO;AACnC,IAAI,0DAAK,kBAAkB,0DAAK,GAAG,iCAAiC;AACpE,IAAI,+DAAU;AACd,QAAQ,0DAAK,GAAG,+BAA+B;AAC/C,QAAQ,4DAAO;AACf;AACA,IAAI,0DAAK,gBAAgB,0DAAK,GAAG,iCAAiC;AAClE,IAAI,+DAAU;AACd,QAAQ,0DAAK,GAAG,iCAAiC;AACjD,QAAQ,4DAAO;AACf;AACA,IAAI,+DAAU,oBAAoB,4DAAO;AACzC;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAmCV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE,0CAA0C,gEAAyB,GAAG,+DAA+D;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB;AACtB,IAAI,KAAK,EAAE,EAuCV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,2BAA2B,iDAAe;AAC1C;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D;AAC7D,sCAAsC,gEAAyB,GAAG,uDAAuD;AACzH,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,YAAY,UAAU;AAC5C,IAAI,KAAK,EAAE,EAgBV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB,yCAAyC,2CAA2C;AACpF;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,kBAAkB,sDAAM;AACxB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,kBAAkB,sDAAM;AACxB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,kBAAkB,sDAAM;AACxB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,kBAAkB,oDAAG;AACrB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA,8BAA8B,iBAAiB;AAC/C;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B,sCAAsC,GAAG;AACzC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,kBAAkB,sDAAM;AACxB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,kBAAkB,sDAAM;AACxB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,kBAAkB,sDAAM;AACxB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,kBAAkB,sDAAM;AACxB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,kBAAkB,sDAAM;AACxB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,kBAAkB,sDAAM;AACxB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,kBAAkB,sDAAM;AACxB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,kBAAkB,sDAAM;AACxB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,sCAAsC,sDAAe,uBAAuB,sDAAe;AAChK,0CAA0C,gEAAyB,GAAG,+DAA+D;AACrI;AACA;AACA,MAAM,2BAA2B;AACjC,MAAM;AACN;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,2BAA2B,IAAI,uBAAuB,IAAI,UAAU;AACpG,IAAI,KAAK,EAAE,EA+BV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAKV;AACD;AACA;AACA,IAAI,KAAK,EAAE,EAuEV;AACD,WAAW,GAAG;AACd,uBAAuB;AACvB,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,QAAQ,uEAAgB;AACxB;AACA;AACA,eAAe,GAAG;AAClB,oBAAoB,6DAAM;AAC1B,eAAe,GAAG;AAClB;AACA,WAAW,gEAAS,SAAS,cAAc;AAC3C;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB,4BAA4B,+DAAQ,CAAC,4DAAK;AAC1C,eAAe,GAAG;AAClB,4BAA4B,8DAAO,CAAC,8DAAO;AAC3C;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB,4BAA4B,+DAAQ,CAAC,4DAAK;AAC1C,eAAe,GAAG;AAClB,4BAA4B,8DAAO,CAAC,8DAAO;AAC3C;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,2BAA2B,8DAAO;AAClC;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA,sBAAsB,6DAAM;AAC5B;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,0BAA0B,8DAAO;AACjC;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA,qBAAqB,6DAAM;AAC3B;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EASV;AACD;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,oBAAoB,oBAAoB;AACxC;AACA,wBAAwB,mBAAmB;AAC3C;AACA,wBAAwB,gEAAS;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB,qBAAqB,yEAAkB;AACvC,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA,oBAAoB,iEAAU;AAC9B,mBAAmB,iEAAU;AAC7B;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA,uBAAuB,iEAAU;AACjC;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA,yBAAyB,iEAAU;AACnC;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB,oBAAoB,gEAAS;AAC7B,eAAe,GAAG;AAClB,iCAAiC,GAAG;AACpC,eAAe,GAAG;AAClB;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EA2BV;AACD;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,kCAAkC,kEAAW;AAC7C,uBAAuB,GAAG;AAC1B,+CAA+C,gEAAS;AACxD;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,gBAAgB,gEAAS;AACzB,uBAAuB,GAAG;AAC1B;AACA;AACA,gBAAgB,gEAAS;AACzB,uBAAuB,GAAG;AAC1B,iDAAiD,gEAAS;AAC1D;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,gBAAgB,+DAAQ;AACxB,gBAAgB,8DAAO;AACvB,gBAAgB,oEAAa;AAC7B;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B,6CAA6C,gEAAS;AACtD,uBAAuB,GAAG;AAC1B;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA,mBAAmB,gEAAS;AAC5B;AACA,uBAAuB,GAAG;AAC1B,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA,kBAAkB,gEAAS;AAC3B;AACA,uBAAuB,GAAG;AAC1B,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,2CAA2C;AAC3C;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,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,gEAAS,yBAAyB,WAAW;AACnG,uDAAuD,gEAAS,yBAAyB,UAAU;AACnG;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd,gBAAgB;AAChB;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB,wBAAwB,8DAAO;AAC/B,eAAe,GAAG;AAClB,4BAA4B;AAC5B,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,iEAAU;AACzB,KAAK;AACL;AACA;AACA;AACA,mBAAmB,iEAAU;AAC7B;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAiBV;AACD;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,m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AACnC;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B,8BAA8B,kEAAW;AACzC,mBAAmB,8DAAO,oBAAoB,kEAAW;AACzD;AACA,uBAAuB,GAAG;AAC1B;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,oBAAoB,8DAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA,8BAA8B;AAC9B,mCAAmC;AACnC;AACA;AACA,mCAAmC;AACnC;AACA,aAAa;AACb;AACA;AACA,mCAAmC;AACnC;AACA,aAAa;AACb;AACA;AACA,mCAAmC;AACnC;AACA,aAAa;AACb;AACA;AACA,mCAAmC;AACnC;AACA,aAAa;AACb;AACA;AACA,mCAAmC;AACnC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA,uBAAuB,gEAAS,aAAa,WAAW;AACxD;AACA,gDAAgD,gEAAS;AACzD,mBAAmB,GAAG;AACtB;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA,uBAAuB,gEAAS,aAAa,UAAU;AACvD;AACA,+BAA+B,WAAW,aAAa;AACvD;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,oCAAoC,+BAA+B;AACnE;AACA;AACA,uBAAuB,gEAAS,aAAa,SAAS;AACtD;AACA,+BAA+B,WAAW,gBAAgB;AAC1D;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,oCAAoC,+BAA+B;AACnE;AACA;AACA,uBAAuB,gEAAS,aAAa,wBAAwB;AACrE;AACA,+BAA+B,WAAW,oBAAoB;AAC9D;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,+BAA+B,WAAW,iBAAiB;AAC3D;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,oCAAoC,+BAA+B;AACnE;AACA;AACA,uBAAuB,gEAAS,aAAa,SAAS;AACtD;AACA,+BAA+B,WAAW,gBAAgB;AAC1D;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,oCAAoC,+BAA+B;AACnE;AACA;AACA,uBAAuB,gEAAS,aAAa,UAAU;AACvD;AACA,+BAA+B,WAAW,oBAAoB;AAC9D;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,+BAA+B,WAAW,eAAe;AACzD;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,+BAA+B,WAAW,uBAAuB;AACjE;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,+BAA+B,WAAW,sBAAsB;AAChE;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB,2BAA2B,gEAAS,gBAAgB,yBAAyB;AAC7E,eAAe,gEAAS;AACxB;AACA,WAAW,gEAAS,CAAC,8DAAO;AAC5B;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,mBAAmB,8DAAO;AAC1B;AACA;AACA,mBAAmB,+DAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,mBAAmB,6DAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,gCAAgC,8DAAS;AACzC;AACA,mBAAmB,GAAG;AACtB,gCAAgC,iDAAe;AAC/C;AACA,SAAS;AACT,mBAAmB,GAAG;AACtB,0BAA0B,8DAAS;AACnC;AACA;AACA;AACA,iEAAiE;AACjE,wCAAwC,gEAAyB,GAAG,2DAA2D;AAC/H;AACA;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,YAAY,UAAU;;AAE5C;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uDAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,0CAA0C;AAC3E;AACA,SAAS;AACT;AACA,kBAAkB,qDAAI;AACtB;AACA,oBAAoB;AACpB;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,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+DAAQ;AAC/B,sBAAsB,kEAAW;AACjC,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kEAAW;AACjC,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,iDAAiD,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,sBAAsB,+DAAwB,qBAAqB,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,uBAAuB,+DAAwB,uBAAuB,+DAAwB,CAAC,yEAAyB;AAChd,oDAAoD,+DAAwB,GAAG,oOAAoO;AACnT,QAAQ,wDAAiB,qFAAqF,sCAAsC;AACpJ,OAAO,aAAa,gEAAyB,4CAA4C,wEAAiC,u2CAAu2C;AACj+C,QAAQ,wDAAiB;AACzB,QAAQ,oDAAa;AACrB,MAAM;AACN,QAAQ,wDAAiB,SAAS,yDAAkB;AACpD,OAAO,4BAA4B,QAAQ,kDAAW,EAAE,qDAAc,EAAE,sDAAe,EAAE,0DAAmB,EAAE,qDAAc,yHAAyH,uBAAuB,QAAQ,uDAAgB,IAAI,4BAA4B,oCAAoC;AACxW;AACA;AACA,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,0BAA0B;AAChC,MAAM,yBAAyB;AAC/B,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,2BAA2B;AACjC,MAAM,2BAA2B;AACjC,MAAM,MAAM,yEAAkB;AAC9B;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA,8wFAA8wF,aAAa,8UAA8U,aAAa;AACtnG;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,oDAAgB,EAAE,IAAI,0BAA0B,IAAI,yBAAyB,IAAI,MAAM,qDAAiB,EAAE,IAAI,2BAA2B,IAAI,2BAA2B,IAAI,MAAM,yEAAyB,EAAE,IAAI,UAAU;AACjQ,IAAI,KAAK,EAAE,EAgCV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA,qCAAqC,0CAAO;AAC5C;AACA;AACA;AACA;AACA;AACA,2BAA2B,iDAAe;AAC1C;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,8BAA8B,0CAAO;AACrC;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,0BAA0B,sDAAM;AAChC,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA,4CAA4C,0DAAS;AACrD;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qDAAqD;AAC5E;AACA;AACA,wBAAwB,4BAA4B;AACpD,oBAAoB,2BAA2B;AAC/C;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,wCAAwC,+DAAwB,sBAAsB,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,CAAC,2DAAuB,GAAG,+DAAwB,CAAC,kFAA6B;AACjW,2CAA2C,+DAAwB,GAAG,8EAA8E,0bAA0b,aAAa,0EAA0E,yCAAyC,kEAA2B,GAAG;AAC5uB;AACA;AACA,MAAM,0BAA0B;AAChC,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,MAAM,2DAAgB,EAAE;AAC9B,MAAM,MAAM,kFAAsB;AAClC;AACA;AACA,kBAAkB,MAAM,gDAAK,EAAE;AAC/B,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,qBAAqB,MAAM,gDAAK,EAAE;AAClC,kBAAkB,MAAM,gDAAK,EAAE;AAC/B,mBAAmB,MAAM,gDAAK,EAAE;AAChC,eAAe,MAAM,gDAAK,EAAE;AAC5B,gBAAgB,MAAM,iDAAM,EAAE;AAC9B,iBAAiB,MAAM,iDAAM,EAAE;AAC/B,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,mBAAmB,MAAM,gDAAK,EAAE;AAChC,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,qBAAqB,MAAM,gDAAK,EAAE;AAClC,sBAAsB,MAAM,gDAAK,EAAE;AACnC,qBAAqB,MAAM,gDAAK,EAAE;AAClC,0BAA0B,MAAM,gDAAK,EAAE;AACvC,yBAAyB,MAAM,gDAAK,EAAE;AACtC,sBAAsB,MAAM,iDAAM,EAAE;AACpC;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,0BAA0B,IAAI,MAAM,qDAAiB,EAAE,IAAI,MAAM,oDAAgB,EAAE,IAAI,MAAM,2DAAuB,EAAE,IAAI,MAAM,kFAA6B,EAAE,IAAI,IAAI;AACvM,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,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;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;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB,IAAI,KAAK,EAAE,EA+HV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,4DAA4D,2CAA2C,sDAAsD,0FAA0F,mEAA4B,iEAAiE;AACpV,oDAAoD,oEAAkB,GAAG,uDAAuD,wCAAwC,uDAAuD;AAC/N,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;;AAEtB;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG,uDAAuD,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,sBAAsB,+DAAwB,qBAAqB,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,uBAAuB,+DAAwB,uBAAuB,+DAAwB,CAAC,yEAAyB;AACle,0DAA0D,+DAAwB,GAAG,iLAAiL;AACtQ,QAAQ,wDAAiB,2FAA2F,sCAAsC;AAC1J,OAAO,aAAa,gEAAyB,4CAA4C,wEAAiC,62CAA62C;AACv+C,QAAQ,wDAAiB;AACzB,QAAQ,oDAAa;AACrB,MAAM;AACN,QAAQ,wDAAiB,SAAS,yDAAkB;AACpD,OAAO,4BAA4B,QAAQ,kDAAW,EAAE,qDAAc,EAAE,sDAAe,EAAE,0DAAmB,EAAE,qDAAc,yHAAyH,uBAAuB,QAAQ,uDAAgB,IAAI,4BAA4B,oCAAoC;AACxW;AACA;AACA,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,0BAA0B;AAChC,MAAM,yBAAyB;AAC/B,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,2BAA2B;AACjC,MAAM,2BAA2B;AACjC,MAAM,MAAM,yEAAkB;AAC9B;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA,8wFAA8wF,aAAa,8UAA8U,aAAa;AACtnG;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,oDAAgB,EAAE,IAAI,0BAA0B,IAAI,yBAAyB,IAAI,MAAM,qDAAiB,EAAE,IAAI,2BAA2B,IAAI,2BAA2B,IAAI,MAAM,yEAAyB,EAAE,IAAI,UAAU;;AAEjQ;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,uBAAuB,qDAAqD;AAC5E;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,qFAAqF,8CAA8C,+DAAwB,4BAA4B,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,CAAC,2DAAuB,GAAG,+DAAwB,CAAC,kFAA6B;AACzX,iDAAiD,+DAAwB,GAAG,oFAAoF,wPAAwP,aAAa,gCAAgC,+CAA+C,kEAA2B,GAAG;AAClhB;AACA;AACA,MAAM,gCAAgC;AACtC,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,MAAM,2DAAgB,EAAE;AAC9B,MAAM,MAAM,kFAAsB;AAClC;AACA;AACA,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,mBAAmB,MAAM,gDAAK,EAAE;AAChC,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,0BAA0B,MAAM,gDAAK,EAAE;AACvC,yBAAyB,MAAM,gDAAK,EAAE;AACtC,qBAAqB,MAAM,gDAAK,EAAE;AAClC,sBAAsB,MAAM,gDAAK,EAAE;AACnC,sBAAsB,MAAM,iDAAM,EAAE;AACpC;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,gCAAgC,IAAI,MAAM,qDAAiB,EAAE,IAAI,MAAM,oDAAgB,EAAE,IAAI,MAAM,2DAAuB,EAAE,IAAI,MAAM,kFAA6B,EAAE,IAAI,IAAI;AAC7M,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;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB,IAAI,KAAK,EAAE,EAsEV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,gDAAgD,2DAA2D,oGAAoG,mEAA4B,2EAA2E;AACvX,yDAAyD,oEAAkB,GAAG,4DAA4D,6CAA6C,4DAA4D;AACnP,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;AACtB,IAAI,KAAK,EAAE,EAQV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uDAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,yBAAyB,QAAQ,0CAA0C;AAC3E;AACA,SAAS;AACT;AACA,kBAAkB,qDAAI;AACtB;AACA,oBAAoB;AACpB;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,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAAQ;AACnC,0BAA0B,kEAAW;AACrC,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,kEAAW;AACrC,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,qGAAqG,sDAAsD,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,sBAAsB,+DAAwB,qBAAqB,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,uBAAuB,+DAAwB,uBAAuB,+DAAwB,CAAC,yEAAyB;AAC/d,yDAAyD,+DAAwB,GAAG,mPAAmP;AACvU,QAAQ,wDAAiB,0FAA0F,sCAAsC;AACzJ,OAAO,aAAa,gEAAyB,4CAA4C,wEAAiC,42CAA42C;AACt+C,QAAQ,wDAAiB;AACzB,QAAQ,oDAAa;AACrB,MAAM;AACN,QAAQ,wDAAiB,SAAS,yDAAkB;AACpD,OAAO,4BAA4B,QAAQ,kDAAW,EAAE,qDAAc,EAAE,sDAAe,EAAE,0DAAmB,EAAE,qDAAc,yHAAyH,uBAAuB,QAAQ,uDAAgB,IAAI,4BAA4B,oCAAoC;AACxW;AACA;AACA,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,0BAA0B;AAChC,MAAM,yBAAyB;AAC/B,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,2BAA2B;AACjC,MAAM,2BAA2B;AACjC,MAAM,MAAM,yEAAkB;AAC9B;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA,8wFAA8wF,aAAa,8UAA8U,aAAa;AACtnG;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,oDAAgB,EAAE,IAAI,0BAA0B,IAAI,yBAAyB,IAAI,MAAM,qDAAiB,EAAE,IAAI,2BAA2B,IAAI,2BAA2B,IAAI,MAAM,yEAAyB,EAAE,IAAI,UAAU;AACjQ,IAAI,KAAK,EAAE,EAoCV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iHAAiH,4DAA4D,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,sBAAsB,+DAAwB,qBAAqB,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,uBAAuB,+DAAwB,uBAAuB,+DAAwB,CAAC,yEAAyB;AACjf,+DAA+D,+DAAwB,GAAG,gMAAgM;AAC1R,QAAQ,wDAAiB,gGAAgG,sCAAsC;AAC/J,OAAO,aAAa,gEAAyB,4CAA4C,wEAAiC,k3CAAk3C;AAC5+C,QAAQ,wDAAiB;AACzB,QAAQ,oDAAa;AACrB,MAAM;AACN,QAAQ,wDAAiB,SAAS,yDAAkB;AACpD,OAAO,4BAA4B,QAAQ,kDAAW,EAAE,qDAAc,EAAE,sDAAe,EAAE,0DAAmB,EAAE,qDAAc,yHAAyH,uBAAuB,QAAQ,uDAAgB,IAAI,4BAA4B,oCAAoC;AACxW;AACA;AACA,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,0BAA0B;AAChC,MAAM,yBAAyB;AAC/B,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,2BAA2B;AACjC,MAAM,2BAA2B;AACjC,MAAM,MAAM,yEAAkB;AAC9B;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA,8wFAA8wF,aAAa,8UAA8U,aAAa;AACtnG;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,oDAAgB,EAAE,IAAI,0BAA0B,IAAI,yBAAyB,IAAI,MAAM,qDAAiB,EAAE,IAAI,2BAA2B,IAAI,2BAA2B,IAAI,MAAM,yEAAyB,EAAE,IAAI,UAAU;;AAEjQ;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,sDAAM;AACxB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,uBAAuB,qDAAqD;AAC5E;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,+FAA+F,mDAAmD,+DAAwB,iCAAiC,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,CAAC,2DAAuB,GAAG,+DAAwB,CAAC,kFAA6B;AAC7Y,sDAAsD,+DAAwB,GAAG,8FAA8F,gPAAgP,aAAa,gCAAgC,oDAAoD,kEAA2B,GAAG;AAC9hB;AACA;AACA,MAAM,qCAAqC;AAC3C,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,MAAM,2DAAgB,EAAE;AAC9B,MAAM,MAAM,kFAAsB;AAClC;AACA;AACA,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,mBAAmB,MAAM,gDAAK,EAAE;AAChC,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,0BAA0B,MAAM,gDAAK,EAAE;AACvC,qBAAqB,MAAM,gDAAK,EAAE;AAClC,sBAAsB,MAAM,gDAAK,EAAE;AACnC,qBAAqB,MAAM,gDAAK,EAAE;AAClC,sBAAsB,MAAM,iDAAM,EAAE;AACpC;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,qCAAqC,IAAI,MAAM,qDAAiB,EAAE,IAAI,MAAM,oDAAgB,EAAE,IAAI,MAAM,2DAAuB,EAAE,IAAI,MAAM,kFAA6B,EAAE,IAAI,IAAI;AAClN,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;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB,IAAI,KAAK,EAAE,EAsEV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA,aAAa,8DAAiB;AAC9B;AACA,iBAAiB,yDAAU;AAC3B,gBAAgB;AAChB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,aAAa,0DAAa;AAC1B;AACA,iBAAiB,yDAAU;AAC3B,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,2CAA2C,qEAAoB;AAC/D,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,cAAc,iEAAU;AACxB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,qCAAqC,GAAG;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAM;AAClB,uBAAuB,GAAG;AAC1B,iCAAiC,kEAAW;AAC5C;AACA,yBAAyB,UAAU;AACnC;AACA,wDAAwD,+DAAQ;AAChE;AACA,yBAAyB,UAAU;AACnC;AACA,wDAAwD,8DAAO;AAC/D;AACA,yBAAyB,UAAU;AACnC;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B,4BAA4B,gEAAS;AACrC;AACA,2CAA2C,WAAW;AACtD;AACA,0BAA0B,gEAAS;AACnC;AACA,8BAA8B,iEAAU;AACxC;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,6CAA6C,+DAAwB,4BAA4B,+DAAwB,mBAAmB,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,4DAAwB;AACzW,gDAAgD,+DAAwB,GAAG,wJAAwJ;AACnO,QAAQ,wDAAiB,mFAAmF,8BAA8B,oFAAoF,oBAAoB,sFAAsF,oCAAoC,0EAA0E,sBAAsB;AAC5c,OAAO,aAAa,gEAAyB,4DAA4D;AACzG;AACA;AACA,MAAM,4CAA4C,MAAM,+CAAI,EAAE,GAAG;AACjE,MAAM,uBAAuB;AAC7B,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,4DAAiB;AAC7B;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU;AAChC,sBAAsB,+CAAI;AAC1B,aAAa,GAAG,IAAI,uBAAuB,IAAI,MAAM,oDAAgB,EAAE,IAAI,MAAM,qDAAiB,EAAE,IAAI,MAAM,4DAAwB,EAAE,IAAI,UAAU;AACtJ,IAAI,KAAK,EAAE,EA8CV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,0CAA0C,qDAAqD,wFAAwF,mEAA4B,+DAA+D;AAC7U,mDAAmD,oEAAkB,GAAG,sDAAsD,uCAAuC,sDAAsD;AAC3N,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;AACtB,IAAI,KAAK,EAAE,EAGV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA,sCAAsC,0CAAO;AAC7C;AACA;AACA;AACA;AACA,2BAA2B,iDAAe;AAC1C;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,8BAA8B,0CAAO;AACrC;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,0BAA0B,sDAAM;AAChC,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA,4CAA4C,0DAAS;AACrD;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,qDAAqD;AAC5E;AACA;AACA,wBAAwB,4BAA4B;AACpD,oBAAoB,2BAA2B;AAC/C;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kBAAkB,sDAAM;AACxB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,6CAA6C,+DAAwB,2BAA2B,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,oDAAgB,GAAG,+DAAwB,CAAC,2DAAuB,GAAG,+DAAwB,CAAC,kFAA6B;AACrX,gDAAgD,+DAAwB,GAAG,wFAAwF,gYAAgY,aAAa,0EAA0E,8CAA8C,kEAA2B,GAAG;AACtsB;AACA;AACA,MAAM,+BAA+B;AACrC,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,oDAAS,EAAE;AACvB,MAAM,MAAM,2DAAgB,EAAE;AAC9B,MAAM,MAAM,kFAAsB;AAClC;AACA;AACA,kBAAkB,MAAM,gDAAK,EAAE;AAC/B,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,qBAAqB,MAAM,gDAAK,EAAE;AAClC,kBAAkB,MAAM,gDAAK,EAAE;AAC/B,mBAAmB,MAAM,gDAAK,EAAE;AAChC,eAAe,MAAM,gDAAK,EAAE;AAC5B,gBAAgB,MAAM,iDAAM,EAAE;AAC9B,iBAAiB,MAAM,iDAAM,EAAE;AAC/B,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,mBAAmB,MAAM,gDAAK,EAAE;AAChC,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,0BAA0B,MAAM,gDAAK,EAAE;AACvC,qBAAqB,MAAM,gDAAK,EAAE;AAClC,sBAAsB,MAAM,gDAAK,EAAE;AACnC,qBAAqB,MAAM,gDAAK,EAAE;AAClC,sBAAsB,MAAM,iDAAM,EAAE;AACpC;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,+BAA+B,IAAI,MAAM,qDAAiB,EAAE,IAAI,MAAM,oDAAgB,EAAE,IAAI,MAAM,2DAAuB,EAAE,IAAI,MAAM,kFAA6B,EAAE,IAAI,IAAI;AAC5M,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,iDAAM;AACxB,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;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;AAChB,IAAI,KAAK,EAAE,EAqHV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA,aAAa,8DAAiB;AAC9B;AACA,iBAAiB,yDAAU;AAC3B,gBAAgB;AAChB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA,aAAa,0DAAa;AAC1B;AACA,iBAAiB,yDAAU;AAC3B,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,4CAA4C,qEAAoB;AAChE,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,kBAAkB,iEAAU;AAC5B,uBAAuB,GAAG;AAC1B;AACA,kBAAkB,iEAAU;AAC5B;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,qCAAqC,GAAG;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,wDAAwD,8DAAO;AAC/D;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,mBAAmB,GAAG;AACtB,kCAAkC,kEAAW;AAC7C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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,aAAa;AACb,KAAK,iBAAiB;AACtB,eAAe,mDAAmD,gEAAyB,uBAAuB,4BAA4B,8lBAA8lB,yBAAyB,QAAQ,0DAAY,EAAE,gEAAoB,IAAI,yBAAyB,iVAAiV,IAAI;;AAEjqC;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,eAAe,iEAAU;AACzB;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C,0BAA0B,uDAAY;AACtC,oCAAoC,uDAAY;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,uCAAuC,kCAAkC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AA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c,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D,4CAA4C,oEAAkB,GAAG,+CAA+C,gCAAgC,+CAA+C;AAC/L,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,YAAY,UAAU;AAC5C,IAAI,KAAK,EAAE,EAmCV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA,aAAa,8DAAiB;AAC9B;AACA,iBAAiB,yDAAU;AAC3B,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA;AACA;AACA,oCAAoC,uDAAY;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,qEAAqE,sCAAsC,+DAAwB;AACnI,yCAAyC,+DAAwB,GAAG,iHAAiH;AACrL,QAAQ,yDAAkB;AA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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2DAA2D,kCAAkC;AACzH,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,cAAc;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA,sDAAsD,sBAAsB,iBAAiB;AAC7F;AACA,8BAA8B,0LAA0L;AACxN;AACA;AACA,8BAA8B,+EAA+E,KAAK,YAAY;AAC9H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,gCAAgC,IAAI,UAAU;AAC9E,IAAI,KAAK,EAAE,EAWV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB,0DAAK;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,sCAAsC;AACtC;AACA,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,uEAAuE,uCAAuC,+DAAwB;AACtI,0CAA0C,+DAAwB,GAAG,s1BAAs1B;AAC35B,QAAQ,wDAAiB;AACzB,MAAM;AACN,QAAQ,wDAAiB;AACzB,OAAO,eAAe,kDAAW,EAAE,qDAAc,EAAE,qDAAc,kBAAkB;AACnF;AACA;AACA,MAAM;AACN;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gDAAgD,kCAAkC;AAC9G,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD,4BAA4B,sNAAsN;AAClP;AACA;AACA,4BAA4B,yEAAyE,KAAK,YAAY;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,gCAAgC,IAAI,UAAU;AAC9E,IAAI,KAAK,EAAE,EASV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,gBAAgB,0DAAK;AACrB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,qCAAqC;AACrC;AACA,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,sCAAsC,+DAAwB;AACnI,yCAAyC,+DAAwB,GAAG,00BAA00B;AAC94B,QAAQ,wDAAiB;AACzB,MAAM;AACN,QAAQ,wDAAiB;AACzB,OAAO,eAAe,kDAAW,EAAE,qDAAc,EAAE,qDAAc,kBAAkB;AACnF;AACA;AACA,MAAM;AACN;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2DAA2D,kCAAkC;AACzH,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD,4BAA4B,sNAAsN;AAClP;AACA;AACA,4BAA4B,yEAAyE,KAAK,YAAY;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,gCAAgC,IAAI,UAAU;AAC9E,IAAI,KAAK,EAAE,EAOV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+DAA+D;AAC/D,sCAAsC,8DAAuB,GAAG,wBAAwB;AACxF,sCAAsC,8DAAuB,GAAG,WAAW,0DAAY,EAAE,wDAAW,IAAI;AACxG,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,mDAAQ;AACtB;AACA,0BAA0B,0DAAY,EAAE,wDAAW;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;AACtB,eAAe,mDAAmD,gEAAyB,qBAAqB,4BAA4B,wHAAwH,yBAAyB,QAAQ,0DAAY,EAAE,wDAAW,IAAI,yBAAyB,0HAA0H,IAAI;;AAEzd;AACA;AACA,cAAc,wFAAwF;AACtG;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;;AAEwnC;;;;;;;;;;;;;;;;;;;;;;;;;ACx7RrjC;AACS;;AAE5E;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,wBAAwB,iDAAe;AACvC;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,uDAAuD,yDAAS,CAAC,gDAAc;AAC/E,mBAAmB,GAAG;AACtB,2CAA2C,oDAAI;AAC/C,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,wBAAwB,4CAAU;AAClC;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,yCAAyC,mDAAG;AAC5C,4BAA4B,oEAAoB;AAChD;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAWV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAKV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;;AAEgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnJmL;AACpH;AACvB;AACT;;AAE/D;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACwC;AACiB;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD,iCAAiC,gEAAyB,GAAG,6CAA6C;AAC1G,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,YAAY,UAAU;AAC5C,IAAI,KAAK,EAAE,EA+BV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAGV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD,mCAAmC,gEAAyB,GAAG,iDAAiD;AAChH,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB;AACtB,IAAI,KAAK,EAAE,EA2DV;AACD,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,0CAA0C,yDAAc;AACxD,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,iEAAiE,0DAAK;AACtE,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,0DAAK;AACrE;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,6EAA6E,0CAA0C,+DAAwB,gBAAgB,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,oDAAgB;AACrP,6CAA6C,+DAAwB,GAAG,kNAAkN;AAC1R,QAAQ,wDAAiB,sFAAsF,oCAAoC,mFAAmF,iCAAiC,+EAA+E,0BAA0B,SAAS,6DAAsB,2FAA2F,2BAA2B,SAAS,6DAAsB;AACpiB,MAAM;AACN,QAAQ,yDAAkB;AAC1B,OAAO,mKAAmK;AAC1K,QAAQ,6DAAsB;AAC9B,QAAQ,4DAAqB;AAC7B,QAAQ,0DAAmB;AAC3B,QAAQ,0DAAmB;AAC3B,MAAM;AACN,QAAQ,wDAAiB;AACzB,OAAO,oBAAoB;AAC3B;AACA;AACA,MAAM,oBAAoB;AAC1B,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,oDAAS;AACrB;AACA;AACA,uBAAuB,MAAM,uDAAY,oCAAoC;AAC7E,oBAAoB,MAAM,uDAAY,kCAAkC;AACxE,mBAAmB,MAAM,uDAAY,8BAA8B;AACnE,cAAc,MAAM,uDAAY,6CAA6C;AAC7E;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,oBAAoB,IAAI,MAAM,qDAAiB,EAAE,IAAI,MAAM,oDAAgB,EAAE,IAAI;AACjH;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,kBAAkB,uDAAY;AAC9B;AACA,SAAS;AACT;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,kBAAkB,uDAAY;AAC9B;AACA,SAAS;AACT;AACA,gBAAgB;AAChB;AACA;AACA,kBAAkB,uDAAY;AAC9B;AACA,SAAS;AACT;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,kBAAkB,uDAAY;AAC9B;AACA,SAAS,GAAG,IAAI;AAChB,IAAI,KAAK,EAAE,EA+BV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,wEAAwE,eAAe;AACvF;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,kEAAkE,cAAc;AAChF;AACA;AACA,qEAAqE,cAAc;AACnF;AACA,aAAa,0DAAK;AAClB;AACA,sEAAsE,gBAAgB;AACtF;AACA;AACA,yEAAyE,gBAAgB;AACzF;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,kEAAkE,gBAAgB;AAClF,YAAY,6DAAY;AACxB;AACA;AACA;AACA;AACA,2EAA2E,yCAAyC,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,oDAAgB;AAC1M,4CAA4C,+DAAwB,GAAG,sLAAsL,oBAAoB;AACjR;AACA;AACA,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,oDAAS;AACrB;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA,wBAAwB;AACxB,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,qDAAiB,EAAE,IAAI,MAAM,oDAAgB,EAAE,IAAI,UAAU;AACnG,IAAI,KAAK,EAAE,EAeV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uDAAY;AACtC;AACA;AACA;AACA;AACA,2BAA2B,uDAAY;AACvC;AACA;AACA;AACA;AACA,0BAA0B,uDAAY;AACtC;AACA;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;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,gBAAgB;AAChB;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yDAAU,IAAI,8DAAe;AACzC,gBAAgB,iFAAkC;AAClD;AACA;AACA;AACA,wCAAwC,8DAAe;AACvD;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oEAAqB;AAC7B,QAAQ,oEAAqB;AAC7B;AACA;AACA,aAAa,0DAAK;AAClB;AACA;AACA;AACA;AACA,kCAAkC,kEAAmB;AACrD,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yDAAU,IAAI,8DAAe;AAC7C,gBAAgB,0EAA2B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAY;AACxB;AACA;AACA;AACA,aAAa,0DAAK;AAClB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,oBAAoB,yDAAU,IAAI,8DAAe;AACjD,+CAA+C,8DAAe;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mCAAmC;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,uCAAuC,kEAAmB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,WAAW;AACX;AACA;AACA;AACA;A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CA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kCAAkC;AAC9D;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,uBAAuB,8CAA8C;AACrE,uBAAuB,2CAA2C;AAClE;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT,kCAAkC,uDAAY;AAC9C,gCAAgC,uDAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AA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CjB,EAAE;AACF,oBAAoB,2DAAoB;AACxC,IAAI,+DAAwB;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,+DAA+D;AAC/D,4CAA4C,oEAAkB,GAAG,+CAA+C,gCAAgC,+CAA+C;AAC/L,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,YAAY,UAAU;AAC5C,IAAI,KAAK,EAAE,EAKV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA,aAAa,6DAAiB;AAC9B;AACA,iBAAiB,yDAAU;AAC3B,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA,gDAAgD,oBAAoB;AACpE;AACA;AACA,+BAA+B,uDAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,sCAAsC;AACtC;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,4BAA4B,GAAG,eAAe,IAAI,uBAAuB,GAAG,sBAAsB,IAAI;AACtG;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AAC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AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,sCAAsC;AACtC;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,4BAA4B,GAAG,eAAe,IAAI,uBAAuB,GAAG,sBAAsB,IAAI;AACtG;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,sCAAsC,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,oBAAoB,+DAAwB,CAAC,4DAAwB;AACrP,yCAAyC,+DAAwB,GAAG,kEAAkE,kiBAAkiB,aAAa,kDAAkD,aAAa,gEAAyB,i7BAAi7B;AAC9rD,QAAQ,4DAAqB;AAC7B,QAAQ,wDAAiB;AACzB,QAAQ,wDAAiB;AACzB,QAAQ,wDAAiB;AACzB,QAAQ,wDAAiB;AACzB,QAAQ,wDAAiB;AACzB,QAAQ,0DAAmB;AAC3B,QAAQ,wDAAiB,8EAA8E,oEAA6B;AACpI,QAAQ,wDAAiB,8EAA8E,oEAA6B;AACpI,QAAQ,wDAAiB,gFAAgF,oEAA6B;AACtI,QAAQ,wDAAiB,gFAAgF,oEAA6B;AACtI,QAAQ,wDAAiB,iFAAiF,oEAA6B;AACvI,MAAM;AACN,QAAQ,wDAAiB;AACzB,QAAQ,uDAAgB;AACxB,QAAQ,wDAAiB;AACzB,QAAQ,uDAAgB;AACxB,QAAQ,wDAAiB;AACzB,QAAQ,uDAAgB;AACxB,QAAQ,wDAAiB;AACzB,QAAQ,uDAAgB;AACxB,QAAQ,wDAAiB;AACzB,QAAQ,uDAAgB;AACxB,QAAQ,wDAAiB;AACzB,OAAO,eAAe,oDAAc,EAAE,iDAAW,EAAE,6DAAuB,EAAE,oDAAc,qBAAqB;AAC/G;AACA;AACA,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,wBAAwB;AAC9B,MAAM,MAAM,4DAAiB;AAC7B;AACA;AACA,cAAc,MAAM,gDAAK,EAAE;AAC3B,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,sBAAsB,MAAM,gDAAK,EAAE;AACnC,uBAAuB,MAAM,gDAAK,EAAE;AACpC,kBAAkB,MAAM,gDAAK,EAAE;AAC/B,qBAAqB,MAAM,gDAAK,EAAE;AAClC,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,eAAe,MAAM,gDAAK,EAAE;AAC5B,qBAAqB,MAAM,gDAAK,EAAE;AAClC,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,2BAA2B,MAAM,gDAAK,EAAE;AACxC,2BAA2B,MAAM,gDAAK,EAAE;AACxC,+BAA+B,MAAM,gDAAK,EAAE;AAC5C,4BAA4B,MAAM,gDAAK,EAAE;AACzC,2BAA2B,MAAM,gDAAK,EAAE;AACxC,iBAAiB,MAAM,iDAAM,EAAE;AAC/B,oBAAoB,MAAM,iDAAM,EAAE;AAClC,qBAAqB,MAAM,gDAAK,EAAE;AAClC,mBAAmB,MAAM,gDAAK,EAAE;AAChC;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA,0ZAA0Z,sDAAsD,2YAA2Y,sDAAsD,waAAwa,qDAAqD,+XAA+X,kDAAkD,gYAAgY,kDAAkD,sGAAsG,YAAY,uDAAuD,kBAAkB,2DAA2D,sBAAsB,wDAAwD,mBAAmB,uDAAuD,kBAAkB;AACjnF;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,qDAAiB,EAAE,IAAI,wBAAwB,IAAI,MAAM,4DAAwB,EAAE,IAAI,IAAI;AACjI,kBAAkB,iDAAM;AACxB,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;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;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;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB,IAAI,KAAK,EAAE,EAyIV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+DAA+D;AAC/D,sCAAsC,8DAAuB,GAAG,wBAAwB;AACxF,sCAAsC,8DAAuB,GAAG,WAAW,yDAAY,IAAI;AAC3F,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,mDAAQ;AACtB;AACA,0BAA0B,yDAAY;AACtC;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;AACtB,eAAe,mDAAmD,gEAAyB,qBAAqB,4BAA4B,+CAA+C,yBAAyB,QAAQ,yDAAY,IAAI,yBAAyB,iDAAiD,IAAI;;AAE1T;AACA;AACA,cAAc,wFAAwF;AACtG;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;;AAEgK;;;;;;;;;;;;;;;;;;;;;;;;;;AC5sC1D;AAClD;AAC0B;;AAE9E;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACwC;AACxC;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,sCAAsC,GAAG;AACzC;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iCAAiC;AAC7C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd,4CAA4C,GAAG,mDAAmD,GAAG;AACrG,WAAW,GAAG;AACd,4CAA4C,GAAG,kEAAkE,GAAG;AACpH;AACA,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA,YAAY,0BAA0B;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,0CAA0C,GAAG,aAAa,MAAM;AAChE,sCAAsC,GAAG,aAAa,MAAM;AAC5D;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,iCAAiC,GAAG,qBAAqB,KAAK,iBAAiB,GAAG,qBAAqB,KAAK,iBAAiB,GAAG,qBAAqB,KAAK,iBAAiB,GAAG,qBAAqB,KAAK,iBAAiB,GAAG,qBAAqB,KAAK;AACtP,iCAAiC,GAAG,qBAAqB,KAAK;AAC9D,+CAA+C,GAAG,aAAa,mCAAmC;AAClG,+CAA+C,GAAG,aAAa,uCAAuC;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,yCAAyC,cAAc,2EAA2E;AAClI;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,uBAAuB;AACvB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA,mBAAmB,eAAe;AAClC;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA,0CAA0C,KAAK,iBAAiB,2BAA2B;AAC3F;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA,OAAO,eAAe;AACtB;AACA;AACA,KAAK;AACL;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL,eAAe,GAAG;AAClB;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,kFAAkF,kBAAkB;AACpG,gDAAgD,UAAU;AAC1D;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB,mBAAmB;AACnB;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA,4BAA4B,GAAG;AAC/B;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,iBAAiB,GAAG;AACpB;AACA;AACA;AACA,iBAAiB,GAAG;AACpB;AACA,uBAAuB,GAAG;AAC1B;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA,kFAAkF,eAAe;AACjG,kFAAkF,eAAe;AACjG,+DAA+D,eAAe;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,6BAA6B;AACtG;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,qBAAqB,EAAE,KAAK;AAC5E;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA,oEAAoE,GAAG;AACvE,qBAAqB,GAAG;AACxB,yBAAyB,GAAG;AAC5B;AACA;AACA,4BAA4B,GAAG,0EAA0E,GAAG;AAC5G,qBAAqB,GAAG;AACxB,gCAAgC,GAAG,iFAAiF,GAAG;AACvH;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB,qDAAqD,gBAAgB;AACrE,eAAe,GAAG;AAClB,qDAAqD,gBAAgB;AACrE;AACA,eAAe,GAAG;AAClB;AACA;AACA,qCAAqC,GAAG;AACxC;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,gCAAgC,GAAG;AACnC,gCAAgC,GAAG;AACnC;AACA,eAAe,GAAG;AAClB,0CAA0C,GAAG;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,UAAU;AACpE,gEAAgE;AAChE;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,mDAAmD,WAAW;AAC9D;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA,YAAY,wCAAwC;AACpD;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B,qCAAqC,GAAG;AACxC,6BAA6B,GAAG;AAChC;AACA;AACA,8CAA8C,GAAG;AACjD;AACA,qBAAqB;AACrB,SAAS;AACT;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA,6BAA6B,GAAG;AAChC;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,qCAAqC,GAAG;AACpG,KAAK;AACL;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA,gBAAgB,eAAe;AAC/B,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;AACA,4DAA4D;AAC5D,4DAA4D,GAAG,+CAA+C,GAAG;AACjH,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,IAAI;AACf,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,kCAAkC,aAAa,MAAM,YAAY;AACjE,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EA0CV;AACD;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA,4BAA4B,yCAAO;AACnC;AACA;AACA,YAAY,kEAAiB;AAC7B;AACA,wBAAwB;AACxB;AACA;AACA,qCAAqC,2CAAK,CAAC,+CAAS,qBAAqB,eAAe,GAAG,+CAAS,qBAAqB,eAAe;AACxI;AACA,gBAAgB,wCAAE,IAAI,yDAAuB;AAC7C;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,GAAG;AAClC,gCAAgC;AAChC;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mEAAmE,qCAAqC,sDAAe,CAAC,iDAAa,GAAG,sDAAe,CAAC,2DAAuB,GAAG,sDAAe,CAAC,sDAAW;AAC7M,yCAAyC,gEAAyB,GAAG,6DAA6D;AAClI;AACA;AACA,MAAM,MAAM,iDAAM,EAAE;AACpB,MAAM,MAAM,2DAAgB,EAAE;AAC9B,MAAM,6BAA6B,MAAM,iDAAM,SAAS,sDAAW,IAAI;AACvE;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,MAAM,iDAAa,EAAE,IAAI,MAAM,2DAAuB,EAAE,IAAI;AAC5F,sBAAsB,iDAAM;AAC5B,uBAAuB,sDAAW;AAClC,aAAa,GAAG,IAAI,UAAU;AAC9B,IAAI,KAAK,EAAE,EA0BV;AACD;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qDAAU;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;;AAE6D;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9hDiI;AAC/G;AAChC;AACyB;AACT;AAClC;AACkB;;AAE/C;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACwC;AACiB;AACL;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD,yCAAyC,oEAAkB,GAAG,4CAA4C,6BAA6B,4CAA4C;AACnL,IAAI,KAAK,EAAE,EA0BV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,eAAe,0DAAK;AACpB;AACA;AACA,gBAAgB;AAChB;AACA;AACA,0BAA0B;AAC1B;AACA,iCAAiC,eAAe;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,4CAA4C,+DAAwB;AACrJ,+CAA+C,+DAAwB,GAAG,8LAA8L;AACxQ,QAAQ,yDAAkB;AAC1B,QAAQ,wDAAiB;AACzB,QAAQ,yDAAkB;AAC1B,OAAO,8KAA8K;AACrL,QAAQ,6DAAsB;AAC9B,QAAQ,uDAAgB;AACxB,QAAQ,4DAAqB;AAC7B,QAAQ,0DAAmB;AAC3B,QAAQ,0DAAmB;AAC3B,OAAO,sCAAsC,uBAAuB,6BAA6B,OAAO,oEAAoE,0BAA0B,OAAO,2CAA2C,wBAAwB,OAAO,kFAAkF,oBAAoB,OAAO,2IAA2I,wBAAwB,OAAO,wBAAwB;AACtkB;AACA;AACA,MAAM;AACN;AACA,IAAI,KAAK,EAAE,EAWV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uDAAY;AACnD;AACA;AACA,uBAAuB,0CAA0C;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,QAAQ,6DAAQ;AAChB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,QAAQ,6DAAQ;AAChB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,QAAQ,6DAAQ;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,QAAQ,6DAAQ;AAChB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,QAAQ,6DAAQ;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,QAAQ,6DAAQ;AAChB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,QAAQ,6DAAQ;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,QAAQ,6DAAQ;AAChB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,QAAQ,6DAAQ;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,QAAQ,6DAAQ;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,QAAQ,6DAAQ;AAChB;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,QAAQ,6DAAQ;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,QAAQ,6DAAQ;AAChB;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB;AAChB;AACA;AACA,yDAAyD,eAAe;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA,+BAA+B,eAAe;AAC9C,aAAa;AACb,SAAS;AACT,mBAAmB,GAAG;AACtB;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,sCAAsC,2CAAK;AAC3C,wBAAwB;AACxB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gBAAgB,kEAAa;AAC7B;AACA,2BAA2B,GAAG;AAC9B,4BAA4B;AAC5B;AACA;AACA;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G;AACd;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,KAAK;AACL,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,KAAK;AACL;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,KAAK;AACL;AACA,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,KAAK;AACL;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,qEAAqE,GAAG,MAAM;AAC9E,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,4BAA4B,qBAAqB;AACjD;AACA,8BAA8B,6BAA6B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAuBV;;AAED;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB,2BAA2B,YAAY;AACvC;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;AACA,WAAW,GAAG;AACd;AACA,WAAW,GAAG;AACd;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,SAAS,wDAAS;AAClB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;;AAEA;AACA;AACA,cAAc,wFAAwF;AACtG;;AAE+M;;;;;;;;;;;;;;;;;;;;;;;;AC/1B3D;AACpF;AACjB;;AAEP;AACxC;AACA;AACA;AACA;AACA,CAAC,sDAAsD;AACvD,+BAA+B,yDAAc;;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;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,oFAAoF;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,EAAE;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,cAAc,qBAAqB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,eAAe;AACzD;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,cAAc,gDAAgD;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,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;;AAEA;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,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,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;;AAEA;AACA,aAAa,6DAAiB;AAC9B,iBAAiB,yDAAU;AAC3B;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,4DAA4D;AAC5D;AACA;AACA;AACA,4FAA4F;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,yEAAyE,wCAAwC,+DAAwB,2BAA2B,+DAAwB,CAAC,qDAAiB,GAAG,+DAAwB,CAAC,0DAAsB;AAChQ,2CAA2C,+DAAwB,GAAG,yIAAyI;AAC/M,QAAQ,wDAAiB,0EAA0E,gCAAgC,yEAAyE,+BAA+B,6EAA6E,iCAAiC,iFAAiF,mCAAmC,mFAAmF,oCAAoC,6EAA6E,iCAAiC,2EAA2E,gCAAgC;AAC7xB,OAAO,YAAY,oBAAoB,aAAa,gEAAyB,2CAA2C;AACxH;AACA,MAAM,gCAAgC,MAAM,mDAAQ,EAAE,IAAI,MAAM,iDAAM,iCAAiC,GAAG;AAC1G,MAAM,MAAM,qDAAU,EAAE;AACxB,MAAM,MAAM,0DAAe;AAC3B;AACA;AACA,MAAM,gCAAgC,MAAM,mDAAQ,EAAE,IAAI,MAAM,iDAAM,iCAAiC,GAAG;AAC1G,MAAM,MAAM,qDAAU,EAAE;AACxB,M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C1C;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,kCAAkC,gEAAyB,GAAG,mEAAmE;AACjI,iDAAiD,oEAAkB,GAAG,0CAA0C,2BAA2B,0CAA0C;AACrL,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAuDV;;AAED;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA,mDAAmD,KAAK;AACxD,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,eAAe,GAAG;AAClB;AACA,oBAAoB,SAAS;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA;AACA;AACA,IAAI,KAAK,EAAE,EAKV;AACD;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,eAAe,gDAAS;AACxB,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,eAAe,gDAAS;AACxB,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,qBAAqB;AACrB;AACA;AACA;AACA,8CAA8C;AAC9C,qBAAqB;AACrB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D,uCAAuC,gEAAyB,GAAG,6EAA6E;AAChJ,sDAAsD,oEAAkB,GAAG,+CAA+C,gCAAgC,+CAA+C;AACzM,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,YAAY,UAAU;AAC5C,IAAI,KAAK,EAAE,EAMV;;AAED;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA,2BAA2B,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E,6CAA6C,gEAAyB,GAAG,yFAAyF;AAClK,4DAA4D,oEAAkB,GAAG,qDAAqD,sCAAsC,qDAAqD;AACjO,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,WAAW,GAAG;AACd,YAAY;AACZ;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,GAAG,iBAAiB,GAAG;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uDAAY;AAC5C,kCAAkC,uDAAY;AAC9C,+BAA+B,uDAAY;AAC3C,gCAAgC,uDAAY;AAC5C,mCAAmC,uDAAY;AAC/C;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA,mBAAmB,GAAG;AACtB,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA,sCAAsC,cAAc;AACpD;AACA;AACA;AACA;AACA,iBAAiB,wDAAS;AAC1B;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA,mBAAmB,GAAG;AACtB;AACA;AACA;AACA,yBAAyB,wBAAwB;AACjD;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,eAAe,GAAG;AAClB,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,wJAAwJ;AACjM;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,iMAAiM;AAC1O;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,uBAAuB,GAAG;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,wCAAwC,+DAAwB,eAAe,+DAAwB,0BAA0B,+DAAwB,oBAAoB,+DAAwB,CAAC,mEAAmB,GAAG,+DAAwB,CAAC,4DAAwB;AACtV,2CAA2C,+DAAwB,GAAG,wHAAwH;AAC9L,QAAQ,yDAAkB;AAC1B,QAAQ,yDAAkB;AAC1B,MAAM;AACN;AACA,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ACA,cAAc,yGAAyG;AACvH;;AAE0J;;;;;;;;;;;;;;;;;;;;ACjwEnF;AAC9B;;AAEzC;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACwC;AACxC;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA,qCAAqC,qDAAY,kCAAkC;AACnF;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA,iCAAiC,qDAAY,kCAAkC;AAC/E;AACA;AACA,eAAe,IAAI;AACnB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,+EAA+E,2CAA2C,+DAAwB,CAAC,qDAAiB;AACpK,8CAA8C,+DAAwB,GAAG,6EAA6E,sDAAsD,kJAAkJ;AAC9V,QAAQ,uDAAgB;AACxB,MAAM;AACN,QAAQ,wDAAiB;AACzB,OAAO,oBAAoB;AAC3B;AACA;AACA,MAAM,MAAM,qDAAU;AACtB;AACA;AACA,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,cAAc,MAAM,gDAAK,EAAE;AAC3B,eAAe,MAAM,gDAAK,EAAE;AAC5B;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA,iGAAiG;AACjG,aAAa;AACb,KAAK,iBAAiB,UAAU,MAAM,qDAAiB,EAAE,IAAI,IAAI;AACjE,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB,IAAI,KAAK,EAAE,EAuBV;;AAED;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;AACA;AACA;AACA,yEAAyE;AACzE,2CAA2C,8DAAuB,GAAG,6BAA6B;AAClG,2CAA2C,8DAAuB,GAAG,eAAe;AACpF,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,mDAAQ;AACtB;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB;AACtB,eAAe,mDAAmD,gEAAyB,0BAA0B,+EAA+E,IAAI;;AAExM;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;;AAEA;AACA;AACA;AACA,cAAc,yGAAyG;AACvH;;AAE2D;;;;;;;;;;;;;;;;;;ACpMV;;;;;;;;;;;;;;;;;ACAjD;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,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,gCAAgC;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,0DAA0D,yBAAyB,MAAM,wBAAwB;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;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,mDAAmD,2BAA2B;AAC9E;AACA;AACA;AACA;AACA;AACA,iEAAiE,wDAAwD;AACzH;AACA;AACA,2DAA2D,wBAAwB;AACnF;AACA;AACA,oDAAoD,sCAAsC;AAC1F;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,6BAA6B;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,8BAA8B;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAyD;AAC7D;AACA,MAAM,EAKsB;AAC5B,CAAC;AACD,qCAAqC;AACrC;AACA;AACA;AACA;AACA,mBAAmB,8BAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,8BAAmB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA;AACA,UAAU,8BAAmB;AAC7B,eAAe,8BAAmB;AAClC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA,oCAAoC,4BAA4B;AAChE,0CAA0C;AAC1C,WAAW,8BAAmB;AAC9B;AACA;AACA;AACA;AACA,UAAU,8BAAmB,kCAAkC;AAC/D;AACA;AACA,UAAU,8BAAmB;AAC7B;AACA;AACA,iBAAiB,8BAAmB,CAAC,8BAAmB;AACxD,UAAU;AACV;AACA;AACA;AACA,iCAAiC,+BAAmB;;AAEpD;;AAEA,+CAA+C,aAAa;AAC5D,kBAAkB,+BAAmB;AACrC,eAAe,+BAAmB;AAClC,aAAa,+BAAmB;AAChC,eAAe,+BAAmB;AAClC,eAAe,+BAAmB;AAClC,cAAc,+BAAmB;AACjC,cAAc,+BAAmB;AACjC,aAAa,+BAAmB;AAChC,mBAAmB,+BAAmB;AACtC,cAAc,+BAAmB;AACjC,cAAc,+BAAmB;AACjC,cAAc,+BAAmB;AACjC,eAAe,+BAAmB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,+CAA+C,aAAa;AAC5D;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,CAAC,8CAA8C;AAC/C;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,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,qBAAqB,uBAAuB;AAC5C;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;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,+BAAmB;;AAEpD,WAAW,+BAAmB;AAC9B,YAAY,+BAAmB;AAC/B,aAAa,+BAAmB;AAChC,SAAS,+BAAmB;;;AAG5B,8CAA8C;;;AAG9C;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,kBAAkB;AACvC;;AAEA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,QAAQ;AACR,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;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,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ,YAAY;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,4BAA4B,iDAAiD;;AAE7E;AACA,OAAO;AACP,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,gCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;;AAEA,iCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,sDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,oBAAoB,OAAO,4CAA4C,4BAA4B,qBAAqB,OAAO,uBAAuB,4BAA4B,oBAAoB;;AAEzc,cAAc,gCAAmB;;AAEjC;;AAEA,kBAAkB,gCAAmB;;AAErC;;AAEA,iBAAiB,gCAAmB;;AAEpC;;AAEA,aAAa,gCAAmB;;AAEhC;;AAEA,cAAc,gCAAmB;;AAEjC;;AAEA,YAAY,gCAAmB;;AAE/B;;AAEA,uCAAuC,uCAAuC;;AAE9E,kDAAkD,0CAA0C;;AAE5F,kDAAkD,aAAa,yFAAyF;;AAExJ,2CAA2C,+DAA+D,uGAAuG,yEAAyE,eAAe,0EAA0E,GAAG;;AAEtX;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,OAAO;AACP;AACA,iCAAiC,gCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;;AAEA,qGAAqG,qBAAqB,mBAAmB;;AAE7I,mCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,uCAAuC,cAAc,WAAW,YAAY,UAAU,MAAM,2CAA2C,UAAU,sBAAsB,eAAe,2BAA2B,0BAA0B,cAAc,2CAA2C,gCAAgC,OAAO,mFAAmF;;AAErpB,iCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,gCAAmB;;AAEnB,kBAAkB,gCAAmB;;AAErC;;AAEA,cAAc,gCAAmB;;AAEjC;;AAEA,gBAAgB,gCAAmB;;AAEnC;;AAEA,cAAc,gCAAmB;;AAEjC;;AAEA,iBAAiB,gCAAmB;;AAEpC;;AAEA,iBAAiB,gCAAmB;;AAEpC;;AAEA,cAAc,gCAAmB;;AAEjC;;AAEA,cAAc,gCAAmB;;AAEjC;;AAEA,aAAa,gCAAmB;;AAEhC;;AAEA,uCAAuC,uCAAuC;;AAE9E,4CAA4C,kBAAkB,kCAAkC,oEAAoE,KAAK,OAAO,oBAAoB;;AAEpM,kDAAkD,0CAA0C;;AAE5F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA,WAAW;AACX;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,+FAA+F;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,yFAAyF;AACzF,UAAU;AACV;AACA;AACA,UAAU;AACV,yFAAyF;AACzF;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,QAAQ;AACR;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,+CAA+C;AAC/C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,MAAK,GAAG,CAAK;;AAE9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG,IAAI;AACP;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,oBAAoB,uBAAuB;AACxF;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA,MAAM;AACN;AACA;AA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ACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA,iCAAiC,gCAAmB;;AAEpD;AACA,iBAAiB,gCAAmB;AACpC,kBAAkB,gCAAmB;;AAErC;AACA;AACA;AACA;AACA;;AAEA,IAAI;AACJ;;AAEA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,WAAW;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,gCAAmB;;AAEpD;;AAEA,+CAA+C,aAAa;AAC5D,eAAe,gCAAmB;AAClC;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;AAGA,OAAO;AACP;AACA,iCAAiC,gCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;;AAEA,mCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,uCAAuC,cAAc,WAAW,YAAY,UAAU,MAAM,2CAA2C,UAAU,sBAAsB,eAAe,2BAA2B,0BAA0B,cAAc,2CAA2C,gCAAgC,OAAO,mFAAmF;;AAErpB,iCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,sDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,oBAAoB,OAAO,4CAA4C,4BAA4B,qBAAqB,OAAO,uBAAuB,4BAA4B,oBAAoB;;AAEzc,kBAAkB,gCAAmB;;AAErC;;AAEA,iBAAiB,gCAAmB;;AAEpC;;AAEA,aAAa,gCAAmB;;AAEhC;;AAEA,cAAc,gCAAmB;;AAEjC;;AAEA,YAAY,gCAAmB;;AAE/B;;AAEA,uCAAuC,uCAAuC;;AAE9E,kDAAkD,0CAA0C;;AAE5F,kDAAkD,aAAa,yFAAyF;;AAExJ,2CAA2C,+DAA+D,uGAAuG,yEAAyE,eAAe,0EAA0E,GAAG;;AAEtX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA,iCAAiC,gCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;;AAED,qGAAqG,qBAAqB,mBAAmB;;AAE7I,mCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,uCAAuC,cAAc,WAAW,YAAY,UAAU,MAAM,2CAA2C,UAAU,sBAAsB,eAAe,2BAA2B,0BAA0B,cAAc,2CAA2C,gCAAgC,OAAO,mFAAmF;;AAErpB,iCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,kBAAkB,gCAAmB;;AAErC;;AAEA,UAAU,gCAAmB;;AAE7B;;AAEA,iBAAiB,gCAAmB;;AAEpC;;AAEA,YAAY,gCAAmB;;AAE/B;;AAEA,cAAc,gCAAmB;;AAEjC;;AAEA,aAAa,gCAAmB;;AAEhC;;AAEA,aAAa,gCAAmB;;AAEhC;;AAEA,aAAa,gCAAmB;;AAEhC;;AAEA,iBAAiB,gCAAmB;;AAEpC;;AAEA,cAAc,gCAAmB;;AAEjC;;AAEA,uCAAuC,uCAAuC;;AAE9E,4CAA4C,kBAAkB,kCAAkC,oEAAoE,KAAK,OAAO,oBAAoB;;AAEpM,kDAAkD,0CAA0C;;AAE5F;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;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;;AAEA,kDAAkD;AAClD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA,2FAA2F;AAC3F;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,SAAS;AACT;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG,IAAI;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;;AAEA,OAAO;AACP;AACA,iCAAiC,gCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;;AAEA,mCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,uCAAuC,cAAc,WAAW,YAAY,UAAU,MAAM,2CAA2C,UAAU,sBAAsB,eAAe,2BAA2B,0BAA0B,cAAc,2CAA2C,gCAAgC,OAAO,mFAAmF;;AAErpB,iCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,iBAAiB,gCAAmB;;AAEpC;;AAEA,aAAa,gCAAmB;;AAEhC;;AAEA,iBAAiB,gCAAmB;;AAEpC;;AAEA,gBAAgB,gCAAmB;;AAEnC;;AAEA,cAAc,gCAAmB;;AAEjC;;AAEA,uCAAuC,uCAAuC;;AAE9E,mCAAmC,0BAA0B,0CAA0C,gBAAgB,OAAO,oBAAoB,eAAe,OAAO;;AAExK,kDAAkD,0CAA0C;;AAE5F;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA,UAAU;AACV,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,mEAAmE;AACpF,eAAe,+DAA+D;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;;AAED,iCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,sDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,oBAAoB,OAAO,4CAA4C,4BAA4B,qBAAqB,OAAO,uBAAuB,4BAA4B,oBAAoB;;AAEzc,iBAAiB,iCAAmB;;AAEpC;;AAEA,uCAAuC,uCAAuC;;AAE9E,kDAAkD,0CAA0C;;AAE5F,kDAAkD,aAAa,yFAAyF;;AAExJ,2CAA2C,+DAA+D,uGAAuG,yEAAyE,eAAe,0EAA0E,GAAG;;AAEtX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;AAEA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,+CAA+C,aAAa;AAC5D,oBAAoB,iCAAmB;AACvC,eAAe,iCAAmB;AAClC,eAAe,iCAAmB;AAClC;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,iCAAiC;AACjC;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,SAAS;AACT;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,SAAS;AACT;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,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;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,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;AAEA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,+CAA+C,aAAa;AAC5D,mBAAmB,iCAAmB;AACtC,cAAc,iCAAmB;AACjC,kBAAkB,iCAAmB;AACrC,eAAe,iCAAmB;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;AAGA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;AAEA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,+CAA+C,aAAa;AAC5D,eAAe,iCAAmB;AAClC,eAAe,iCAAmB;AAClC;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,CAAC;AACD;;;AAGA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD,YAAY,iCAAmB;AAC/B,aAAa,iCAAmB;;;AAGhC;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,IAAI;AACX;AACA,KAAK;;AAEL;AACA;AACA;AACA,gCAAgC;AAChC;AACA,6DAA6D;AAC7D;AACA,OAAO,IAAI;AACX;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,eAAe;AACf,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;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;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT,OAAO;AACP,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,oBAAoB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA;AACA,sBAAsB,6BAA6B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;;;AAGA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;;AAED,mCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA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;AAE5F,kDAAkD,aAAa,yFAAyF;;AAExJ,2CAA2C,+DAA+D,uGAAuG,yEAAyE,eAAe,0EAA0E,GAAG;;AAEtX;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,uBAAuB,0CAA0C;AACjE,uBAAuB,sEAAsE,gBAAgB;AAC7G;AACA;AACA,yBAAyB,8BAA8B,IAAI,iBAAiB;AAC5E,yBAAyB,2BAA2B,IAAI,iBAAiB;AACzE,MAAM;AACN,yBAAyB,8BAA8B,IAAI,iCAAiC;AAC5F,yBAAyB,2BAA2B,IAAI,iCAAiC;AACzF;AACA,uBAAuB,8BAA8B,IAAI,kBAAkB;AAC3E,uBAAuB,2BAA2B,IAAI,kBAAkB;AACxE,uBAAuB,0FAA0F,IAAI,4BAA4B;AACjJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;;AAEA,8CAA8C,oBAAoB,iBAAiB;AACnF,wIAAwI,mBAAmB;AAC3J;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+IAA+I,cAAc;AAC7J;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8IAA8I,aAAa;AAC3J;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4GAA4G,oBAAoB;AAChI;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;;AAEA;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;;AAEA;AACA;;AAEA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,oBAAoB;AAClC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,cAAc;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;;AAED,mCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,uCAAuC,cAAc,WAAW,YAAY,UAAU,MAAM,2CAA2C,UAAU,sBAAsB,eAAe,2BAA2B,0BAA0B,cAAc,2CAA2C,gCAAgC,OAAO,mFAAmF;;AAErpB,sDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,oBAAoB,OAAO,4CAA4C,4BAA4B,qBAAqB,OAAO,uBAAuB,4BAA4B,oBAAoB;;AAEzc,iCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,iBAAiB,iCAAmB;;AAEpC;;AAEA,YAAY,iCAAmB;;AAE/B;;AAEA,uCAAuC,uCAAuC;;AAE9E,kDAAkD,0CAA0C;;AAE5F,kDAAkD,aAAa,yFAAyF;;AAExJ,2CAA2C,+DAA+D,uGAAuG,yEAAyE,eAAe,0EAA0E,GAAG;;AAEtX;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;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,SAAS;;AAET;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA,4BAA4B;;;AAG5B;;AAEA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;;AAED,iBAAiB,iCAAmB;;AAEpC;;AAEA,aAAa,iCAAmB;;AAEhC;;AAEA,uCAAuC,uCAAuC;;AAE9E,kDAAkD,0CAA0C;;AAE5F,kDAAkD,aAAa,yFAAyF;;AAExJ,2CAA2C,+DAA+D,uGAAuG,yEAAyE,eAAe,0EAA0E,GAAG;;AAEtX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,CAAC;;AAED;;AAEA;;AAEA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;;AAEA,iCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,sDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,oBAAoB,OAAO,4CAA4C,4BAA4B,qBAAqB,OAAO,uBAAuB,4BAA4B,oBAAoB;;AAEzc,iBAAiB,iCAAmB;;AAEpC;;AAEA,uCAAuC,uCAAuC;;AAE9E,kDAAkD,0CAA0C;;AAE5F,kDAAkD,aAAa,yFAAyF;;AAExJ,2CAA2C,+DAA+D,uGAAuG,yEAAyE,eAAe,0EAA0E,GAAG;;AAEtX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;;AAEA,iCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,sDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,oBAAoB,OAAO,4CAA4C,4BAA4B,qBAAqB,OAAO,uBAAuB,4BAA4B,oBAAoB;;AAEzc,cAAc,iCAAmB;;AAEjC;;AAEA,uCAAuC,uCAAuC;;AAE9E,kDAAkD,0CAA0C;;AAE5F,kDAAkD,aAAa,yFAAyF;;AAExJ,2CAA2C,+DAA+D,uGAAuG,yEAAyE,eAAe,0EAA0E,GAAG;;AAEtX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;;AAED,qGAAqG,qBAAqB,mBAAmB;;AAE7I,iCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,gBAAgB,iCAAmB;;AAEnC;;AAEA,gBAAgB,iCAAmB;;AAEnC;;AAEA,uCAAuC,uCAAuC;;AAE9E,kDAAkD,0CAA0C;;AAE5F;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;;AAEA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;;AAED,iBAAiB,iCAAmB;;AAEpC;;AAEA,aAAa,iCAAmB;;AAEhC;;AAEA,aAAa,iCAAmB;;AAEhC;;AAEA,aAAa,iCAAmB;;AAEhC;;AAEA,iBAAiB,iCAAmB;;AAEpC;;AAEA,cAAc,iCAAmB;;AAEjC;;AAEA,aAAa,iCAAmB;;AAEhC;;AAEA,cAAc,iCAAmB;;AAEjC;;AAEA,cAAc,iCAAmB;;AAEjC;;AAEA,YAAY,iCAAmB;;AAE/B;;AAEA,iBAAiB,iCAAmB;;AAEpC;;AAEA,eAAe,iCAAmB;;AAElC;;AAEA,gBAAgB,iCAAmB;;AAEnC;;AAEA,uCAAuC,uCAAuC;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;;AAEA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;AAEA,+CAA+C,aAAa;AAC5D,eAAe,iCAAmB;AAClC;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;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,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,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;AAGA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;AAEA,+CAA+C,aAAa;AAC5D,mBAAmB,iCAAmB;AACtC,cAAc,iCAAmB;AACjC,cAAc,iCAAmB;AACjC,eAAe,iCAAmB;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,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,SAAS,IAAI;AACb;AACA;AACA,CAAC;AACD;;;AAGA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;AAEA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,+CAA+C,aAAa;AAC5D,mBAAmB,iCAAmB;AACtC;AACA;AACA;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA,CAAC;AACD;;;AAGA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;AAEA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,+CAA+C,aAAa;AAC5D,mBAAmB,iCAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;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,CAAC;AACD;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA,CAAC;;AAED,iCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,kDAAkD,0CAA0C;;AAE5F;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA,uFAAuF;AACvF;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;;AAED,iCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,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ACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2HAA2H,wBAAwB;AACnJ;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;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,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,OAAO;AACP;AACA;;AAEA;;AAEA,+CAA+C,aAAa;AAC5D;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;AAGA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;AAEA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,+CAA+C,aAAa;AAC5D,kBAAkB,iCAAmB;AACrC,eAAe,iCAAmB;AAClC;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC,kCAAkC;AAClC;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,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;AAGA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;AAEA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,+CAA+C,aAAa;AAC5D,eAAe,iCAAmB;AAClC,eAAe,iCAAmB;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,aAAa;AACb;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,CAAC;AACD;;;AAGA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;AAEA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,+CAA+C,aAAa;AAC5D,eAAe,iCAAmB;AAClC,eAAe,iCAAmB;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,CAAC;AACD;;;AAGA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;AAEA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,+CAA+C,aAAa;AAC5D,aAAa,iCAAmB;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,CAAC;AACD;;;AAGA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;AAEA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,+CAA+C,aAAa;AAC5D,aAAa,iCAAmB;AAChC,eAAe,iCAAmB;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,oCAAoC;AACpC;AACA;AACA;AACA,gCAAgC;AAChC;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,CAAC;AACD;;;AAGA,OAAO;AACP;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,sBAAsB,YAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,OAAO;AACP;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;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,KAAK;AAChB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,cAAc;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,WAAW;AAC7B;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC,iBAAiB;AACjD;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;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;;;AAGA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;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;;;AAGA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,YAAY,gBAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,aAAa,QAAQ;AACrB,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,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW,OAAO;AAClB;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,gBAAgB;AAChB;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,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;;AAEA;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;;;AAGA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,KAAK;AAChB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,mCAAmC,kBAAkB;AACrD;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,KAAK;AAChB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,kBAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,YAAY,OAAO;AACnB;AACA;AACA;AACA,mCAAmC,0BAA0B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,UAAU;AACrB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,2DAA2D,OAAO;AAClE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,aAAa,SAAS;AACtB;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0CAA0C,SAAS;AACnD;AACA;;AAEA;AACA,IAAI;AACJ;AACA;;AAEA,gBAAgB,YAAY;AAC5B;;AAEA;AACA,4DAA4D;AAC5D,gEAAgE;AAChE,oEAAoE;AACpE,wEAAwE;AACxE;AACA,2DAA2D,SAAS;AACpE;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,eAAe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A;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA,QAAQ;AACR,+DAA+D,oBAAoB;AACnF;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qCAAqC,wCAAwC;AAC7E;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAkD;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL,IAAI;AACJ;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,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA,yFAAyF,gBAAgB;AACzG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;;AAED,iCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,sDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,oBAAoB,OAAO,4CAA4C,4BAA4B,qBAAqB,OAAO,uBAAuB,4BAA4B,oBAAoB;;AAEzc,cAAc,iCAAmB;;AAEjC;;AAEA,uCAAuC,uCAAuC;;AAE9E,kDAAkD,0CAA0C;;AAE5F,kDAAkD,aAAa,yFAAyF;;AAExJ,2CAA2C,+DAA+D,uGAAuG,yEAAyE,eAAe,0EAA0E,GAAG;;AAEtX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD;;;AAGA;AACA;AACA,CAAC;AACD;;AAEA,mCAAmC,iCAAiC,eAAe,eAAe,gBAAgB,oBAAoB,MAAM,0CAA0C,+BAA+B,aAAa,qBAAqB,uCAAuC,cAAc,WAAW,YAAY,UAAU,MAAM,2CAA2C,UAAU,sBAAsB,eAAe,2BAA2B,0BAA0B,cAAc,2CAA2C,gCAAgC,OAAO,mFAAmF;;AAErpB,iCAAiC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,kBAAkB,iCAAmB;;AAErC;;AAEA,iBAAiB,iCAAmB;;AAEpC;;AAEA,aAAa,iCAAmB;;AAEhC;;AAEA,cAAc,iCAAmB;;AAEjC;;AAEA,cAAc,iCAAmB;;AAEjC;;AAEA,uCAAuC,uCAAuC;;AAE9E,4CAA4C,kBAAkB,kCAAkC,oEAAoE,KAAK,OAAO,oBAAoB;;AAEpM,kDAAkD,0CAA0C;;AAE5F,kDAAkD,aAAa,yFAAyF;;AAExJ,2CAA2C,+DAA+D,uGAAuG,yEAAyE,eAAe,0EAA0E,GAAG;;AAEtX;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,6CAA6C;;;AAG7C;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;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,YAAY;AACZ;AACA;AACA,UAAU;AACV;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;AACA,mIAAmI;AACnI,UAAU;AACV;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,YAAY;AACZ;AACA;AACA,UAAU;AACV;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;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C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,sDAAsD,kDAAkD,8DAA8D,0BAA0B,4CAA4C,uBAAuB,oBAAoB,OAAO,4CAA4C,4BAA4B,qBAAqB,OAAO,uBAAuB,4BAA4B,oBAAoB;;AAEzc,iBAAiB,iCAAmB;;AAEpC;;AAEA,aAAa,iCAAmB;;AAEhC;;AAEA,iBAAiB,iCAAmB;;AAEpC;;AAEA,uCAAuC,uCAAuC;;AAE9E,4CAA4C,kBAAkB,kCAAkC,oEAAoE,KAAK,OAAO,oBAAoB;;AAEpM,kDAAkD,0CAA0C;;AAE5F,kDAAkD,aAAa,yFAAyF;;AAExJ,2CAA2C,+DAA+D,uGAAuG,yEAAyE,eAAe,0EAA0E,GAAG;;AAEtX;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA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AAuD,+DAA+D,yDAAyD,qEAAqE,6DAA6D,wBAAwB;;AAEjjB,cAAc,iCAAmB;;AAEjC;;AAEA,eAAe,iCAAmB;;AAElC;;AAEA,YAAY,iCAAmB;;AAE/B;;AAEA,iBAAiB,iCAAmB;;AAEpC,aAAa,iCAAmB;;AAEhC;;AAEA,uCAAuC,uCAAuC;;AAE9E,kDAAkD,0CAA0C;;AAE5F,kDAAkD,aAAa,yFAAyF;;AAExJ,2CAA2C,+DAA+D,uGAAuG,yEAAyE,eAAe,0EAA0E,GAAG;;AAEtX,qDAAqD,WAAW,IAAI,WAAW;;AAE/E;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA,CAAC;;AAED;;AAEA;AACA;;AAEA,OAAO;AACP;AACA,iCAAiC,iCAAmB;;AAEpD,iBAAiB,iCAAmB;;;AAGpC,OAAO;AACP;AACA,CAAC;;;;;;;;;;;;;;;;;ACzyWmC;AACqC;AAClE,8BAA8B,6CAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC/B0C;AACnC,8BAA8B,mDAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;ACpB2C;AACN;AACgB;AAC9C;AACP;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AACtC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kDAAE;AACzB;AACA,uBAAuB,kEAAU;AACjC;AACA,uBAAuB,wDAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACvEuD;AACJ;AACmB;AAC1B;AACV;AAC3B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B,qBAAqB,gEAAY;AACjC;AACA;AACA;AACA;AACA,qCAAqC,iFAA4C;AACjF;AACA;AACA;AACA,YAAY,iFAA4C;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iFAA4C;AAC5D;AACA;AACA;AACA,gBAAgB,oEAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA,KAAK,0DAAiB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yDAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAc;AACpC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACzGkC;AACuB;AAClD;AACP;AACA,mBAAmB;AACnB;AACA,YAAY,iFAA4C;AACxD;AACA;AACA;AACA,YAAY,sEAAe;AAC3B;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;;;;;ACd0C;AACnC,8BAA8B,mDAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;ACXoC;AACM;AACI;AACc;AACa;AACb;AACrD,4BAA4B,6CAAO;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA,2BAA2B,6DAAkB;AAC7C;AACA;AACA;AACA,+BAA+B,qEAAmB;AAClD;AACA;AACA,4CAA4C,qEAAmB;AAC/D;AACA;AACA,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,mDAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC1GO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;ACT0C;AACA;AACI;AAC2B;AACb;AACyB;AAC9E,gCAAgC,mDAAU;AACjD;AACA;AACA;AACA;AACA;AACO,sBAAsB,mDAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,uEAAkB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA,gBAAgB,YAAY;AAC5B;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kFAAuB;AAC7C;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;AACA,uBAAuB,qEAAmB;AAC1C;AACA;AACA;AACA,+BAA+B,mDAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;;;;;;;;;;;;;;;;;AC9I8C;AACvC,kCAAkC,uDAAY;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;ACxB+C;AACK;AACN;AACuC;AACnD;AACuB;AAClD,yBAAyB,uDAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4CAAa;AAChD;AACA;AACA;AACA,uCAAuC,4CAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,uEAAkB,MAAM;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mBAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4CAAa;AAChD;AACA,oBAAoB,4DAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC,iBAAiB,iFAA4C;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC,oBAAoB,wCAAwC,EAAE,2CAAM;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sEAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sEAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA,qBAAqB,iFAA4C;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iFAA4C;AAC5D;AACA;AACA;AACA,gBAAgB,sEAAe;AAC/B;AACA;AACA;AACA;AACA,aAAa,iFAA4C;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iFAA4C;AAC5D;AACA;AACA;AACA;AACA;AACA,gBAAgB,sEAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC5NyC;AACE;AACI;AACkB;AAC1D;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mEAAmE;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iCAAiC;AACjE;AACA;AACA;AACA;AACA,YAAY,4DAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,0EAAmB;AACzD;AACA;AACA,YAAY,sDAAO;AACnB;AACA;AACA;AACA;AACA,oBAAoB,wDAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA,yCAAyC,0EAAmB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0EAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,oEAAoE,0EAAmB;AACvF;;;;;;;;;;;;;;;;ACvIA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;;;;;;AChB0C;AACA;AACO;AAC1C,oCAAoC,mDAAU;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,qCAAqC,mDAAU;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,oCAAoC,mDAAU;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,qCAAqC,mDAAU;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,0BAA0B,mDAAU;AACpC;AACA;AACA;AACA;AACA,uBAAuB,8DAAW;AAClC;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;AC5E+C;AACJ;AACA;AACI;AACyB;AACjE,oCAAoC,mDAAU;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uDAAY;AAC5D;AACA;AACA;AACA;AACA,6BAA6B,6DAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAmB;AAClC;AACA;AACO;AACP;AACA;AACA,oBAAoB,aAAa;AACjC,qBAAqB,0BAA0B;AAC/C,oBAAoB,6BAA6B;AACjD,uBAAuB,6BAA6B;AACpD,sBAAsB,oCAAoC;AAC1D,uBAAuB,qDAAqD;AAC5E,sBAAsB,oCAAoC;AAC1D,mBAAmB,iCAAiC;AACpD,oBAAoB;AACpB;AACA,CAAC;AACD,oCAAoC,uDAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mDAAU;AAC3C;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AC/HkD;AACR;AACW;AACS;AACtB;AACxC;AACO;AACP;AACA;AACA,QAAQ,8DAAW;AACnB;AACA;AACA;AACA;AACA;AACA,oCAAoC,sDAAO;AAC3C;AACA;AACA,WAAW,qDAAS;AACpB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO,sCAAsC,6DAAe;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA,yBAAyB,0EAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvF0B;AACyB;AAC5C;AACP,WAAW,+DAAS,GAAG,uCAAE;AACzB;;;;;;;;;;;;;;;;;;;ACJ2C;AACb;AACE;AACzB;AACP,eAAe,mDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2CAAI,UAAU,6CAAK;AAClD;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;AChB2C;AACpC,kBAAkB,mDAAU;AAC5B;AACP;AACA;AACA;AACA,eAAe,mDAAU;AACzB;;;;;;;;;;;;;;;;;;;;;ACP2C;AACD;AACH;AACK;AACd;AACvB;AACP;AACA;AACA,YAAY,sDAAO;AACnB;AACA;AACA,YAAY,wDAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,sDAAO;AAClD,oDAAoD,mDAAG;AACvD;AACA;AACA;AACA;AACA,eAAe,mDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC,2BAA2B,2CAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,qGAAqG;AACrG;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;;AC3D2C;AACO;AACC;AAC5C;AACP;AACA,6BAA6B,mDAAU;AACvC;AACA;AACA,mBAAmB,mDAAU,CAAC,8DAAW;AACzC;AACA;AACA,eAAe,+DAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;;ACb2C;AACiB;AACD;AACpD;AACP;AACA,mBAAmB,mDAAU,CAAC,wEAAgB;AAC9C;AACA;AACA,eAAe,uEAAa;AAC5B;AACA;;;;;;;;;;;;;;;;;;;;ACV2C;AACD;AACM;AACT;AACvC;AACO;AACP,QAAQ,4DAAU;AAClB;AACA;AACA;AACA;AACA,0DAA0D,mDAAG,SAAS,sDAAO;AAC7E;AACA,eAAe,mDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;AC5D2C;AACA;AACG;AACvC,0CAA0C,mDAAK;AACtD,SAAS,0DAAS;AAClB;AACA;AACA;AACA,oBAAoB,mDAAK;AACzB;AACA,eAAe,mDAAU;AACzB,8DAA8D,gCAAgC;AAC9F;AACA,KAAK;AACL;AACA;AACA,YAAY,8BAA8B;AAC1C;AACA,oBAAoB,0CAA0C;AAC9D;;;;;;;;;;;;;;;;;;;;ACnB2C;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;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;AACA;AACA;;;;;;;;;;;;;;;;;;AC9C2C;AACA;AACpC,2CAA2C,mDAAK;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mDAAU;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACrD2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,mDAAU;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;AC5B2C;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;;;;;;;;;;;;;;;;;;ACpCsC;AACM;AACrC;AACP,WAAW,mDAAQ,CAAC,oDAAQ;AAC5B;;;;;;;;;;;;;;;;;;;;;;ACJ4B;AACc;AACuD;AAC1F;AACP;AACA,0DAA0D,sDAAI,qBAAqB,yCAAG;AACtF;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,iCAAiC,kEAAqB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,kEAAqB;AACzD;AACA;AACA,kCAAkC,+DAAc;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;;;;;;;;;;;;;;;;;;AClF+E;AAC/E;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,8FAA+B;AACjF;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;ACjC2C;AACI;AACxC;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,kCAAkC,mDAAU;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4BAA4B;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kEAAuB;AACpD;AACA;AACA,6BAA6B,mEAAwB;AACrD;AACA;AACA;AACA,6BAA6B,sEAA2B;AACxD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AChD2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mDAAU;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC3B2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mDAAU;AAC3C;AACA;AACA;AACA;AACA;AACA,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AClD2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mDAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;ACxDwC;AACF;AACD;AACrC;AACA,eAAe,6CAAO;AACtB;AACO;AACP,uBAAuB,mDAAQ,GAAG,qDAAS;AAC3C;;;;;;;;;;;;;;;;;ACR2C;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;;;;;;;;;;;;;;;;;ACnEwC;AACjC;AACP,4BAA4B,qDAAS,0CAA0C,qDAAS;AACxF;;;;;;;;;;;;;;;;;;;ACH2C;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;;;;;;;;;;;;;;;;;ACR4C;AACrC,mCAAmC,qDAAW;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACxBkD;AAC3C,sCAAsC,2DAAc;AAC3D;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvB8C;AACF;AACrC,yBAAyB,qDAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,mEAAsB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qEAAwB;AACpC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACzBkD;AAC3C,4BAA4B,2DAAc;AACjD;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACvBkC;AAC3B,0BAA0B,2CAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC9EyC;AAClC,6BAA6B,iDAAS;AAC7C,uCAAuC,qDAAa;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC5C4C;AACrC,0BAA0B,qDAAW;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC3BkD;AAC3C,6BAA6B,2DAAc;AAClD;;;;;;;;;;;;;;;;;;;ACF8D;AACM;AAC7D,oCAAoC,6EAAuB,CAAC,uEAAoB;AAChF;;;;;;;;;;;;;;;;;;;ACHmC;AACM;AACzC,0BAA0B,yDAAa,CAAC,mDAAU;AAClD;;;;;;;;;;;;;;;;;;;ACHqC;AACM;AAC3C,2BAA2B,2DAAc,CAAC,qDAAW;AACrD;;;;;;;;;;;;;;;;;;;ACHqC;AACM;AAC3C,2BAA2B,2DAAc,CAAC,qDAAW;AACrD;;;;;;;;;;;;;;;;;;ACHA;AACP;AACA;AACA;AACA;AACA;AACO;AACA;;;;;;;;;;;;;;;;ACPA;;;;;;;;;;;;;;;;;ACAA;AACP;AACA;AACO;;;;;;;;;;;;;;;;ACHP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;;;;;;;;;;;;;;;;ACVP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;;;;;;;;;;;;;;;;;ACVP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;;;;;;;;;;;;;;;;ACVP;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,EAAE,0BAA0B,MAAM,IAAI,eAAe,gBAAgB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;;;;;;;;;;;;;;;;;ACboC;AACpC;AACP;AACA,gBAAgB,iCAAiC;AACjD;AACA;AACA;AACA,uDAAuD,mDAAU;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;ACfO;AACP,uBAAuB,YAAY;AACnC;;;;;;;;;;;;;;;;ACFO;AACP;AACA;;;;;;;;;;;;;;;;ACFO;;;;;;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;ACAA;AACP;AACA;;;;;;;;;;;;;;;;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;AACb;AACA,qBAAqB,mBAAO,CAAC,4BAAiB;AAC9C,kBAAkB,mBAAO,CAAC,yBAAc;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,UAAU;AACV;AACA;AACA;AACA;AACA,OAAO;AACP;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,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,IAAI;AACJ;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,GAAG;AACH;AACA;AACA,GA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O,OAAO,GAAG13B,eAAA,GAAkBozB,UAAU,CAACsE,OAA3C;;;;;;;;;;;;;;;AC7/FA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,gBAAgB,oBAAoB;AACpC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,cAAc,uBAAuB,cAAc,MAAM,cAAc,qBAAqB,cAAc;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,gCAAgC,cAAc;AAC9C;AACA;AACA,kCAAkC,cAAc;AAChD;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,gBAAgB,cAAc;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,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,cAAc;AACrD;AACA;AACA;AACA;AACA;AACA,kCAAkC,8BAA8B,GAAG,+BAA+B;AAClG,yBAAyB,4BAA4B,GAAG,6BAA6B;AACrF,uBAAuB,4BAA4B,GAAG,6BAA6B;AACnF,uBAAuB,4BAA4B,GAAG,4BAA4B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,cAAc;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,2CAA2C;AAC3C;AACA;AACA;AACA,yBAAyB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AACtD,uBAAuB,KAAK;AAC5B,wBAAwB,KAAK;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,YAAY,EAAC;;;;;;;;;;;;;;;;;;;AC9e5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,kBAAkB,sBAAsB;AACxC;;AAEA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA,MAAM;AACN;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAoB,sBAAsB;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,cAAc,uBAAuB;AACrC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,gBAAgB,6BAA6B;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC,SAAS;;AAElD;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;;AAEA;AACA;AACA;AACA;;AAEA,MAAM;AACN;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,WAAW;AACvB,YAAY,eAAe;AAC3B,YAAY,sCAAsC;AAClD;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;AAC5C;;AAEA;AACA;AACA;AACA,iEAAiE;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,QAAQ;AACR;AACA;;AAEA;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,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,YAAY,2BAA2B;AACvC;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB,YAAY,sBAAsB;AAClC;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY,sBAAsB;AAClC;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,UAAU;AACtB,YAAY;AACZ;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,mBAAmB;AAC/B;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY,QAAQ;AACpB,YAAY,aAAa;AACzB;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAI;;AAEJ;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,IAAI;AACJ;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET,wCAAwC,qDAAqD;;;AAG7F;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,SAAS;AACT;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;;;AAGA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gDAAgD;;AAEhD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;;AAErE;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2DAA2D;;AAE3D;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,mFAAmF;AACnF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB,YAAY,eAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B;;;AAGA;AACA;AACA,iEAAiE;AACjE;;AAEA,gBAAgB;;AAEhB,sCAAsC,YAAY;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;;AAEA,0BAA0B;;;AAG1B;AACA;AACA;AACA;AACA,IAAI;;;AAGJ;;AAEA;AACA;AACA;AACA,IAAI;;;AAGJ;AACA;AACA,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B;;AAE3B,kFAAkF;;AAElF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC;;;AAGhC;AACA;AACA;;AAEA;AACA,cAAc;AACd,MAAM;;;AAGN;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN;AACA,0DAA0D;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,SAAS;AACT;AACA,gBAAgB;AAChB;AACA,MAAM;AACN;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;;AAEX;AACA;AACA,WAAW;AACX;AACA;AACA,OAAO;;AAEP;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA,GAAG;AACH;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,SAAS;;AAET;AACA;;AAEA;AACA,UAAU;AACV;;;AAGA;;AAEA;AACA;AACA,UAAU;;;AAGV,6CAA6C;;;AAG7C;AACA;AACA;AACA;AACA,SAAS,GAAG;;;AAGZ;AACA,SAAS;;;AAGT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,uDAAuD;;AAEvD;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO,GAAG;;AAEV;AACA;AACA;;AAEA;AACA,UAAU;AACV;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ;AACR;AACA;AACA,MAAM;AACN,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA,kCAAkC;;AAElC;AACA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA;AACA;AACA,OAAO;AACP,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iMAAiM;;AAEjM;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;;AAEtC;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL,+DAA+D;;AAE/D;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mCAAmC;;AAEnC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,OAAO;AACP,MAAM;;;AAGN;AACA;;AAEA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;;;AAGV;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,QAAQ;;;AAGR;AACA;AACA,QAAQ;;;AAGR;AACA,iEAAiE;;;AAGjE;AACA;;AAEA;AACA;AACA,MAAM;;;AAGN;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,2BAA2B;;AAE3B;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;;;AAGV;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ;AACA;;AAEA,yBAAyB;;AAEzB;AACA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY;AACZ,UAAU;;;AAGV;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,YAAY;AACZ;AACA,YAAY;;;AAGZ;AACA;AACA;;AAEA,wCAAwC;AACxC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA,KAAK;AACL,4CAA4C;;AAE5C;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,wCAAwC;;;AAGxC;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,0CAA0C;AAC1C;;AAEA;AACA;AACA;;AAEA,8DAA8D;;AAE9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,GAAG;;;AAGhB;AACA;AACA;AACA;AACA;AACA,aAAa,GAAG;;;AAGhB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;;;AAGd;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW,OAAO;AAClB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;AAEH;AACA;AACA,cAAc,WAAW;AACzB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,eAAe,cAAc;AAC7B,eAAe,cAAc;AAC7B,eAAe;AACf;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe;AACf;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;;AAEA;AACA;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;;;AAGN;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA,QAAQ;AACR;AACA,QAAQ;AACR;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc;;AAEd;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,0BAA0B;AACtC;;;AAGA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa;AAC1B,aAAa;AACb;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,EAAE;;;AAGF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,4BAA4B;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,oCAAoC;AAChD;;;AAGA;AACA,yEAAyE,aAAa;AACtF;AACA;;AAEA;AACA;AACA;AACA,qFAAqF;AACrF;;AAEA,uEAAuE;AACvE;AACA,GAAG;AACH;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,aAAa;AACxB;;;AAGA;AACA;AACA,GAAG;;;AAGH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,QAAQ;AACR;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;;AAEA;AACA,uDAAuD;;AAEvD;;AAEA;AACA,2EAA2E;;AAE3E;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sBAAsB,gBAAgB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,sDAAsD;;AAEtD;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA,IAAI;;AAEJ,kCAAkC;AAClC,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,MAAM;AACN;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,QAAQ;AACR;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,sBAAsB,8BAA8B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO,GAAG;;AAEV;AACA;AACA,OAAO;AACP;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX,UAAU;;;AAGV;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,gCAAgC;;AAEhC;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;;AAEA;AACA,WAAW;AACX;AACA,UAAU;;;AAGV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iDAAiD;;;AAGjD;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,eAAe;AACf;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;;AAExC;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;;AAEd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;;AAEA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,YAAY;AACZ;AACA;;AAEA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,QAAQ;;;AAGR;AACA,yBAAyB;;AAEzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oDAAoD;;AAEpD;AACA;AACA;AACA,mBAAmB;AACnB;AACA,eAAe;AACf,cAAc;AACd;;;AAGA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA,aAAa,GAAG;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA;AACA;AACA,YAAY;;;AAGZ;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA,QAAQ;;;AAGR;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,qEAAqE;;AAErE,uDAAuD;;AAEvD,+FAA+F;;AAE/F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,aAAa;AAC/B;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA;AACA,kBAAkB,aAAa;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,GAAG;;AAEZ;;AAEA;AACA;AACA,UAAU;AACV;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,UAAU;AACV;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,YAAY,WAAW;AACvB,YAAY,aAAa;AACzB;;;AAGA;AACA;AACA;;AAEA;AACA;AACA,MAAM;AACN;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA,iEAAe,QAAQ,EAAC;AAC8C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvsHtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA;AACO;AACP;AACA,oBAAoB;AACpB;AACA;AACA;AACO;AACP;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6DAA6D,cAAc;AAC3E;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACO;AACP,oCAAoC;AACpC;AACA;AACO;AACP;AACA;AACA;AACO;AACP,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACO;AACP,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,iBAAiB,oDAAoD,qEAAqE,cAAc;AACxJ,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACO;AACP,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA;AACO;AACP,kDAAkD,QAAQ;AAC1D,yCAAyC,QAAQ;AACjD,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA,iBAAiB,uFAAuF,cAAc;AACtH,uBAAuB,gCAAgC,qCAAqC,2CAA2C;AACvI,4BAA4B,MAAM,iBAAiB,YAAY;AAC/D,uBAAuB;AACvB,8BAA8B;AAC9B,6BAA6B;AAC7B,4BAA4B;AAC5B;AACA;AACO;AACP;AACA,iBAAiB,6CAA6C,UAAU,sDAAsD,cAAc;AAC5I,0BAA0B,6BAA6B,oBAAoB,gDAAgD,kBAAkB;AAC7I;AACA;AACO;AACP;AACA;AACA,2GAA2G,uFAAuF,cAAc;AAChN,uBAAuB,8BAA8B,gDAAgD,wDAAwD;AAC7J,6CAA6C,sCAAsC,UAAU,mBAAmB,IAAI;AACpH;AACA;AACO;AACP,iCAAiC,uCAAuC,YAAY,KAAK,OAAO;AAChG;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,6CAA6C;AAC7C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA;AACO;AACP;AACA,oBAAoB;AACpB;AACA;AACA;AACO;AACP;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6DAA6D,cAAc;AAC3E;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACO;AACP,oCAAoC;AACpC;AACA;AACO;AACP;AACA;AACA;AACO;AACP,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACO;AACP,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,iBAAiB,oDAAoD,qEAAqE,cAAc;AACxJ,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACO;AACP,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA;AACO;AACP,kDAAkD,QAAQ;AAC1D,yCAAyC,QAAQ;AACjD,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA,iBAAiB,uFAAuF,cAAc;AACtH,uBAAuB,gCAAgC,qCAAqC,2CAA2C;AACvI,4BAA4B,MAAM,iBAAiB,YAAY;AAC/D,uBAAuB;AACvB,8BAA8B;AAC9B,6BAA6B;AAC7B,4BAA4B;AAC5B;AACA;AACO;AACP;AACA,iBAAiB,6CAA6C,UAAU,sDAAsD,cAAc;AAC5I,0BAA0B,6BAA6B,oBAAoB,gDAAgD,kBAAkB;AAC7I;AACA;AACO;AACP;AACA;AACA,2GAA2G,uFAAuF,cAAc;AAChN,uBAAuB,8BAA8B,gDAAgD,wDAAwD;AAC7J,6CAA6C,sCAAsC,UAAU,mBAAmB,IAAI;AACpH;AACA;AACO;AACP,iCAAiC,uCAAuC,YAAY,KAAK,OAAO;AAChG;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,6CAA6C;AAC7C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACO;AACP;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6DAA6D,cAAc;AAC3E;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACO;AACP,oCAAoC;AACpC;AACA;AACO;AACP;AACA;AACA;AACO;AACP,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACO;AACP,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,iBAAiB,oDAAoD,qEAAqE,cAAc;AACxJ,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,oCAAoC;AACrD;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACO;AACP,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA;AACA;AACO;AACP,kDAAkD,QAAQ;AAC1D,yCAAyC,QAAQ;AACjD,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA;AACO;AACP,6EAA6E,OAAO;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA,iBAAiB,uFAAuF,cAAc;AACtH,uBAAuB,gCAAgC,qCAAqC,2CAA2C;AACvI,4BAA4B,MAAM,iBAAiB,YAAY;AAC/D,uBAAuB;AACvB,8BAA8B;AAC9B,6BAA6B;AAC7B,4BAA4B;AAC5B;AACA;AACO;AACP;AACA,iBAAiB,6CAA6C,UAAU,sDAAsD,cAAc;AAC5I,0BAA0B,6BAA6B,oBAAoB,gDAAgD,kBAAkB;AAC7I;AACA;AACO;AACP;AACA;AACA,2GAA2G,uFAAuF,cAAc;AAChN,uBAAuB,8BAA8B,gDAAgD,wDAAwD;AAC7J,6CAA6C,sCAAsC,UAAU,mBAAmB,IAAI;AACpH;AACA;AACO;AACP,iCAAiC,uCAAuC,YAAY,KAAK,OAAO;AAChG;AACA;AACA;AACA;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,6CAA6C;AAC7C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvPA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,UAAU;AAC3B,+BAA+B,gBAAgB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF;AACzF,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,+BAA+B;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oBAAoB;AACjC,aAAa,mBAAmB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD,2BAA2B,gBAAgB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,YAAY;AACzB,2BAA2B,YAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+BAA+B;AACxD;AACA;AACA,sCAAsC,+BAA+B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,kCAAkC;AAC7C;AACA;AACA,WAAW,uBAAuB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,yBAAyB,aAAa;AACtC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mCAAmC;AAChD,aAAa,sCAAsC;AACnD,aAAa,wCAAwC;AACrD,aAAa,qCAAqC;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,wBAAwB;AACrC,aAAa,yBAAyB;AACtC,aAAa,2BAA2B;AACxC,aAAa,0BAA0B;AACvC;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,WAAW;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,YAAY;AAChC,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iCAAiC;AACrD,oBAAoB,qCAAqC;AACzD,oBAAoB,iCAAiC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,aAAa,QAAQ,GAAG;AACrC,iBAAiB,OAAO;AACxB,aAAa,aAAa,MAAM,EAAE;AAClC;AACA,OAAO,UAAU,mCAAmC;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,UAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gBAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,YAAY;AAC1C,oCAAoC,YAAY;AAChD;AACA;AACA,4CAA4C,YAAY;AACxD,kDAAkD,YAAY;AAC9D;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,qDAAqD;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,YAAY;AAC/C;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA,mCAAmC,YAAY;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,+BAA+B;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,IAAL,CAAUponB,GAAV,CAAcxmB,OAAd,CAA3B;;IACA,IAAI,CAAC8uoB,oBAAL,EAA2B;MACvB,KAAKF,IAAL,CAAUtlnB,GAAV,CAActpB,OAAd,EAAuB8uoB,oBAAoB,GAAG,EAA9C;IACH;;IACDA,oBAAoB,CAAChwoB,IAArB,CAA0B,GAAG+voB,YAA7B;EACH;;EACDx2C,GAAG,CAACr4lB,OAAD,EAAU;IACT,OAAO,KAAK4uoB,IAAL,CAAUv2C,GAAV,CAAcr4lB,OAAd,CAAP;EACH;;EACDkoJ,KAAK,GAAG;IACJ,KAAK0mf,IAAL,CAAU1mf,KAAV;EACH;;AAnBuB;AAsB5B;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM6mf,yBAAyB,GAAG,CAAlC;AACA,MAAMC,WAAW,GAAG,QAApB;AACA,MAAMC,iBAAiB,GAAG,IAAIlroB,MAAJ,CAAWiroB,WAAX,EAAwB,GAAxB,CAA1B;AACA,MAAME,WAAW,GAAG,QAApB;AACA,MAAMC,iBAAiB,GAAG,IAAIproB,MAAJ,CAAWmroB,WAAX,EAAwB,GAAxB,CAA1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASE,uBAAT,CAAiC9N,MAAjC,EAAyC/zb,WAAzC,EAAsDw9b,GAAtD,EAA2DsE,cAA3D,EAA2EC,cAA3E,EAA2FC,cAAc,GAAG,EAA5G,EAAgHC,WAAW,GAAG,EAA9H,EAAkI1joB,OAAlI,EAA2I2j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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM44pB,IAAN,CAAW;EACPznqB,WAAW,CAAComqB,cAAD,EAAiBsB,WAAjB,EAA8B;IACrC,KAAKtB,cAAL,GAAsBA,cAAtB;IACA,KAAKuB,QAAL,GAAgB,IAAIC,WAAJ,EAAhB;IACA,KAAKC,gBAAL,GAAwB,IAAxB;IACA,KAAKC,gBAAL,GAAwB,IAAxB;IACA,KAAKC,YAAL,GAAoB,IAApB;IACA,KAAKC,YAAL,GAAoB,IAApB;IACA,KAAKH,gBAAL,GAAwBH,WAAxB;EACH;EACD;AACJ;AACA;;;EACY,IAAJO,IAAI,CAACz9mB,SAAD,EAAY;IAChB,KAAKm9mB,QAAL,CAAc3B,SAAd,GAA0B,KAAK2B,QAAL,CAAcM,IAAd,GAAqBz9mB,SAA/C;;IACA,KAAK09mB,WAAL;EACH;EACD;AACJ;AACA;;;EACgB,IAARC,QAAQ,CAACT,WAAD,EAAc;IACtBU,cAAc,CAAC,UAAD,EAAaV,WAAb,CAAd;IACA,KAAKG,gBAAL,GAAwBH,WAAxB;IACA,KAAKK,YAAL,GAAoB,IAApB,CAHsB,CAGI;;IAC1B,KAAKG,WAAL;EACH;EACD;AACJ;AACA;;;EACgB,I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IAAIpgB,yDAAJ,CAAmB,aAAnB,EAAkC;EAAEyC,UAAU,EAAE,MAAd;EAAsBvvf,OAAO,EAAE,MAAMgtgB;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;EACnB5uqB,WAAW,CAAC6uqB,WAAD,EAAch1nB,MAAd,EAAsBymG,QAAtB,EAAgCwuhB,UAAhC,EAA4CtJ,QAA5C,EAAsDoD,UAAtD,EAAkEmG,kBAAlE,EAAsF;IAC7F,KAAKF,WAAL,GAAmBA,WAAnB;IACA,KAAKh1nB,MAAL,GAAcA,MAAd;IACA,KAAKymG,QAAL,GAAgBA,QAAhB;IACA,KAAKwuhB,UAAL,GAAkBA,UAAlB;IACA,KAAKtJ,QAAL,GAAgBA,QAAhB;IACA,KAAKoD,UAAL,GAAkBA,UAAlB;IACA,KAAKmG,kBAAL,GAA0BA,kBAA1B;IACA;AACR;AACA;AACA;AACA;AACA;;IACQ,KAAKC,YAAL,GAAoB,IAApB;IACA,KAAKC,SAAL,GAAiB,KAAjB;IACA,KAAKC,uBAAL,GAA+B,KAA/B;IACA,KAAKC,KAAL,GAAa,KAAb;IACA,KAAKt1nB,MAAL,GAAcu1nB,aAAa,CAAC,KAAKv1nB,MAAN,CAA3B;IACA,KAAKi5f,UAAL,GAAkB,KAAKg8H,UAAL,CAAgBrK,aAAlC;IACA,KAAK4K,WAAL,GAAmB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B,aAAN,CAAoB;EAChB34oB,SAAS,CAAC7hC,KAAD,EAAQ;IACb,IAAIA,KAAK,IAAI,IAAb,EACI,OAAO,IAAP;;IACJ,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;MAC3B,MAAM64qB,wBAAwB,CAAC2B,aAAD,EAAgBx6qB,KAAhB,CAA9B;IACH;;IACD,OAAOA,KAAK,CAACqd,WAAN,EAAP;EACH;;AARe;;AAUpBm9pB,aAAa,CAACzwC,IAAd;EAAA,iBAA0GywC,aAA1G;AAAA;;AACAA,aAAa,CAACL,KAAd,kBA5jLmGn3C,0DA4jLnG;EAAA;EAAA,MAAwGw3C,aAAxG;EAAA;AAAA;;AACA;EAAA,mDA7jLmGx3C,+DA6jLnG,CAA2Fw3C,aAA3F,EAAsH,CAAC;IAC3GzqqB,IAAI,EAAEqhpB,+CADqG;IAE3GztpB,IAAI,EAAE,CAAC;MAAEmc,IAAI,EAAE;IAAR,CAAD;EAFqG,CAAD,CAAtH;AAAA;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;;;AACA,MAAM26pB,0BAA0B,GAAG,IAAIhrB,yDAAJ,CAAmB,4BAAnB,CAAnC,EACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA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,OAAO,CAACsuT;EARtB,CAAP;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,MAAM2jX,UAAN,CAAiB;EACbjirB,WAAW,CAACxC,OAAD,EAAU;IACjB,KAAKA,OAAL,GAAeA,OAAf;EACH;EACD;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;;;EACIkyD,OAAO,CAACzuD,KAAD,EAAQumB,GAAR,EAAaxX,OAAO,GAAG,EAAvB,EAA2B;IAC9B,IAAIq/C,GAAJ,CAD8B,CAE9B;;IACA,IAAIpuD,KAAK,YAAY6/qB,WAArB,EAAkC;MAC9B;MACA;MACAzxnB,GAAG,GAAGpuD,KAAN;IACH,CAJD,MAKK;MACD;MACA;MACA;MACA;MACA,IAAI0oB,OAAO,GAAGzsB,SAAd;;MACA,IAAI8S,OAAO,CAAC2Z,OAAR,YAA2B40pB,WAA/B,EAA4C;QACxC50pB,OAAO,GAAG3Z,OAAO,CAAC2Z,OAAlB;MACH,CAFD,MAGK;QACDA,OAAO,GAAG,IAAI40pB,WAAJ,CAAgBvuqB,OAAO,CAAC2Z,OAAxB,CAAV;MACH,CAXA,CAYD;;;MACA,IAAI5sB,MAAM,GAAGG,SAAb;;MACA,IAAI,CAAC,CAAC8S,OAAO,CAACjT,MAAd,EAAsB;QAClB,IAAIiT,OAAO,CAACjT,MAAR,YAA0BgjrB,UAA9B,EAA0C;UACtChjrB,MAAM,GAAGiT,OAAO,CAACjT,MAAjB;QACH,CAFD,MAGK;UACDA,MAAM,GAAG,IAAIgjrB,UAAJ,CAAe;YAAEK,UAAU,EAAEpwqB,OAAO,C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ACA;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,MAAM4I,wBAAN,CAA+B;EAC3B7mrB,WAAW,CAACsjqB,SAAD,EAAYwjB,WAAZ,EAAyB;IAChC,KAAKxjB,SAAL,GAAiBA,SAAjB;IACA,KAAKwjB,WAAL,GAAmBA,WAAnB;IACA;AACR;AACA;AACA;AACA;;IACQ,KAAKx1d,QAAL,GAAiByzK,CAAD,IAAO,CAAG,CAA1B;IAC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AAmB8+B,UAAU,EAAE,CAAC;QACzEntB,IAAI,EAAE4/oB,mDAAQA;MAD2D,CAAD,EAEzE;QACC5/oB,IAAI,EAAEi7B,iDADP;QAECrnC,IAAI,EAAE,CAACklrB,uBAAD;MAFP,CAFyE;IAA/B,CAAlD,CAAP;EAMH,CAtBL;AAAA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASM,iBAAT,CAA2BnprB,KAA3B,EAAkC;EAC9B;EACA,OAAOA,KAAK,IAAI,IAAT,IAAiBA,KAAK,CAACP,MAAN,KAAiB,CAAzC;AACH;;AACD,SAAS2prB,cAAT,CAAwBpprB,KAAxB,EAA+B;EAC3B;EACA,OAAOA,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,MAAM4prB,aAAa,GAAG,IAAI55B,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,MAAM65B,mBAAmB,GAAG,IAAI75B,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,MAAM85B,YAAY,GAAG,oMAArB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMC,UAAN,CAAiB;EACb;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACc,OAAHjxqB,GAAG,CAACA,GAAD,EAAM;IACZ,OAAOkxqB,YAAY,CAAClxqB,GAAD,CAAnB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACc,OAAHC,GAAG,CAACA,GAAD,EAAM;IACZ,OAAOkxqB,YAAY,CAAClxqB,GAAD,CAAnB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACmB,OAARquS,QAAQ,CAAC8iY,OAAD,EAAU;IACrB,OAAOC,iBAAiB,CAACD,OAAD,CAAxB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACuB,OAAZE,YAAY,CAACF,OAAD,EAAU;IACzB,OAAOG,qBAAqB,CAACH,OAAD,CAA5B;EACH;EACD;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;;;EACgB,OAALziY,KAAK,CAACyiY,OAAD,EAAU;IAClB,OAAOI,cAAc,CAACJ,OAAD,CAArB;EACH;EACD;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;;;EACoB,OAATriY,SAAS,CAACA,SAAD,EAAY;IACxB,OAAO0iY,kBAAkB,CAAC1iY,SAAD,CAAzB;EACH;EACD;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;;;EACoB,OAATD,SAAS,CAACA,SAAD,EAAY;IACxB,OAAO4iY,kBAAkB,CAAC5iY,SAAD,CAAzB;EACH;EACD;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;;;EACkB,OAAPl3S,OAAO,CAACA,OAAD,EAAU;IACpB,OAAO+5qB,gBAAgB,CAAC/5qB,OAAD,CAAvB;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;;;EACwB,OAAbg6qB,aAAa,CAACR,OAAD,EAAU;IAC1B,OAAOQ,aAAa,CAACR,OAAD,CAApB;EACH;;EACa,OAAPS,OAAO,CAACC,UAAD,EAAa;IACvB,OAAOD,OAAO,CAACC,UAAD,CAAd;EACH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACuB,OAAZC,YAAY,CAACD,UAAD,EAAa;IAC5B,OAAOC,YAAY,CAACD,UAAD,CAAnB;EACH;;AAlRY;AAoRjB;AACA;AACA;AACA;;;AACA,SAASZ,YAAT,CAAsBlxqB,GAAtB,EAA2B;EACvB,OAAQoxqB,OAAD,IAAa;IAChB,IAAIR,iBAAiB,CAACQ,OAAO,CAAC3prB,KAAT,CAAjB,IAAoCmprB,iBAAiB,CAAC5wqB,GAAD,CAAzD,EAAgE;MAC5D,OAAO,IAAP,CAD4D,CAC/C;IAChB;;IACD,MAAMvY,KAAK,GAAG2e,UAAU,CAACgrqB,OAAO,CAAC3prB,KAAT,CAAxB,CAJgB,CAKhB;IACA;;IACA,OAAO,CAACgR,KAAK,CAAChR,KAAD,CAAN,IAAiBA,KAAK,GAAGuY,GAAzB,GAA+B;MAAE,OAAO;QAAE,OAAOA,GAAT;QAAc,UAAUoxqB,OAAO,CAAC3prB;MAAhC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AAA;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMykW,sBAAsB,GAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MATA;AAUA,MAAMC,oBAAoB,GAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAXA;AAYA,MAAMC,oBAAoB,GAAI;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAdA;AAeA,MAAMC,mBAAmB,GAAI;AAC7B;AACA;AACA;AACA;AACA,UALA;AAMA,MAAMC,2BAA2B,GAAI;AACrC;AACA;AACA;AACA;AACA,CALA;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,sBAAT,GAAkC;EAC9B,OAAO,IAAIpprB,KAAJ,CAAW;AACtB;AACA;AACA;AACA;AACA,MAAM+orB,sBAAuB,EALlB,CAAP;AAMH;;AACD,SAASM,qBAAT,GAAiC;EAC7B,OAAO,IAAIrprB,KAAJ,CAAW;AACtB;AACA;AACA;AACA;AACA,QAAQgprB,oBAAqB;AAC7B;AACA;AACA;AACA,QAAQE,mBAAoB,EATjB,CAAP;AAUH;;AACD,SAASI,oBAAT,GAAgC;EAC5B,OAAO,IAAItprB,KAAJ,CAAW;AACtB;AACA;AACA;AACA,QAAQ+orB,sBAAuB,EAJpB,CAAP;AAKH;;AACD,SAASQ,oBAAT,GAAgC;EAC5B,OAAO,IAAIvprB,KAAJ,CAAW;AACtB;AACA;AACA;AACA;AACA,MAAMgprB,oBAAqB,EALhB,CAAP;AAMH;;AACD,SAASQ,oBAAT,GAAgC;EAC5B,OAAO,IAAIxprB,KAAJ,CAAW;AACtB;AACA;AACA;AACA;AACA,QAAQiprB,oBAAqB,EALlB,CAAP;AAMH;;AACD,MAAMQ,mBAAmB,GAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAVA;;AAWA,SAASC,cAAT,CAAwBrX,aAAxB,EAAuC;EACnC,OAAQ;AACZ,iEAAiEA,aAAc;AAC/E;AACA;AACA;AACA;A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A,KAAKkC,SAAL,CAAe/wpB,MAAf,EAAuB;UAAEgwpB;QAAF,CAAvB;MACH,CANmC,CAApC;IAOH;EACJ;;EACDQ,2BAA2B,GAAG;IAC1B,IAAI,KAAKM,4BAAT,EAAuC;MACnC,KAAKA,4BAAL,CAAkC/c,WAAlC;;MACA,KAAK8a,4BAAL,GAAoC,KAApC;IACH;EACJ;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIkC,SAAS,CAAC/wpB,MAAD,EAASwvpB,IAAI,GAAG,EAAhB,EAAoB;IACzB,KAAKxvpB,MAAL,GAAcA,MAAd;;IACA,KAAKgxpB,qBAAL,CAA2BxB,IAAI,CAACQ,SAAL,KAAmB,KAA9C;EACH;EACD;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;;;EACIxpqB,GAAG,CAACqnD,IAAD,EAAO;IACN,OAAO4/mB,KAAK,CAAC,IAAD,EAAO5/mB,IAAP,EAAa,GAAb,CAAZ;EACH;EACD;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;;;EACIg6mB,QAAQ,CAACD,SAAD,EAAY/5mB,IAAZ,EAAkB;IACtB,MAAM02mB,OAAO,GAAG12mB,IAAI,GAAG,KAAKrnD,GAAL,CAASqnD,IAAT,CAAH,GAAoB,IAAxC;IACA,OAAO02mB,OAAO,IAAIA,OAAO,CAACvkpB,MAAnB,GAA4BukpB,OAAO,CAACvkpB,MAAR,CAAe4npB,SAAf,CAA5B,GAAwD,IAA/D;EACH;EACD;AACJ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMhD,WAAN,SAA0BQ,eAA1B,CAA0C;EACtC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI9yrB,WAAW,CAACy1rB,SAAS,GAAG,IAAb,EAAmBzD,eAAnB,EAAoCtG,cAApC,EAAoD;IAC3D,MAAMqG,cAAc,CAACC,eAAD,CAApB,EAAuCG,mBAAmB,CAACzG,cAAD,EAAiBsG,eAAjB,CAA1D;IACA;AACR;AACA;AACA;AACA;AACA;;IACQ,KAAK76pB,YAAL,GAAoB,IAApB;IACA;;IACA,KAAKy+pB,SAAL,GAAiB,EAAjB;IACA;;IACA,KAAKpG,cAAL,GAAsB,KAAtB;;IACA,KAAKqG,eAAL,CAAqBJ,SAArB;;IACA,KAAKC,kBAAL,CAAwB1D,eAAxB;;IACA,KAAKmD,gBAAL;;IACA,KAAKhG,sBAAL,CAA4B;MACxBwE,QAAQ,EAAE,IADc;MAExB;MACA;MACA;MACA;MACAO,SAAS,EAAE,CAAC,CAAC,KAAKxI;IANM,CAA5B;;IAQA,IAAIuG,YAAY,CAACD,eAAD,CAAZ,IAAiCA,eAAe,CAAC8D,qBAArD,EAA4E;MACxE,IAAI,KAAKN,aAAL,CAAmBC,SAAnB,CAAJ,EAAmC;QAC/B,KAAKt+pB,YAAL,GAAoBs+pB,SAAS,CAAC32rB,KAA9B;MACH,CAFD,MAGK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E22lB,QAAQ,EAAE,IAAZ;QAAkBO,SAAS,EAAE;MAA7B,CAAZ,CADJ;IAEH,CAJD,MAKK;MACD,KAAKp1rB,KAAL,GAAa,KAAKywrB,aAAL,GAAqBkG,SAAlC;IACH;EACJ;;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,MAAMlD,SAAN,SAAwBO,eAAxB,CAAwC;EACpC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI9yrB,WAAW,CAAC0ziB,QAAD,EAAWs+I,eAAX,EAA4BtG,cAA5B,EAA4C;IACnD,MAAMqG,cAAc,CAACC,eAAD,CAApB,EAAuCG,mBAAmB,CAACzG,cAAD,EAAiBsG,eAAjB,CAA1D;IACA,KAAKt+I,QAAL,GAAgBA,QAAhB;;IACA,KAAKyhJ,gBAAL;;IACA,KAAKO,kBAAL,CAAwB1D,eAAxB;;IACA,KAAKkE,cAAL;;IACA,KAAK/G,sBAAL,CAA4B;MACxBwE,QAAQ,EAAE,IADc;MAExB;MACA;MACA;MACAO,SAAS,EAAE,CAAC,CAAC,KAAKxI;IALM,CAA5B;EAOH;EACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;EACIyK,eAAe,CAACv3qB,IAAD,EAAO6pqB,OAAP,EAAgB;IAC3B,IAAI,KAAK/0I,QAAL,CAAc90hB,IAAd,CAAJ,EACI,OAAO,KAAK80hB,QAAL,CAAc90hB,IAAd,CAAP;IACJ,KAAK80hB,QAAL,CAAc90hB,IAAd,IAAsB6pqB,OAAtB;IACAA,OAAO,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AAC3prB,KAApB;MACH;;MACD,OAAO0pQ,GAAP;IACH,CALM,CAAP;EAMH;EACD;;;EACA+tb,eAAe,CAACI,SAAD,EAAY/1oB,EAAZ,EAAgB;IAC3B,IAAIn5C,GAAG,GAAGkvrB,SAAV;;IACA,KAAK9D,aAAL,CAAmB,CAACpK,OAAD,EAAU7pqB,IAAV,KAAmB;MAClCnX,GAAG,GAAGm5C,EAAE,CAACn5C,GAAD,EAAMghrB,OAAN,EAAe7pqB,IAAf,CAAR;IACH,CAFD;;IAGA,OAAOnX,GAAP;EACH;EACD;;;EACAstrB,oBAAoB,GAAG;IACnB,KAAK,MAAM36oB,WAAX,IAA0B55C,MAAM,CAACjB,IAAP,CAAY,KAAKm0iB,QAAjB,CAA1B,EAAsD;MAClD,IAAI,KAAKA,QAAL,CAAct5f,WAAd,EAA2Bi5K,OAA/B,EAAwC;QACpC,OAAO,KAAP;MACH;IACJ;;IACD,OAAO7yN,MAAM,CAACjB,IAAP,CAAY,KAAKm0iB,QAAjB,EAA2Bn1iB,MAA3B,GAAoC,CAApC,IAAyC,KAAKmoJ,QAArD;EACH;;AA9VmC;AAgWxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM8riB,SAAN,SAAwBM,eAAxB,CAAwC;EACpC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACI9yrB,WAAW,CAAC0ziB,QAAD,EAAWs+I,eAAX,EAA4BtG,cAA5B,EAA4C;IACnD,MAAMqG,cAAc,CAACC,eAAD,CAApB,EAAuCG,mBAAmB,CAACzG,cAAD,EAAiBsG,eAAjB,CAA1D;IACA,KAAKt+I,QAAL,GAAg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AAE4/oB,mDAAQA;MADoB,CAAD,EAElC;QACC5/oB,IAAI,EAAEu5U,+CAAIA;MADX,CAFkC,EAIlC;QACCv5U,IAAI,EAAEi7B,iDADP;QAECrnC,IAAI,EAAE,CAAC2lrB,mBAAD;MAFP,CAJkC;IAA/B,CAXX,CAAP;EAmBH,CAvBL,EAuBuB;IAAExpqB,IAAI,EAAE,CAAC;MAChB/P,IAAI,EAAEg2D,gDADU;MAEhBpiE,IAAI,EAAE,CAAC,cAAD;IAFU,CAAD;EAAR,CAvBvB;AAAA;AA4BA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM41rB,oBAAoB,GAAG;EACzBjuB,OAAO,EAAE4hB,SADgB;EAEzB5F,WAAW,EAAEI,yDAAU,CAAC,MAAM8R,OAAP;AAFE,CAA7B;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMnV,eAAe,GAAG,CAAC,MAAMt7pB,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,MAAMwwqB,OAAN,SAAsBtM,SAAtB,CAAgC;EAC5BhsrB,WAAW,CAACwD,MAAD,EAAS2lrB,UAAT,EAAqB6F,eAArB,EAAsC+B,cAAtC,EAAsDwH,kBAAtD,EAA0E;IACjF;IACA,KAAKA,kBAAL,GAA0BA,kBAA1B;IACA,KAAK9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AD,CAAP;EAIH,CARL;AAAA;AAUA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;;;AACA,MAAMviE,OAAO,GAAG,IAAI+hE,kDAAJ,CAAY,QAAZ,CAAhB;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjiEA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMklD,WAAN,CAAkB;EACdt1sB,WAAW;EACX;EACAsM,EAFW;EAGX;EACAkb,GAJW,EAIN;IACD,KAAKlb,EAAL,GAAUA,EAAV;IACA,KAAKkb,GAAL,GAAWA,GAAX;EACH;;AARa;AAUlB;AACA;AACA;AACA;AACA;;;AACA,MAAM+trB,eAAN,SAA8BD,WAA9B,CAA0C;EACtCt1sB,WAAW;EACX;EACAsM,EAFW;EAGX;EACAkb,GAJW;EAKX;EACAgurB,iBAAiB,GAAG,YANT;EAOX;EACAC,aAAa,GAAG,IARL,EAQW;IAClB,MAAMnpsB,EAAN,EAAUkb,GAAV;IACA,KAAKgurB,iBAAL,GAAyBA,iBAAzB;IACA,KAAKC,aAAL,GAAqBA,aAArB;EACH;EACD;;;EACAp2sB,QAAQ,GAAG;IACP,OAAQ,uBAAsB,KAAKiN,EAAG,WAAU,KAAKkb,GAAI,IAAzD;EACH;;AAjBqC;AAmB1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMkurB,aAAN,SAA4BJ,WAA5B,CAA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xa,QAAQ,CAACl9G,CAAD,CAApB;;IACA,IAAIuuhB,GAAG,IAAI,IAAX,EAAiB;MACb,MAAM,IAAI3phB,KAAJ,CAAW,+BAA8B2phB,GAAI,qBAAoBvuhB,CAAE,EAAnE,CAAN;IACH;EACJ;AACJ;;AACD,SAASq2tB,4BAAT,CAAsCl3tB,MAAtC,EAA8C;EAC1C,OAAOA,MAAM,KAAK,YAAlB;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMq6tB,UAAN,CAAiB;EACb14tB,WAAW,CAAC24tB,MAAD,EAAStiB,KAAT,EAAgBuiB,iBAAhB,EAAmCt4kB,QAAnC,EAA6CltH,EAA7C,EAAiD;IACxD,KAAKulsB,MAAL,GAAcA,MAAd;IACA,KAAKtiB,KAAL,GAAaA,KAAb;IACA,KAAKuiB,iBAAL,GAAyBA,iBAAzB;IACA,KAAKt4kB,QAAL,GAAgBA,QAAhB;IACA,KAAKltH,EAAL,GAAUA,EAAV;IACA,KAAKgpF,QAAL,GAAgB,IAAhB;IACA;;IACA,KAAKy8mB,SAAL,GAAiB,IAAIhkX,0CAAJ,EAAjB;IACA,KAAKikX,0BAAL,CAAgC,GAAhC;EACH;EACD;AACJ;AACA;AACA;;;EACIA,0BAA0B,CAACC,WAAD,EAAc;IACpC,IAAI,KAAKH,iBAAL,IAA0B;IAAK;IAAnC,EAAsE;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","sources":["./node_modules/@mattlewis92/dom-autoscroller/dist/bundle.es.js","./node_modules/@ng-bootstrap/ng-bootstrap/__ivy_ngcc__/fesm2015/ng-bootstrap.js","./node_modules/@ng-select/ng-select/__ivy_ngcc__/fesm2015/ng-select-ng-select.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","@syncfusion/ej2-buttons","./node_modules/@syncfusion/ej2-filemanager/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-inplace-editor/node_modules/@syncfusion/ej2-buttons/dist/es6/ej2-buttons.es5.js","./node_modules/@syncfusion/ej2-inplace-editor/node_modules/@syncfusion/ej2-buttons/node_modules/@syncfusion/ej2-base/dist/es6/ej2-base.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-navigations/node_modules/@syncfusion/ej2-buttons/dist/es6/ej2-buttons.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","webpack:///@syncfusion/ej2-buttons?7b10","./node_modules/@syncfusion/ej2-splitbuttons/dist/es6/ej2-splitbuttons.es5.js","./node_modules/angular-calendar/__ivy_ngcc__/fesm2015/angular-calendar.js","./node_modules/angular-calendar/date-adapters/esm/date-fns/index.js","./node_modules/angular-calendar/node_modules/angular-draggable-droppable/__ivy_ngcc__/fesm2015/angular-draggable-droppable.js","./node_modules/angular-calendar/node_modules/calendar-utils/calendar-utils.js","./node_modules/angular-calendar/node_modules/calendar-utils/date-adapters/esm/date-fns/index.js","./node_modules/angular-file/__ivy_ngcc__/fesm2015/angular-file.js","./node_modules/angular-resizable-element/__ivy_ngcc__/fesm2015/angular-resizable-element.js","./node_modules/date-fns/esm/_lib/defaultOptions/index.js","./node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","./node_modules/date-fns/esm/_lib/requiredArgs/index.js","./node_modules/date-fns/esm/_lib/roundingMethods/index.js","./node_modules/date-fns/esm/_lib/toInteger/index.js","./node_modules/date-fns/esm/addDays/index.js","./node_modules/date-fns/esm/addHours/index.js","./node_modules/date-fns/esm/addMilliseconds/index.js","./node_modules/date-fns/esm/addMinutes/index.js","./node_modules/date-fns/esm/addMonths/index.js","./node_modules/date-fns/esm/addSeconds/index.js","./node_modules/date-fns/esm/addWeeks/index.js","./node_modules/date-fns/esm/constants/index.js","./node_modules/date-fns/esm/differenceInCalendarDays/index.js","./node_modules/date-fns/esm/differenceInDays/index.js","./node_modules/date-fns/esm/differenceInMilliseconds/index.js","./node_modules/date-fns/esm/differenceInMinutes/index.js","./node_modules/date-fns/esm/differenceInSeconds/index.js","./node_modules/date-fns/esm/endOfDay/index.js","./node_modules/date-fns/esm/endOfMonth/index.js","./node_modules/date-fns/esm/endOfWeek/index.js","./node_modules/date-fns/esm/getDate/index.js","./node_modules/date-fns/esm/getDay/index.js","./node_modules/date-fns/esm/getDaysInMonth/index.js","./node_modules/date-fns/esm/getHours/index.js","./node_modules/date-fns/esm/getISOWeekYear/index.js","./node_modules/date-fns/esm/getISOWeek/index.js","./node_modules/date-fns/esm/getMinutes/index.js","./node_modules/date-fns/esm/getMonth/index.js","./node_modules/date-fns/esm/getYear/index.js","./node_modules/date-fns/esm/isSameDay/index.js","./node_modules/date-fns/esm/isSameMonth/index.js","./node_modules/date-fns/esm/isSameSecond/index.js","./node_modules/date-fns/esm/max/index.js","./node_modules/date-fns/esm/setDate/index.js","./node_modules/date-fns/esm/setHours/index.js","./node_modules/date-fns/esm/setMinutes/index.js","./node_modules/date-fns/esm/setMonth/index.js","./node_modules/date-fns/esm/setYear/index.js","./node_modules/date-fns/esm/startOfDay/index.js","./node_modules/date-fns/esm/startOfISOWeekYear/index.js","./node_modules/date-fns/esm/startOfISOWeek/index.js","./node_modules/date-fns/esm/startOfMinute/index.js","./node_modules/date-fns/esm/startOfMonth/index.js","./node_modules/date-fns/esm/startOfSecond/index.js","./node_modules/date-fns/esm/startOfWeek/index.js","./node_modules/date-fns/esm/subDays/index.js","./node_modules/date-fns/esm/subMonths/index.js","./node_modules/date-fns/esm/subWeeks/index.js","./node_modules/date-fns/esm/toDate/index.js","./node_modules/dompurify/dist/purify.js","./node_modules/jquery-deferred/index.js","./node_modules/jquery-deferred/lib/jquery-callbacks.js","./node_modules/jquery-deferred/lib/jquery-core.js","./node_modules/jquery-deferred/lib/jquery-deferred.js","./node_modules/jquery-param/jquery-param.js","./node_modules/lodash/lodash.js","./node_modules/moment-business-days/index.js","./node_modules/moment/locale/af.js","./node_modules/moment/locale/ar-dz.js","./node_modules/moment/locale/ar-kw.js","./node_modules/moment/locale/ar-ly.js","./node_modules/moment/locale/ar-ma.js","./node_modules/moment/locale/ar-sa.js","./node_modules/moment/locale/ar-tn.js","./node_modules/moment/locale/ar.js","./node_modules/moment/locale/az.js","./node_modules/moment/locale/be.js","./node_modules/moment/locale/bg.js","./node_modules/moment/locale/bm.js","./node_modules/moment/locale/bn-bd.js","./node_modules/moment/locale/bn.js","./node_modules/moment/locale/bo.js","./node_modules/moment/locale/br.js","./node_modules/moment/locale/bs.js","./node_modules/moment/locale/ca.js","./node_modules/moment/locale/cs.js","./node_modules/moment/locale/cv.js","./node_modules/moment/locale/cy.js","./node_modules/moment/locale/da.js","./node_modules/moment/locale/de-at.js","./node_modules/moment/locale/de-ch.js","./node_modules/moment/locale/de.js","./node_modules/moment/locale/dv.js","./node_modules/moment/locale/el.js","./node_modules/moment/locale/en-au.js","./node_modules/moment/locale/en-ca.js","./node_modules/moment/locale/en-gb.js","./node_modules/moment/locale/en-ie.js","./node_modules/moment/locale/en-il.js","./node_modules/moment/locale/en-in.js","./node_modules/moment/locale/en-nz.js","./node_modules/moment/locale/en-sg.js","./node_modules/moment/locale/eo.js","./node_modules/moment/locale/es-do.js","./node_modules/moment/locale/es-mx.js","./node_modules/moment/locale/es-us.js","./node_modules/moment/locale/es.js","./node_modules/moment/locale/et.js","./node_modules/moment/locale/eu.js","./node_modules/moment/locale/fa.js","./node_modules/moment/locale/fi.js","./node_modules/moment/locale/fil.js","./node_modules/moment/locale/fo.js","./node_modules/moment/locale/fr-ca.js","./node_modules/moment/locale/fr-ch.js","./node_modules/moment/locale/fr.js","./node_modules/moment/locale/fy.js","./node_modules/moment/locale/ga.js","./node_modules/moment/locale/gd.js","./node_modules/moment/locale/gl.js","./node_modules/moment/locale/gom-deva.js","./node_modules/moment/locale/gom-latn.js","./node_modules/moment/locale/gu.js","./node_modules/moment/locale/he.js","./node_modules/moment/locale/hi.js","./node_modules/moment/locale/hr.js","./node_modules/moment/locale/hu.js","./node_modules/moment/locale/hy-am.js","./node_modules/moment/locale/id.js","./node_modules/moment/locale/is.js","./node_modules/moment/locale/it-ch.js","./node_modules/moment/locale/it.js","./node_modules/moment/locale/ja.js","./node_modules/moment/locale/jv.js","./node_modules/moment/locale/ka.js","./node_modules/moment/locale/kk.js","./node_modules/moment/locale/km.js","./node_modules/moment/locale/kn.js","./node_modules/moment/locale/ko.js","./node_modules/moment/locale/ku.js","./node_modules/moment/locale/ky.js","./node_modules/moment/locale/lb.js","./node_modules/moment/locale/lo.js","./node_modules/moment/locale/lt.js","./node_modules/moment/locale/lv.js","./node_modules/moment/locale/me.js","./node_modules/moment/locale/mi.js","./node_modules/moment/locale/mk.js","./node_modules/moment/locale/ml.js","./node_modules/moment/locale/mn.js","./node_modules/moment/locale/mr.js","./node_modules/moment/locale/ms-my.js","./node_modules/moment/locale/ms.js","./node_modules/moment/locale/mt.js","./node_modules/moment/locale/my.js","./node_modules/moment/locale/nb.js","./node_modules/moment/locale/ne.js","./node_modules/moment/locale/nl-be.js","./node_modules/moment/locale/nl.js","./node_modules/moment/locale/nn.js","./node_modules/moment/locale/oc-lnc.js","./node_modules/moment/locale/pa-in.js","./node_modules/moment/locale/pl.js","./node_modules/moment/locale/pt-br.js","./node_modules/moment/locale/pt.js","./node_modules/moment/locale/ro.js","./node_modules/moment/locale/ru.js","./node_modules/moment/locale/sd.js","./node_modules/moment/locale/se.js","./node_modules/moment/locale/si.js","./node_modules/moment/locale/sk.js","./node_modules/moment/locale/sl.js","./node_modules/moment/locale/sq.js","./node_modules/moment/locale/sr-cyrl.js","./node_modules/moment/locale/sr.js","./node_modules/moment/locale/ss.js","./node_modules/moment/locale/sv.js","./node_modules/moment/locale/sw.js","./node_modules/moment/locale/ta.js","./node_modules/moment/locale/te.js","./node_modules/moment/locale/tet.js","./node_modules/moment/locale/tg.js","./node_modules/moment/locale/th.js","./node_modules/moment/locale/tk.js","./node_modules/moment/locale/tl-ph.js","./node_modules/moment/locale/tlh.js","./node_modules/moment/locale/tr.js","./node_modules/moment/locale/tzl.js","./node_modules/moment/locale/tzm-latn.js","./node_modules/moment/locale/tzm.js","./node_modules/moment/locale/ug-cn.js","./node_modules/moment/locale/uk.js","./node_modules/moment/locale/ur.js","./node_modules/moment/locale/uz-latn.js","./node_modules/moment/locale/uz.js","./node_modules/moment/locale/vi.js","./node_modules/moment/locale/x-pseudo.js","./node_modules/moment/locale/yo.js","./node_modules/moment/locale/zh-cn.js","./node_modules/moment/locale/zh-hk.js","./node_modules/moment/locale/zh-mo.js","./node_modules/moment/locale/zh-tw.js","./node_modules/moment/moment.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/chronos/fesm2015/ngx-bootstrap-chronos.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/collapse/fesm2015/ngx-bootstrap-collapse.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/component-loader/fesm2015/ngx-bootstrap-component-loader.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/datepicker/fesm2015/ngx-bootstrap-datepicker.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/mini-ngrx/fesm2015/ngx-bootstrap-mini-ngrx.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/modal/fesm2015/ngx-bootstrap-modal.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/pagination/fesm2015/ngx-bootstrap-pagination.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/positioning/fesm2015/ngx-bootstrap-positioning.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/tooltip/fesm2015/ngx-bootstrap-tooltip.js","./node_modules/ngx-bootstrap/__ivy_ngcc__/utils/fesm2015/ngx-bootstrap-utils.js","./node_modules/ngx-currency/__ivy_ngcc__/fesm2015/ngx-currency.js","./node_modules/ngx-image-cropper/__ivy_ngcc__/fesm2015/ngx-image-cropper.js","./node_modules/ngx-signaturepad2/__ivy_ngcc__/fesm2015/ngx-signaturepad2.js","./node_modules/positioning/dist/entry.js","./node_modules/positioning/dist/positioning.js","./node_modules/quill/dist/quill.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/ReplaySubject.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/rxjs/_esm2015/internal/innerSubscribe.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/_esm2015/internal/observable/defer.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","./node_modules/rxjs/_esm2015/internal/observable/interval.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/count.js","./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/rxjs/_esm2015/internal/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/mergeAll.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/observeOn.js","./node_modules/rxjs/_esm2015/internal/operators/pairwise.js","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/rxjs/_esm2015/internal/operators/scan.js","./node_modules/rxjs/_esm2015/internal/operators/share.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/switchMapTo.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/AnimationFrameAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/QueueScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/animationFrame.js","./node_modules/rxjs/_esm2015/internal/scheduler/asap.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/rxjs/_esm2015/internal/scheduler/queue.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/util/Immediate.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/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/signalr-no-jquery/build/jQueryShim.js","./node_modules/signalr-no-jquery/build/signalR.js","./node_modules/signature_pad/dist/signature_pad.js","./node_modules/sortablejs/modular/sortable.esm.js","tslib","./node_modules/ngx-image-cropper/node_modules/tslib/tslib.es6.js","./node_modules/tslib/tslib.es6.js","./node_modules/@angular/animations/fesm2015/animations.mjs","./node_modules/@angular/animations/fesm2015/browser.mjs","./node_modules/@angular/common/fesm2015/common.mjs","./node_modules/@angular/common/fesm2015/http.mjs","./node_modules/@angular/core/fesm2015/core.mjs","./node_modules/@angular/forms/fesm2015/forms.mjs","./node_modules/@angular/platform-browser/fesm2015/animations.mjs","./node_modules/@angular/platform-browser/fesm2015/platform-browser.mjs","./node_modules/@angular/router/fesm2015/router.mjs","./node_modules/@syncfusion/ej2-angular-pdfviewer/fesm2015/syncfusion-ej2-angular-pdfviewer.mjs","./node_modules/ngx-quill/fesm2015/ngx-quill.mjs","./node_modules/nxt-sortablejs/fesm2015/nxt-sortablejs.mjs"],"sourcesContent":["function getDef(f, d) {\n if (typeof f === 'undefined') {\n return typeof d === 'undefined' ? f : d;\n }\n\n return f;\n}\nfunction boolean(func, def) {\n\n func = getDef(func, def);\n\n if (typeof func === 'function') {\n return function f() {\n var arguments$1 = arguments;\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments$1[_key];\n }\n\n return !!func.apply(this, args);\n };\n }\n\n return !!func ? function () {\n return true;\n } : function () {\n return false;\n };\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n\n/**\n * Returns `true` if provided input is Element.\n * @name isElement\n * @param {*} [input]\n * @returns {boolean}\n */\nvar isElement$1 = function (input) {\n return input != null && (typeof input === 'undefined' ? 'undefined' : _typeof(input)) === 'object' && input.nodeType === 1 && _typeof(input.style) === 'object' && _typeof(input.ownerDocument) === 'object';\n};\n\nfunction indexOfElement(elements, element){\n element = resolveElement(element, true);\n if(!isElement$1(element)) { return -1; }\n for(var i=0; i 0 ) { toAdd[ len ] = arguments$1[ len + 1 ]; }\n\n toAdd = toAdd.map(resolveElement);\n return pushElements(elements, toAdd);\n}\n\nfunction removeElements(elements){\n var arguments$1 = arguments;\n\n var toRemove = [], len = arguments.length - 1;\n while ( len-- > 0 ) { toRemove[ len ] = arguments$1[ len + 1 ]; }\n\n return toRemove.map(resolveElement).reduce(function (last, e){\n\n var index = indexOfElement(elements, e);\n\n if(index !== -1)\n { return last.concat(elements.splice(index, 1)); }\n return last;\n }, []);\n}\n\nfunction resolveElement(element, noThrow){\n if(typeof element === 'string'){\n try{\n return document.querySelector(element);\n }catch(e){\n throw e;\n }\n\n }\n\n if(!isElement$1(element) && !noThrow){\n throw new TypeError((element + \" is not a DOM element.\"));\n }\n return element;\n}\n\nfunction createPointCB(object, options) {\n\n // A persistent object (as opposed to returned object) is used to save memory\n // This is good to prevent layout thrashing, or for games, and such\n\n // NOTE\n // This uses IE fixes which should be OK to remove some day. :)\n // Some speed will be gained by removal of these.\n\n // pointCB should be saved in a variable on return\n // This allows the usage of element.removeEventListener\n\n options = options || {};\n\n var allowUpdate = boolean(options.allowUpdate, true);\n\n /*if(typeof options.allowUpdate === 'function'){\n allowUpdate = options.allowUpdate;\n }else{\n allowUpdate = function(){return true;};\n }*/\n\n return function pointCB(event) {\n\n event = event || window.event; // IE-ism\n object.target = event.target || event.srcElement || event.originalTarget;\n object.element = this;\n object.type = event.type;\n\n if (!allowUpdate(event)) {\n return;\n }\n\n // Support touch\n // http://www.creativebloq.com/javascript/make-your-site-work-touch-devices-51411644\n\n if (event.targetTouches) {\n object.x = event.targetTouches[0].clientX;\n object.y = event.targetTouches[0].clientY;\n object.pageX = event.targetTouches[0].pageX;\n object.pageY = event.targetTouches[0].pageY;\n object.screenX = event.targetTouches[0].screenX;\n object.screenY = event.targetTouches[0].screenY;\n } else {\n\n // If pageX/Y aren't available and clientX/Y are,\n // calculate pageX/Y - logic taken from jQuery.\n // (This is to support old IE)\n // NOTE Hopefully this can be removed soon.\n\n if (event.pageX === null && event.clientX !== null) {\n var eventDoc = event.target && event.target.ownerDocument || document;\n var doc = eventDoc.documentElement;\n var body = eventDoc.body;\n\n object.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);\n object.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);\n } else {\n object.pageX = event.pageX;\n object.pageY = event.pageY;\n }\n\n // pageX, and pageY change with page scroll\n // so we're not going to use those for x, and y.\n // NOTE Most browsers also alias clientX/Y with x/y\n // so that's something to consider down the road.\n\n object.x = event.clientX;\n object.y = event.clientY;\n\n object.screenX = event.screenX;\n object.screenY = event.screenY;\n }\n\n object.clientX = object.x;\n object.clientY = object.y;\n };\n\n //NOTE Remember accessibility, Aria roles, and labels.\n}\n\nfunction createWindowRect() {\n var props = {\n top: { value: 0, enumerable: true },\n left: { value: 0, enumerable: true },\n right: { value: window.innerWidth, enumerable: true },\n bottom: { value: window.innerHeight, enumerable: true },\n width: { value: window.innerWidth, enumerable: true },\n height: { value: window.innerHeight, enumerable: true },\n x: { value: 0, enumerable: true },\n y: { value: 0, enumerable: true }\n };\n\n if (Object.create) {\n return Object.create({}, props);\n } else {\n var rect = {};\n Object.defineProperties(rect, props);\n return rect;\n }\n}\n\nfunction getClientRect(el) {\n if (el === window) {\n return createWindowRect();\n } else {\n try {\n var rect = el.getBoundingClientRect();\n if (rect.x === undefined) {\n rect.x = rect.left;\n rect.y = rect.top;\n }\n return rect;\n } catch (e) {\n throw new TypeError(\"Can't call getBoundingClientRect on \" + el);\n }\n }\n}\n\nfunction pointInside(point, el) {\n var rect = getClientRect(el);\n return point.y > rect.top && point.y < rect.bottom && point.x > rect.left && point.x < rect.right;\n}\n\nvar objectCreate = void 0;\nif (typeof Object.create != 'function') {\n objectCreate = function (undefined$1) {\n var Temp = function Temp() {};\n return function (prototype, propertiesObject) {\n if (prototype !== Object(prototype) && prototype !== null) {\n throw TypeError('Argument must be an object, or null');\n }\n Temp.prototype = prototype || {};\n var result = new Temp();\n Temp.prototype = null;\n if (propertiesObject !== undefined$1) {\n Object.defineProperties(result, propertiesObject);\n }\n\n // to imitate the case of Object.create(null)\n if (prototype === null) {\n result.__proto__ = null;\n }\n return result;\n };\n }();\n} else {\n objectCreate = Object.create;\n}\n\nvar objectCreate$1 = objectCreate;\n\nvar mouseEventProps = ['altKey', 'button', 'buttons', 'clientX', 'clientY', 'ctrlKey', 'metaKey', 'movementX', 'movementY', 'offsetX', 'offsetY', 'pageX', 'pageY', 'region', 'relatedTarget', 'screenX', 'screenY', 'shiftKey', 'which', 'x', 'y'];\n\nfunction createDispatcher(element) {\n\n var defaultSettings = {\n screenX: 0,\n screenY: 0,\n clientX: 0,\n clientY: 0,\n ctrlKey: false,\n shiftKey: false,\n altKey: false,\n metaKey: false,\n button: 0,\n buttons: 1,\n relatedTarget: null,\n region: null\n };\n\n if (element !== undefined) {\n element.addEventListener('mousemove', onMove);\n }\n\n function onMove(e) {\n for (var i = 0; i < mouseEventProps.length; i++) {\n defaultSettings[mouseEventProps[i]] = e[mouseEventProps[i]];\n }\n }\n\n var dispatch = function () {\n if (MouseEvent) {\n return function m1(element, initMove, data) {\n var evt = new MouseEvent('mousemove', createMoveInit(defaultSettings, initMove));\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n\n return element.dispatchEvent(evt);\n };\n } else if (typeof document.createEvent === 'function') {\n return function m2(element, initMove, data) {\n var settings = createMoveInit(defaultSettings, initMove);\n var evt = document.createEvent('MouseEvents');\n\n evt.initMouseEvent(\"mousemove\", true, //can bubble\n true, //cancelable\n window, //view\n 0, //detail\n settings.screenX, //0, //screenX\n settings.screenY, //0, //screenY\n settings.clientX, //80, //clientX\n settings.clientY, //20, //clientY\n settings.ctrlKey, //false, //ctrlKey\n settings.altKey, //false, //altKey\n settings.shiftKey, //false, //shiftKey\n settings.metaKey, //false, //metaKey\n settings.button, //0, //button\n settings.relatedTarget //null //relatedTarget\n );\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n\n return element.dispatchEvent(evt);\n };\n } else if (typeof document.createEventObject === 'function') {\n return function m3(element, initMove, data) {\n var evt = document.createEventObject();\n var settings = createMoveInit(defaultSettings, initMove);\n for (var name in settings) {\n evt[name] = settings[name];\n }\n\n //evt.dispatched = 'mousemove';\n setSpecial(evt, data);\n\n return element.dispatchEvent(evt);\n };\n }\n }();\n\n function destroy() {\n if (element) { element.removeEventListener('mousemove', onMove, false); }\n defaultSettings = null;\n }\n\n return {\n destroy: destroy,\n dispatch: dispatch\n };\n}\n\nfunction createMoveInit(defaultSettings, initMove) {\n initMove = initMove || {};\n var settings = objectCreate$1(defaultSettings);\n for (var i = 0; i < mouseEventProps.length; i++) {\n if (initMove[mouseEventProps[i]] !== undefined) { settings[mouseEventProps[i]] = initMove[mouseEventProps[i]]; }\n }\n\n return settings;\n}\n\nfunction setSpecial(e, data) {\n console.log('data ', data);\n e.data = data || {};\n e.dispatched = 'mousemove';\n}\n\nvar prefix = [ 'webkit', 'moz', 'ms', 'o' ];\n\nvar requestFrame = (function () {\n\n if (typeof window === \"undefined\") {\n return function () {};\n }\n\n for ( var i = 0, limit = prefix.length ; i < limit && ! window.requestAnimationFrame ; ++i ) {\n window.requestAnimationFrame = window[ prefix[ i ] + 'RequestAnimationFrame' ];\n }\n\n if ( ! window.requestAnimationFrame ) {\n var lastTime = 0;\n\n window.requestAnimationFrame = function (callback) {\n var now = new Date().getTime();\n var ttc = Math.max( 0, 16 - now - lastTime );\n var timer = window.setTimeout( function () { return callback( now + ttc ); }, ttc );\n\n lastTime = now + ttc;\n\n return timer;\n };\n }\n\n return window.requestAnimationFrame.bind( window );\n})();\n\nvar cancelFrame = (function () {\n\n if (typeof window === \"undefined\") {\n return function () {};\n }\n\n for ( var i = 0, limit = prefix.length ; i < limit && ! window.cancelAnimationFrame ; ++i ) {\n window.cancelAnimationFrame = window[ prefix[ i ] + 'CancelAnimationFrame' ] || window[ prefix[ i ] + 'CancelRequestAnimationFrame' ];\n }\n\n if ( ! window.cancelAnimationFrame ) {\n window.cancelAnimationFrame = function (timer) {\n window.clearTimeout( timer );\n };\n }\n\n return window.cancelAnimationFrame.bind( window );\n})();\n\nfunction AutoScroller(elements, options){\n if ( options === void 0 ) options = {};\n\n var self = this;\n var maxSpeed = 4, scrolling = false;\n\n if (typeof options.margin !== 'object') {\n var margin = options.margin || -1;\n\n this.margin = {\n left: margin,\n right: margin,\n top: margin,\n bottom: margin\n };\n } else {\n this.margin = options.margin;\n }\n\n //this.scrolling = false;\n this.scrollWhenOutside = options.scrollWhenOutside || false;\n\n var point = {},\n pointCB = createPointCB(point),\n dispatcher = createDispatcher(),\n down = false;\n\n window.addEventListener('mousemove', pointCB, false);\n window.addEventListener('touchmove', pointCB, false);\n\n if(!isNaN(options.maxSpeed)){\n maxSpeed = options.maxSpeed;\n }\n\n if (typeof maxSpeed !== 'object') {\n maxSpeed = {\n left: maxSpeed,\n right: maxSpeed,\n top: maxSpeed,\n bottom: maxSpeed\n };\n }\n\n this.autoScroll = boolean(options.autoScroll);\n this.syncMove = boolean(options.syncMove, false);\n\n this.destroy = function(forceCleanAnimation) {\n window.removeEventListener('mousemove', pointCB, false);\n window.removeEventListener('touchmove', pointCB, false);\n window.removeEventListener('mousedown', onDown, false);\n window.removeEventListener('touchstart', onDown, false);\n window.removeEventListener('mouseup', onUp, false);\n window.removeEventListener('touchend', onUp, false);\n window.removeEventListener('pointerup', onUp, false);\n window.removeEventListener('mouseleave', onMouseOut, false);\n\n window.removeEventListener('mousemove', onMove, false);\n window.removeEventListener('touchmove', onMove, false);\n\n window.removeEventListener('scroll', setScroll, true);\n elements = [];\n if(forceCleanAnimation){\n cleanAnimation();\n }\n };\n\n this.add = function(){\n var element = [], len = arguments.length;\n while ( len-- ) element[ len ] = arguments[ len ];\n\n addElements.apply(void 0, [ elements ].concat( element ));\n return this;\n };\n\n this.remove = function(){\n var element = [], len = arguments.length;\n while ( len-- ) element[ len ] = arguments[ len ];\n\n return removeElements.apply(void 0, [ elements ].concat( element ));\n };\n\n var hasWindow = null, windowAnimationFrame;\n\n if(Object.prototype.toString.call(elements) !== '[object Array]'){\n elements = [elements];\n }\n\n (function(temp){\n elements = [];\n temp.forEach(function(element){\n if(element === window){\n hasWindow = window;\n }else {\n self.add(element);\n }\n });\n }(elements));\n\n Object.defineProperties(this, {\n down: {\n get: function(){ return down; }\n },\n maxSpeed: {\n get: function(){ return maxSpeed; }\n },\n point: {\n get: function(){ return point; }\n },\n scrolling: {\n get: function(){ return scrolling; }\n }\n });\n\n var current = null, animationFrame;\n\n window.addEventListener('mousedown', onDown, false);\n window.addEventListener('touchstart', onDown, false);\n window.addEventListener('mouseup', onUp, false);\n window.addEventListener('touchend', onUp, false);\n\n /*\n IE does not trigger mouseup event when scrolling.\n It is a known issue that Microsoft won't fix.\n https://connect.microsoft.com/IE/feedback/details/783058/scrollbar-trigger-mousedown-but-not-mouseup\n IE supports pointer events instead\n */\n window.addEventListener('pointerup', onUp, false);\n\n window.addEventListener('mousemove', onMove, false);\n window.addEventListener('touchmove', onMove, false);\n\n window.addEventListener('mouseleave', onMouseOut, false);\n\n window.addEventListener('scroll', setScroll, true);\n\n function setScroll(e){\n\n for(var i=0; i rect.right - self.margin.right){\n scrollx = Math.ceil(\n Math.min(1, (point.x - rect.right) / self.margin.right + 1) * self.maxSpeed.right\n );\n }else {\n scrollx = 0;\n }\n\n if(point.y < rect.top + self.margin.top){\n scrolly = Math.floor(\n Math.max(-1, (point.y - rect.top) / self.margin.top - 1) * self.maxSpeed.top\n );\n }else if(point.y > rect.bottom - self.margin.bottom){\n scrolly = Math.ceil(\n Math.min(1, (point.y - rect.bottom) / self.margin.bottom + 1) * self.maxSpeed.bottom\n );\n }else {\n scrolly = 0;\n }\n\n if(self.syncMove()){\n /*\n Notes about mousemove event dispatch.\n screen(X/Y) should need to be updated.\n Some other properties might need to be set.\n Keep the syncMove option default false until all inconsistencies are taken care of.\n */\n dispatcher.dispatch(el, {\n pageX: point.pageX + scrollx,\n pageY: point.pageY + scrolly,\n clientX: point.x + scrollx,\n clientY: point.y + scrolly\n });\n }\n\n setTimeout(function (){\n\n if(scrolly){\n scrollY(el, scrolly);\n }\n\n if(scrollx){\n scrollX(el, scrollx);\n }\n\n });\n }\n\n function scrollY(el, amount){\n if(el === window){\n window.scrollTo(el.pageXOffset, el.pageYOffset + amount);\n }else {\n el.scrollTop += amount;\n }\n }\n\n function scrollX(el, amount){\n if(el === window){\n window.scrollTo(el.pageXOffset + amount, el.pageYOffset);\n }else {\n el.scrollLeft += amount;\n }\n }\n\n}\n\nfunction AutoScrollerFactory(element, options){\n return new AutoScroller(element, options);\n}\n\nfunction inside(point, el, rect){\n if(!rect){\n return pointInside(point, el);\n }else {\n return (point.y > rect.top && point.y < rect.bottom &&\n point.x > rect.left && point.x < rect.right);\n }\n}\n\n/*\ngit remote add origin https://github.com/hollowdoor/dom_autoscroller.git\ngit push -u origin master\n*/\n\nexport default AutoScrollerFactory;\n","import { ɵɵdefineInjectable, Injectable, ɵɵinject, Directive, TemplateRef, EventEmitter, Input, Output, ContentChildren, Component, ViewEncapsulation, ElementRef, NgZone, ChangeDetectorRef, Optional, Host, NgModule, ChangeDetectionStrategy, Renderer2, forwardRef, Inject, PLATFORM_ID, LOCALE_ID, ViewChild, ContentChild, ViewContainerRef, ComponentFactoryResolver, Injector, ApplicationRef, INJECTOR, RendererFactory2, Attribute, ViewChildren, HostBinding, InjectionToken } from '@angular/core';\nimport { CommonModule, isPlatformBrowser, getLocaleMonthNames, FormStyle, TranslationWidth, getLocaleDayNames, formatDate, DOCUMENT, getLocaleDayPeriods } from '@angular/common';\nimport { Observable, EMPTY, of, Subject, fromEvent, timer, race, BehaviorSubject, combineLatest, NEVER, zip, merge } from 'rxjs';\nimport { endWith, takeUntil, filter, take, map, startWith, distinctUntilChanged, switchMap, tap, withLatestFrom, delay, mergeMap, skip, share } from 'rxjs/operators';\nimport { NG_VALUE_ACCESSOR, NG_VALIDATORS, FormsModule } from '@angular/forms';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/forms';\n\nfunction NgbAccordion_ng_template_0_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"button\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_0_ng_template_2_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const panel_r3 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngbPanelToggle\", panel_r3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", panel_r3.title, \"\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", panel_r3.titleTpl == null ? null : panel_r3.titleTpl.templateRef);\n} }\nfunction NgbAccordion_ng_template_2_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_2_div_3_ng_template_2_Template(rf, ctx) { }\nfunction NgbAccordion_ng_template_2_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8)(1, \"div\", 9);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_div_3_ng_template_2_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const panel_r5 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵpropertyInterpolate(\"id\", panel_r5.id);\n ɵngcc0.ɵɵattribute(\"aria-labelledby\", panel_r5.id + \"-header\");\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (panel_r5.contentTpl == null ? null : panel_r5.contentTpl.templateRef) || null);\n} }\nconst _c0 = function (a0, a1) { return { $implicit: a0, opened: a1 }; };\nfunction NgbAccordion_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\")(1, \"div\", 5);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_ng_template_2_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbAccordion_ng_template_2_div_3_Template, 3, 3, \"div\", 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const panel_r5 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵclassMap(\"card \" + (panel_r5.cardClass || \"\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassMap(\"card-header \" + (panel_r5.type ? \"bg-\" + panel_r5.type : ctx_r2.type ? \"bg-\" + ctx_r2.type : \"\"));\n ɵngcc0.ɵɵpropertyInterpolate1(\"id\", \"\", panel_r5.id, \"-header\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (panel_r5.headerTpl == null ? null : panel_r5.headerTpl.templateRef) || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(8, _c0, panel_r5, panel_r5.isOpen));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r2.destroyOnHide || panel_r5.isOpen || panel_r5.transitionRunning);\n} }\nfunction NgbAlert_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r2 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function NgbAlert_button_1_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r2); const ctx_r1 = ɵngcc0.ɵɵnextContext(); return ctx_r1.close(); });\n ɵngcc0.ɵɵelementStart(1, \"span\", 2);\n ɵngcc0.ɵɵtext(2, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd()();\n} }\nconst _c3 = [\"*\"];\nfunction NgbCarousel_li_1_Template(rf, ctx) { if (rf & 1) {\n const _r6 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_li_1_Template_li_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r6); const slide_r4 = restoredCtx.$implicit; const ctx_r5 = ɵngcc0.ɵɵnextContext(); ctx_r5.focus(); return ctx_r5.select(slide_r4.id, ctx_r5.NgbSlideEventSource.INDICATOR); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const slide_r4 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"active\", slide_r4.id === ctx_r0.activeId);\n ɵngcc0.ɵɵattribute(\"aria-labelledby\", \"slide-\" + slide_r4.id)(\"aria-controls\", \"slide-\" + slide_r4.id)(\"aria-selected\", slide_r4.id === ctx_r0.activeId);\n} }\nfunction NgbCarousel_div_3_ng_template_3_Template(rf, ctx) { }\nfunction NgbCarousel_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 7)(1, \"span\", 8);\n ɵngcc0.ɵɵi18n(2, 9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbCarousel_div_3_ng_template_3_Template, 0, 0, \"ng-template\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const slide_r7 = ctx.$implicit;\n const i_r8 = ctx.index;\n const c_r9 = ctx.count;\n ɵngcc0.ɵɵproperty(\"id\", \"slide-\" + slide_r7.id);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵi18nExp(i_r8 + 1)(c_r9);\n ɵngcc0.ɵɵi18nApply(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", slide_r7.tplRef);\n} }\nfunction NgbCarousel_a_4_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_a_4_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.arrowLeft(); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 8);\n ɵngcc0.ɵɵi18n(3, 13);\n ɵngcc0.ɵɵelementEnd()();\n} }\nfunction NgbCarousel_a_5_Template(rf, ctx) { if (rf & 1) {\n const _r14 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 14);\n ɵngcc0.ɵɵlistener(\"click\", function NgbCarousel_a_5_Template_a_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r14); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.arrowRight(); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 8);\n ɵngcc0.ɵɵi18n(3, 16);\n ɵngcc0.ɵɵelementEnd()();\n} }\nconst _c10 = [\"defaultDayTemplate\"];\nconst _c11 = [\"content\"];\nfunction NgbDatepicker_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 7);\n} if (rf & 2) {\n const date_r8 = ctx.date;\n const currentMonth_r9 = ctx.currentMonth;\n const selected_r10 = ctx.selected;\n const disabled_r11 = ctx.disabled;\n const focused_r12 = ctx.focused;\n ɵngcc0.ɵɵproperty(\"date\", date_r8)(\"currentMonth\", currentMonth_r9)(\"selected\", selected_r10)(\"disabled\", disabled_r11)(\"focused\", focused_r12);\n} }\nfunction NgbDatepicker_ng_template_2_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const month_r14 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r16 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r16.i18n.getMonthLabel(month_r14.firstDate), \" \");\n} }\nfunction NgbDatepicker_ng_template_2_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 9);\n ɵngcc0.ɵɵtemplate(1, NgbDatepicker_ng_template_2_div_0_div_1_Template, 2, 1, \"div\", 10);\n ɵngcc0.ɵɵelement(2, \"ngb-datepicker-month\", 11);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const month_r14 = ctx.$implicit;\n const ctx_r13 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r13.navigation === \"none\" || ctx_r13.displayMonths > 1 && ctx_r13.navigation === \"select\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"month\", month_r14.firstDate);\n} }\nfunction NgbDatepicker_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepicker_ng_template_2_div_0_Template, 3, 2, \"div\", 8);\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r3.model.months);\n} }\nfunction NgbDatepicker_ngb_datepicker_navigation_5_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngb-datepicker-navigation\", 13);\n ɵngcc0.ɵɵlistener(\"navigate\", function NgbDatepicker_ngb_datepicker_navigation_5_Template_ngb_datepicker_navigation_navigate_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ctx_r18.onNavigateEvent($event); })(\"select\", function NgbDatepicker_ngb_datepicker_navigation_5_Template_ngb_datepicker_navigation_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r20 = ɵngcc0.ɵɵnextContext(); return ctx_r20.onNavigateDateSelect($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"date\", ctx_r4.model.firstDate)(\"months\", ctx_r4.model.months)(\"disabled\", ctx_r4.model.disabled)(\"showSelect\", ctx_r4.model.navigation === \"select\")(\"prevDisabled\", ctx_r4.model.prevDisabled)(\"nextDisabled\", ctx_r4.model.nextDisabled)(\"selectBoxes\", ctx_r4.model.selectBoxes);\n} }\nfunction NgbDatepicker_ng_template_8_Template(rf, ctx) { }\nfunction NgbDatepicker_ng_template_9_Template(rf, ctx) { }\nfunction NgbDatepickerMonth_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 5);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.i18n.getWeekLabel());\n} }\nfunction NgbDatepickerMonth_div_0_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const weekday_r4 = ctx.$implicit;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(weekday_r4);\n} }\nfunction NgbDatepickerMonth_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_div_0_div_1_Template, 2, 1, \"div\", 3);\n ɵngcc0.ɵɵtemplate(2, NgbDatepickerMonth_div_0_div_2_Template, 2, 1, \"div\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.datepicker.showWeekNumbers);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.viewModel.weekdays);\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 11);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const week_r5 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r7.i18n.getWeekNumerals(week_r5.number));\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template(rf, ctx) { }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_ng_template_0_Template, 0, 0, \"ng-template\", 14);\n} if (rf & 2) {\n const day_r10 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r11 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r11.datepicker.dayTemplate)(\"ngTemplateOutletContext\", day_r10.context);\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerMonth_ng_template_1_div_0_div_2_Template_div_click_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r15); const day_r10 = restoredCtx.$implicit; const ctx_r14 = ɵngcc0.ɵɵnextContext(3); ctx_r14.doSelect(day_r10); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_div_0_div_2_ng_template_1_Template, 1, 2, \"ng-template\", 13);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r10 = ctx.$implicit;\n ɵngcc0.ɵɵclassProp(\"disabled\", day_r10.context.disabled)(\"hidden\", day_r10.hidden)(\"ngb-dp-today\", day_r10.context.today);\n ɵngcc0.ɵɵproperty(\"tabindex\", day_r10.tabindex);\n ɵngcc0.ɵɵattribute(\"aria-label\", day_r10.ariaLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !day_r10.hidden);\n} }\nfunction NgbDatepickerMonth_ng_template_1_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_div_0_div_1_Template, 2, 1, \"div\", 9);\n ɵngcc0.ɵɵtemplate(2, NgbDatepickerMonth_ng_template_1_div_0_div_2_Template, 2, 9, \"div\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const week_r5 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r6.datepicker.showWeekNumbers);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", week_r5.days);\n} }\nfunction NgbDatepickerMonth_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_ng_template_1_div_0_Template, 3, 2, \"div\", 7);\n} if (rf & 2) {\n const week_r5 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngIf\", !week_r5.collapsed);\n} }\nfunction NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template(rf, ctx) { if (rf & 1) {\n const _r3 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngb-datepicker-navigation-select\", 7);\n ɵngcc0.ɵɵlistener(\"select\", function NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template_ngb_datepicker_navigation_select_select_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r3); const ctx_r2 = ɵngcc0.ɵɵnextContext(); return ctx_r2.select.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"date\", ctx_r0.date)(\"disabled\", ctx_r0.disabled)(\"months\", ctx_r0.selectBoxes.months)(\"years\", ctx_r0.selectBoxes.years);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_div_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n} }\nfunction NgbDatepickerNavigation_4_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerNavigation_4_ng_template_0_div_0_Template, 1, 0, \"div\", 9);\n ɵngcc0.ɵɵelementStart(1, \"div\", 10);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigation_4_ng_template_0_div_3_Template, 1, 0, \"div\", 9);\n} if (rf & 2) {\n const month_r5 = ctx.$implicit;\n const i_r6 = ctx.index;\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", i_r6 > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r4.i18n.getMonthLabel(month_r5.firstDate), \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", i_r6 !== ctx_r4.months.length - 1);\n} }\nfunction NgbDatepickerNavigation_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerNavigation_4_ng_template_0_Template, 4, 3, \"ng-template\", 8);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.months);\n} }\nconst _c20 = [\"ngbDatepickerDayView\", \"\"];\nconst _c21 = [\"month\"];\nconst _c22 = [\"year\"];\nfunction NgbDatepickerNavigationSelect_option_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"option\", 5);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const m_r4 = ctx.$implicit;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", m_r4);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx_r1.i18n.getMonthFullName(m_r4, ctx_r1.date == null ? null : ctx_r1.date.year));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.i18n.getMonthShortName(m_r4, ctx_r1.date == null ? null : ctx_r1.date.year));\n} }\nfunction NgbDatepickerNavigationSelect_option_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"option\", 5);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const y_r5 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"value\", y_r5);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r3.i18n.getYearNumerals(y_r5));\n} }\nconst _c31 = [\"dialog\"];\nconst _c32 = [\"ngbNavOutlet\", \"\"];\nfunction NgbNavOutlet_ng_template_0_div_0_ng_template_1_Template(rf, ctx) { }\nconst _c33 = function (a0) { return { $implicit: a0 }; };\nfunction NgbNavOutlet_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, NgbNavOutlet_ng_template_0_div_0_ng_template_1_Template, 0, 0, \"ng-template\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"item\", item_r1)(\"nav\", ctx_r2.nav)(\"role\", ctx_r2.paneRole);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (item_r1.contentTpl == null ? null : item_r1.contentTpl.templateRef) || null)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(5, _c33, item_r1.active || ctx_r2.isPanelTransitioning(item_r1)));\n} }\nfunction NgbNavOutlet_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbNavOutlet_ng_template_0_div_0_Template, 2, 7, \"div\", 1);\n} if (rf & 2) {\n const item_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngIf\", item_r1.isPanelInDom() || ctx_r0.isPanelTransitioning(item_r1));\n} }\nfunction NgbPagination_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵi18n(1, 10);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵi18n(1, 11);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵi18n(1, 12);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 9);\n ɵngcc0.ɵɵi18n(1, 13);\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0, \"...\");\n} }\nfunction NgbPagination_ng_template_10_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 15);\n ɵngcc0.ɵɵtext(1, \"(current)\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbPagination_ng_template_10_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_10_span_1_Template, 2, 0, \"span\", 14);\n} if (rf & 2) {\n const page_r19 = ctx.$implicit;\n const currentPage_r20 = ctx.currentPage;\n ɵngcc0.ɵɵtextInterpolate1(\" \", page_r19, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", page_r19 === currentPage_r20);\n} }\nfunction NgbPagination_ng_template_12_li_0_a_1_ng_template_1_Template(rf, ctx) { }\nconst _c42 = function (a1) { return { disabled: true, currentPage: a1 }; };\nfunction NgbPagination_ng_template_12_li_0_a_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"a\", 20);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_12_li_0_a_1_ng_template_1_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const page_r22 = ɵngcc0.ɵɵnextContext(2).$implicit;\n const ctx_r27 = ɵngcc0.ɵɵnextContext();\n const _r8 = ɵngcc0.ɵɵreference(9);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r27.tplEllipsis == null ? null : ctx_r27.tplEllipsis.templateRef) || _r8)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c42, page_r22));\n} }\nfunction NgbPagination_ng_template_12_li_0_a_2_ng_template_1_Template(rf, ctx) { }\nconst _c43 = function (a0, a1, a2) { return { disabled: a0, $implicit: a1, currentPage: a2 }; };\nfunction NgbPagination_ng_template_12_li_0_a_2_Template(rf, ctx) { if (rf & 1) {\n const _r34 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 21);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_ng_template_12_li_0_a_2_Template_a_click_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r34); const pageNumber_r26 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r32 = ɵngcc0.ɵɵnextContext(2); ctx_r32.selectPage(pageNumber_r26); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_12_li_0_a_2_ng_template_1_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const pageNumber_r26 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r35 = ɵngcc0.ɵɵnextContext();\n const disabled_r24 = ctx_r35.disabled;\n const page_r22 = ctx_r35.$implicit;\n const ctx_r28 = ɵngcc0.ɵɵnextContext();\n const _r10 = ɵngcc0.ɵɵreference(11);\n ɵngcc0.ɵɵattribute(\"tabindex\", disabled_r24 ? \"-1\" : null)(\"aria-disabled\", disabled_r24 ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r28.tplNumber == null ? null : ctx_r28.tplNumber.templateRef) || _r10)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(4, _c43, disabled_r24, pageNumber_r26, page_r22));\n} }\nfunction NgbPagination_ng_template_12_li_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"li\", 17);\n ɵngcc0.ɵɵtemplate(1, NgbPagination_ng_template_12_li_0_a_1_Template, 2, 4, \"a\", 18);\n ɵngcc0.ɵɵtemplate(2, NgbPagination_ng_template_12_li_0_a_2_Template, 2, 8, \"a\", 19);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const pageNumber_r26 = ctx.$implicit;\n const ctx_r37 = ɵngcc0.ɵɵnextContext();\n const page_r22 = ctx_r37.$implicit;\n const disabled_r24 = ctx_r37.disabled;\n const ctx_r25 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"active\", pageNumber_r26 === page_r22)(\"disabled\", ctx_r25.isEllipsis(pageNumber_r26) || disabled_r24);\n ɵngcc0.ɵɵattribute(\"aria-current\", pageNumber_r26 === page_r22 ? \"page\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r25.isEllipsis(pageNumber_r26));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r25.isEllipsis(pageNumber_r26));\n} }\nfunction NgbPagination_ng_template_12_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbPagination_ng_template_12_li_0_Template, 3, 7, \"li\", 16);\n} if (rf & 2) {\n const pages_r23 = ctx.pages;\n ɵngcc0.ɵɵproperty(\"ngForOf\", pages_r23);\n} }\nfunction NgbPagination_li_15_ng_template_2_Template(rf, ctx) { }\nconst _c46 = function (a0, a1) { return { disabled: a0, currentPage: a1 }; };\nfunction NgbPagination_li_15_Template(rf, ctx) { if (rf & 1) {\n const _r40 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 17)(1, \"a\", 22);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_15_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r40); const ctx_r39 = ɵngcc0.ɵɵnextContext(); ctx_r39.selectPage(1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_15_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r14 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r14.previousDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r14.previousDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r14.previousDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r14.tplFirst == null ? null : ctx_r14.tplFirst.templateRef) || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c46, ctx_r14.previousDisabled(), ctx_r14.page));\n} }\nfunction NgbPagination_li_16_ng_template_2_Template(rf, ctx) { }\nconst _c49 = function (a0) { return { disabled: a0 }; };\nfunction NgbPagination_li_16_Template(rf, ctx) { if (rf & 1) {\n const _r43 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 17)(1, \"a\", 23);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_16_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r43); const ctx_r42 = ɵngcc0.ɵɵnextContext(); ctx_r42.selectPage(ctx_r42.page - 1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_16_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r15 = ɵngcc0.ɵɵnextContext();\n const _r2 = ɵngcc0.ɵɵreference(3);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r15.previousDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r15.previousDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r15.previousDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r15.tplPrevious == null ? null : ctx_r15.tplPrevious.templateRef) || _r2)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(6, _c49, ctx_r15.previousDisabled()));\n} }\nfunction NgbPagination_ng_template_17_Template(rf, ctx) { }\nfunction NgbPagination_li_18_ng_template_2_Template(rf, ctx) { }\nfunction NgbPagination_li_18_Template(rf, ctx) { if (rf & 1) {\n const _r46 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 17)(1, \"a\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_18_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r46); const ctx_r45 = ɵngcc0.ɵɵnextContext(); ctx_r45.selectPage(ctx_r45.page + 1); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_18_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r17 = ɵngcc0.ɵɵnextContext();\n const _r4 = ɵngcc0.ɵɵreference(5);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r17.nextDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r17.nextDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r17.nextDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r17.tplNext == null ? null : ctx_r17.tplNext.templateRef) || _r4)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c46, ctx_r17.nextDisabled(), ctx_r17.page));\n} }\nfunction NgbPagination_li_19_ng_template_2_Template(rf, ctx) { }\nfunction NgbPagination_li_19_Template(rf, ctx) { if (rf & 1) {\n const _r49 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"li\", 17)(1, \"a\", 25);\n ɵngcc0.ɵɵlistener(\"click\", function NgbPagination_li_19_Template_a_click_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r49); const ctx_r48 = ɵngcc0.ɵɵnextContext(); ctx_r48.selectPage(ctx_r48.pageCount); return $event.preventDefault(); });\n ɵngcc0.ɵɵtemplate(2, NgbPagination_li_19_ng_template_2_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r18 = ɵngcc0.ɵɵnextContext();\n const _r6 = ɵngcc0.ɵɵreference(7);\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx_r18.nextDisabled());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"tabindex\", ctx_r18.nextDisabled() ? \"-1\" : null)(\"aria-disabled\", ctx_r18.nextDisabled() ? \"true\" : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx_r18.tplLast == null ? null : ctx_r18.tplLast.templateRef) || _r6)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(6, _c46, ctx_r18.nextDisabled(), ctx_r18.page));\n} }\nconst _c54 = function (a0, a1, a2) { return { $implicit: a0, pages: a1, disabled: a2 }; };\nfunction NgbPopoverWindow_h3_1_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r2.title);\n} }\nfunction NgbPopoverWindow_h3_1_ng_template_3_Template(rf, ctx) { }\nfunction NgbPopoverWindow_h3_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"h3\", 3);\n ɵngcc0.ɵɵtemplate(1, NgbPopoverWindow_h3_1_ng_template_1_Template, 1, 1, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgbPopoverWindow_h3_1_ng_template_3_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r1 = ɵngcc0.ɵɵreference(2);\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.isTitleTemplate() ? ctx_r0.title : _r1)(\"ngTemplateOutletContext\", ctx_r0.context);\n} }\nfunction NgbProgressbar_span_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵi18n(1, 2);\n ɵngcc0.ɵɵpipe(2, \"percent\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵi18nExp(ɵngcc0.ɵɵpipeBind1(2, 1, ctx_r0.getValue() / ctx_r0.max));\n ɵngcc0.ɵɵi18nApply(1);\n} }\nfunction NgbRating_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const fill_r3 = ctx.fill;\n ɵngcc0.ɵɵtextInterpolate(fill_r3 === 100 ? \"\\u2605\" : \"\\u2606\");\n} }\nfunction NgbRating_ng_template_2_ng_template_3_Template(rf, ctx) { }\nfunction NgbRating_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 2);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"span\", 3);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function NgbRating_ng_template_2_Template_span_mouseenter_2_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r7); const index_r4 = restoredCtx.index; const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ctx_r6.enter(index_r4 + 1); })(\"click\", function NgbRating_ng_template_2_Template_span_click_2_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r7); const index_r4 = restoredCtx.index; const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.handleClick(index_r4 + 1); });\n ɵngcc0.ɵɵtemplate(3, NgbRating_ng_template_2_ng_template_3_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const index_r4 = ctx.index;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"(\", index_r4 < ctx_r2.nextRate ? \"*\" : \" \", \")\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"cursor\", ctx_r2.isInteractive() ? \"pointer\" : \"default\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.starTemplate || ctx_r2.starTemplateFromContent || _r0)(\"ngTemplateOutletContext\", ctx_r2.contexts[index_r4]);\n} }\nfunction NgbTimepicker_button_3_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_3_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ctx_r8.changeHour(ctx_r8.hourStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 14);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r0.isSmallSize)(\"btn-lg\", ctx_r0.isLargeSize)(\"disabled\", ctx_r0.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r0.disabled);\n} }\nfunction NgbTimepicker_button_5_Template(rf, ctx) { if (rf & 1) {\n const _r11 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_5_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r11); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ctx_r10.changeHour(-ctx_r10.hourStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 16);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r1.isSmallSize)(\"btn-lg\", ctx_r1.isLargeSize)(\"disabled\", ctx_r1.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r1.disabled);\n} }\nfunction NgbTimepicker_button_9_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_9_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ctx_r12.changeMinute(ctx_r12.minuteStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 17);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r2.isSmallSize)(\"btn-lg\", ctx_r2.isLargeSize)(\"disabled\", ctx_r2.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r2.disabled);\n} }\nfunction NgbTimepicker_button_11_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_button_11_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ctx_r14.changeMinute(-ctx_r14.minuteStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 18);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r3.isSmallSize)(\"btn-lg\", ctx_r3.isLargeSize)(\"disabled\", ctx_r3.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r3.disabled);\n} }\nfunction NgbTimepicker_div_12_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 5);\n ɵngcc0.ɵɵtext(1, \":\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgbTimepicker_div_13_button_1_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_13_button_1_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r18 = ɵngcc0.ɵɵnextContext(2); return ctx_r18.changeSecond(ctx_r18.secondStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 12);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 21);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r16 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r16.isSmallSize)(\"btn-lg\", ctx_r16.isLargeSize)(\"disabled\", ctx_r16.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r16.disabled);\n} }\nfunction NgbTimepicker_div_13_button_3_Template(rf, ctx) { if (rf & 1) {\n const _r21 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 11);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_13_button_3_Template_button_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r21); const ctx_r20 = ɵngcc0.ɵɵnextContext(2); return ctx_r20.changeSecond(-ctx_r20.secondStep); });\n ɵngcc0.ɵɵelement(1, \"span\", 15);\n ɵngcc0.ɵɵelementStart(2, \"span\", 13);\n ɵngcc0.ɵɵi18n(3, 22);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r17 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r17.isSmallSize)(\"btn-lg\", ctx_r17.isLargeSize)(\"disabled\", ctx_r17.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r17.disabled);\n} }\nfunction NgbTimepicker_div_13_Template(rf, ctx) { if (rf & 1) {\n const _r23 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 19);\n ɵngcc0.ɵɵtemplate(1, NgbTimepicker_div_13_button_1_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(2, \"input\", 20);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_div_13_Template_input_change_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r22 = ɵngcc0.ɵɵnextContext(); return ctx_r22.updateSecond($event.target.value); })(\"blur\", function NgbTimepicker_div_13_Template_input_blur_2_listener() { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r24 = ɵngcc0.ɵɵnextContext(); return ctx_r24.handleBlur(); })(\"input\", function NgbTimepicker_div_13_Template_input_input_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r25 = ɵngcc0.ɵɵnextContext(); return ctx_r25.formatInput($event.target); })(\"keydown.ArrowUp\", function NgbTimepicker_div_13_Template_input_keydown_ArrowUp_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r26 = ɵngcc0.ɵɵnextContext(); ctx_r26.changeSecond(ctx_r26.secondStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_div_13_Template_input_keydown_ArrowDown_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r23); const ctx_r27 = ɵngcc0.ɵɵnextContext(); ctx_r27.changeSecond(-ctx_r27.secondStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_div_13_button_3_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx_r5.isSmallSize)(\"form-control-lg\", ctx_r5.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx_r5.formatMinSec(ctx_r5.model == null ? null : ctx_r5.model.second))(\"readOnly\", ctx_r5.readonlyInputs)(\"disabled\", ctx_r5.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.spinners);\n} }\nfunction NgbTimepicker_div_14_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 5);\n} }\nfunction NgbTimepicker_div_15_ng_container_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵi18n(1, 27);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r28 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵi18nExp(ctx_r28.i18n.getAfternoonPeriod());\n ɵngcc0.ɵɵi18nApply(1);\n} }\nfunction NgbTimepicker_div_15_ng_template_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵi18n(0, 28);\n} if (rf & 2) {\n const ctx_r30 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵi18nExp(ctx_r30.i18n.getMorningPeriod());\n ɵngcc0.ɵɵi18nApply(0);\n} }\nfunction NgbTimepicker_div_15_Template(rf, ctx) { if (rf & 1) {\n const _r32 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 23)(1, \"button\", 24);\n ɵngcc0.ɵɵlistener(\"click\", function NgbTimepicker_div_15_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r32); const ctx_r31 = ɵngcc0.ɵɵnextContext(); return ctx_r31.toggleMeridian(); });\n ɵngcc0.ɵɵtemplate(2, NgbTimepicker_div_15_ng_container_2_Template, 2, 1, \"ng-container\", 25);\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_div_15_ng_template_3_Template, 1, 1, \"ng-template\", null, 26, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const _r29 = ɵngcc0.ɵɵreference(4);\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"btn-sm\", ctx_r7.isSmallSize)(\"btn-lg\", ctx_r7.isLargeSize)(\"disabled\", ctx_r7.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r7.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r7.model && ctx_r7.model.hour >= 12)(\"ngIfElse\", _r29);\n} }\nfunction NgbToast_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"strong\", 3);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r1.header);\n} }\nfunction NgbToast_ng_template_2_ng_template_1_Template(rf, ctx) { }\nfunction NgbToast_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵtemplate(1, NgbToast_ng_template_2_ng_template_1_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementStart(2, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function NgbToast_ng_template_2_Template_button_click_2_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ctx_r4.hide(); });\n ɵngcc0.ɵɵelementStart(3, \"span\", 7);\n ɵngcc0.ɵɵtext(4, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd()()();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.contentHeaderTpl || _r0);\n} }\nfunction NgbHighlight_ng_template_0_span_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\");\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const part_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassMap(ctx_r3.highlightClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(part_r1);\n} }\nfunction NgbHighlight_ng_template_0_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n} if (rf & 2) {\n const part_r1 = ɵngcc0.ɵɵnextContext().$implicit;\n ɵngcc0.ɵɵtextInterpolate(part_r1);\n} }\nfunction NgbHighlight_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbHighlight_ng_template_0_span_0_Template, 2, 3, \"span\", 1);\n ɵngcc0.ɵɵtemplate(1, NgbHighlight_ng_template_0_ng_template_1_Template, 1, 1, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n} if (rf & 2) {\n const isOdd_r2 = ctx.odd;\n const _r4 = ɵngcc0.ɵɵreference(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", isOdd_r2)(\"ngIfElse\", _r4);\n} }\nfunction NgbTypeaheadWindow_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"ngb-highlight\", 2);\n} if (rf & 2) {\n const result_r3 = ctx.result;\n const term_r4 = ctx.term;\n const formatter_r5 = ctx.formatter;\n ɵngcc0.ɵɵproperty(\"result\", formatter_r5(result_r3))(\"term\", term_r4);\n} }\nfunction NgbTypeaheadWindow_ng_template_2_ng_template_1_Template(rf, ctx) { }\nconst _c87 = function (a0, a1, a2) { return { result: a0, term: a1, formatter: a2 }; };\nfunction NgbTypeaheadWindow_ng_template_2_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"button\", 3);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function NgbTypeaheadWindow_ng_template_2_Template_button_mouseenter_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const idx_r7 = restoredCtx.index; const ctx_r9 = ɵngcc0.ɵɵnextContext(); return ctx_r9.markActive(idx_r7); })(\"click\", function NgbTypeaheadWindow_ng_template_2_Template_button_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const result_r6 = restoredCtx.$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.select(result_r6); });\n ɵngcc0.ɵɵtemplate(1, NgbTypeaheadWindow_ng_template_2_ng_template_1_Template, 0, 0, \"ng-template\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const result_r6 = ctx.$implicit;\n const idx_r7 = ctx.index;\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵclassProp(\"active\", idx_r7 === ctx_r2.activeIdx);\n ɵngcc0.ɵɵproperty(\"id\", ctx_r2.id + \"-\" + idx_r7);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.resultTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(5, _c87, result_r6, ctx_r2.term, ctx_r2.formatter));\n} }\nfunction toInteger(value) {\r\n return parseInt(`${value}`, 10);\r\n}\r\nfunction toString(value) {\r\n return (value !== undefined && value !== null) ? `${value}` : '';\r\n}\r\nfunction getValueInRange(value, max, min = 0) {\r\n return Math.max(Math.min(value, max), min);\r\n}\r\nfunction isString(value) {\r\n return typeof value === 'string';\r\n}\r\nfunction isNumber(value) {\r\n return !isNaN(toInteger(value));\r\n}\r\nfunction isInteger(value) {\r\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\r\n}\r\nfunction isDefined(value) {\r\n return value !== undefined && value !== null;\r\n}\r\nfunction padNumber(value) {\r\n if (isNumber(value)) {\r\n return `0${value}`.slice(-2);\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\nfunction regExpEscape(text) {\r\n return text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\r\n}\r\nfunction hasClassName(element, className) {\r\n return element && element.className && element.className.split &&\r\n element.className.split(/\\s+/).indexOf(className) >= 0;\r\n}\r\nif (typeof Element !== 'undefined' && !Element.prototype.closest) {\r\n // Polyfill for ie10+\r\n if (!Element.prototype.matches) {\r\n // IE uses the non-standard name: msMatchesSelector\r\n Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\r\n }\r\n Element.prototype.closest = function (s) {\r\n let el = this;\r\n if (!document.documentElement.contains(el)) {\r\n return null;\r\n }\r\n do {\r\n if (el.matches(s)) {\r\n return el;\r\n }\r\n el = el.parentElement || el.parentNode;\r\n } while (el !== null && el.nodeType === 1);\r\n return null;\r\n };\r\n}\r\nfunction closest(element, selector) {\r\n if (!selector) {\r\n return null;\r\n }\r\n /*\r\n * In certain browsers (e.g. Edge 44.18362.449.0) HTMLDocument does\r\n * not support `Element.prototype.closest`. To emulate the correct behaviour\r\n * we return null when the method is missing.\r\n *\r\n * Note that in evergreen browsers `closest(document.documentElement, 'html')`\r\n * will return the document element whilst in Edge null will be returned. This\r\n * compromise was deemed good enough.\r\n */\r\n if (typeof element.closest === 'undefined') {\r\n return null;\r\n }\r\n return element.closest(selector);\r\n}\r\n/**\r\n * Force a browser reflow\r\n * @param element element where to apply the reflow\r\n */\r\nfunction reflow(element) {\r\n return (element || document.body).getBoundingClientRect();\r\n}\r\n/**\r\n * Creates an observable where all callbacks are executed inside a given zone\r\n *\r\n * @param zone\r\n */\r\nfunction runInZone(zone) {\r\n return (source) => {\r\n return new Observable(observer => {\r\n const onNext = (value) => zone.run(() => observer.next(value));\r\n const onError = (e) => zone.run(() => observer.error(e));\r\n const onComplete = () => zone.run(() => observer.complete());\r\n return source.subscribe(onNext, onError, onComplete);\r\n });\r\n };\r\n}\r\nfunction removeAccents(str) {\r\n return str.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\r\n}\n\nconst environment = {\r\n animation: true,\r\n transitionTimerDelayMs: 5,\r\n};\n\n/**\r\n * Global ng-bootstrap config\r\n *\r\n * @since 8.0.0\r\n */\r\nclass NgbConfig {\r\n constructor() {\r\n this.animation = environment.animation;\r\n }\r\n}\nNgbConfig.ɵfac = function NgbConfig_Factory(t) { return new (t || NgbConfig)(); };\r\nNgbConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbConfig_Factory() { return new NgbConfig(); }, token: NgbConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\r\n * A configuration service for the [NgbAccordion](#/components/accordion/api#NgbAccordion) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize its properties\r\n * to provide default values for all accordions used in the application.\r\n */\r\nclass NgbAccordionConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.closeOthers = false;\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbAccordionConfig.ɵfac = function NgbAccordionConfig_Factory(t) { return new (t || NgbAccordionConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbAccordionConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbAccordionConfig_Factory() { return new NgbAccordionConfig(ɵɵinject(NgbConfig)); }, token: NgbAccordionConfig, providedIn: \"root\" });\r\nNgbAccordionConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordionConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nfunction getTransitionDurationMs(element) {\r\n const { transitionDelay, transitionDuration } = window.getComputedStyle(element);\r\n const transitionDelaySec = parseFloat(transitionDelay);\r\n const transitionDurationSec = parseFloat(transitionDuration);\r\n return (transitionDelaySec + transitionDurationSec) * 1000;\r\n}\n\nconst noopFn = () => { };\r\nconst ɵ0 = noopFn;\r\nconst { transitionTimerDelayMs } = environment;\r\nconst runningTransitions = new Map();\r\nconst ngbRunTransition = (zone, element, startFn, options) => {\r\n // Getting initial context from options\r\n let context = options.context || {};\r\n // Checking if there are already running transitions on the given element.\r\n const running = runningTransitions.get(element);\r\n if (running) {\r\n switch (options.runningTransition) {\r\n // If there is one running and we want for it to 'continue' to run, we have to cancel the new one.\r\n // We're not emitting any values, but simply completing the observable (EMPTY).\r\n case 'continue':\r\n return EMPTY;\r\n // If there is one running and we want for it to 'stop', we have to complete the running one.\r\n // We're simply completing the running one and not emitting any values and merging newly provided context\r\n // with the one coming from currently running transition.\r\n case 'stop':\r\n zone.run(() => running.transition$.complete());\r\n context = Object.assign(running.context, context);\r\n runningTransitions.delete(element);\r\n }\r\n }\r\n // Running the start function\r\n const endFn = startFn(element, options.animation, context) || noopFn;\r\n // If 'prefer-reduced-motion' is enabled, the 'transition' will be set to 'none'.\r\n // If animations are disabled, we have to emit a value and complete the observable\r\n // In this case we have to call the end function, but can finish immediately by emitting a value,\r\n // completing the observable and executing end functions synchronously.\r\n if (!options.animation || window.getComputedStyle(element).transitionProperty === 'none') {\r\n zone.run(() => endFn());\r\n return of(undefined).pipe(runInZone(zone));\r\n }\r\n // Starting a new transition\r\n const transition$ = new Subject();\r\n const finishTransition$ = new Subject();\r\n const stop$ = transition$.pipe(endWith(true));\r\n runningTransitions.set(element, {\r\n transition$,\r\n complete: () => {\r\n finishTransition$.next();\r\n finishTransition$.complete();\r\n },\r\n context\r\n });\r\n const transitionDurationMs = getTransitionDurationMs(element);\r\n // 1. We have to both listen for the 'transitionend' event and have a 'just-in-case' timer,\r\n // because 'transitionend' event might not be fired in some browsers, if the transitioning\r\n // element becomes invisible (ex. when scrolling, making browser tab inactive, etc.). The timer\r\n // guarantees, that we'll release the DOM element and complete 'ngbRunTransition'.\r\n // 2. We need to filter transition end events, because they might bubble from shorter transitions\r\n // on inner DOM elements. We're only interested in the transition on the 'element' itself.\r\n zone.runOutsideAngular(() => {\r\n const transitionEnd$ = fromEvent(element, 'transitionend').pipe(takeUntil(stop$), filter(({ target }) => target === element));\r\n const timer$ = timer(transitionDurationMs + transitionTimerDelayMs).pipe(takeUntil(stop$));\r\n race(timer$, transitionEnd$, finishTransition$).pipe(takeUntil(stop$)).subscribe(() => {\r\n runningTransitions.delete(element);\r\n zone.run(() => {\r\n endFn();\r\n transition$.next();\r\n transition$.complete();\r\n });\r\n });\r\n });\r\n return transition$.asObservable();\r\n};\r\nconst ngbCompleteTransition = (element) => {\r\n var _a;\r\n (_a = runningTransitions.get(element)) === null || _a === void 0 ? void 0 : _a.complete();\r\n};\n\nfunction measureCollapsingElementHeightPx(element) {\r\n // SSR fix for without injecting the PlatformId\r\n if (typeof navigator === 'undefined') {\r\n return '0px';\r\n }\r\n const { classList } = element;\r\n const hasShownClass = classList.contains('show');\r\n if (!hasShownClass) {\r\n classList.add('show');\r\n }\r\n element.style.height = '';\r\n const height = element.getBoundingClientRect().height + 'px';\r\n if (!hasShownClass) {\r\n classList.remove('show');\r\n }\r\n return height;\r\n}\r\nconst ngbCollapsingTransition = (element, animation, context) => {\r\n let { direction, maxHeight } = context;\r\n const { classList } = element;\r\n function setInitialClasses() {\r\n classList.add('collapse');\r\n if (direction === 'show') {\r\n classList.add('show');\r\n }\r\n else {\r\n classList.remove('show');\r\n }\r\n }\r\n // without animations we just need to set initial classes\r\n if (!animation) {\r\n setInitialClasses();\r\n return;\r\n }\r\n // No maxHeight -> running the transition for the first time\r\n if (!maxHeight) {\r\n maxHeight = measureCollapsingElementHeightPx(element);\r\n context.maxHeight = maxHeight;\r\n // Fix the height before starting the animation\r\n element.style.height = direction !== 'show' ? maxHeight : '0px';\r\n classList.remove('collapse');\r\n classList.remove('collapsing');\r\n classList.remove('show');\r\n reflow(element);\r\n // Start the animation\r\n classList.add('collapsing');\r\n }\r\n // Start or revert the animation\r\n element.style.height = direction === 'show' ? maxHeight : '0px';\r\n return () => {\r\n setInitialClasses();\r\n classList.remove('collapsing');\r\n element.style.height = '';\r\n };\r\n};\n\nlet nextId = 0;\r\n/**\r\n * A directive that wraps an accordion panel header with any HTML markup and a toggling button\r\n * marked with [`NgbPanelToggle`](#/components/accordion/api#NgbPanelToggle).\r\n * See the [header customization demo](#/components/accordion/examples#header) for more details.\r\n *\r\n * You can also use [`NgbPanelTitle`](#/components/accordion/api#NgbPanelTitle) to customize only the panel title.\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPanelHeader {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPanelHeader.ɵfac = function NgbPanelHeader_Factory(t) { return new (t || NgbPanelHeader)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelHeader.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelHeader, selectors: [[\"ng-template\", \"ngbPanelHeader\", \"\"]] });\r\nNgbPanelHeader.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelHeader, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelHeader]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive that wraps only the panel title with HTML markup inside.\r\n *\r\n * You can also use [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader) to customize the full panel header.\r\n */\r\nclass NgbPanelTitle {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPanelTitle.ɵfac = function NgbPanelTitle_Factory(t) { return new (t || NgbPanelTitle)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelTitle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelTitle, selectors: [[\"ng-template\", \"ngbPanelTitle\", \"\"]] });\r\nNgbPanelTitle.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelTitle, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelTitle]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive that wraps the accordion panel content.\r\n */\r\nclass NgbPanelContent {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPanelContent.ɵfac = function NgbPanelContent_Factory(t) { return new (t || NgbPanelContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPanelContent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelContent, selectors: [[\"ng-template\", \"ngbPanelContent\", \"\"]] });\r\nNgbPanelContent.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPanelContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive that wraps an individual accordion panel with title and collapsible content.\r\n */\r\nclass NgbPanel {\r\n constructor() {\r\n /**\r\n * If `true`, the panel is disabled an can't be toggled.\r\n */\r\n this.disabled = false;\r\n /**\r\n * An optional id for the panel that must be unique on the page.\r\n *\r\n * If not provided, it will be auto-generated in the `ngb-panel-xxx` format.\r\n */\r\n this.id = `ngb-panel-${nextId++}`;\r\n this.isOpen = false;\r\n /* A flag to specified that the transition panel classes have been initialized */\r\n this.initClassDone = false;\r\n /* A flag to specified if the panel is currently being animated, to ensure its presence in the dom */\r\n this.transitionRunning = false;\r\n /**\r\n * An event emitted when the panel is shown, after the transition. It has no payload.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event emitted when the panel is hidden, after the transition. It has no payload.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.hidden = new EventEmitter();\r\n }\r\n ngAfterContentChecked() {\r\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\r\n // only @ContentChildren allows us to specify the {descendants: false} option.\r\n // Without {descendants: false} we are hitting bugs described in:\r\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\r\n this.titleTpl = this.titleTpls.first;\r\n this.headerTpl = this.headerTpls.first;\r\n this.contentTpl = this.contentTpls.first;\r\n }\r\n}\nNgbPanel.ɵfac = function NgbPanel_Factory(t) { return new (t || NgbPanel)(); };\nNgbPanel.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanel, selectors: [[\"ngb-panel\"]], contentQueries: function NgbPanel_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelTitle, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelHeader, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanelContent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.titleTpls = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTpls = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTpls = _t);\n } }, inputs: { disabled: \"disabled\", id: \"id\", title: \"title\", type: \"type\", cardClass: \"cardClass\" }, outputs: { shown: \"shown\", hidden: \"hidden\" } });\r\nNgbPanel.propDecorators = {\r\n disabled: [{ type: Input }],\r\n id: [{ type: Input }],\r\n title: [{ type: Input }],\r\n type: [{ type: Input }],\r\n cardClass: [{ type: Input }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }],\r\n titleTpls: [{ type: ContentChildren, args: [NgbPanelTitle, { descendants: false },] }],\r\n headerTpls: [{ type: ContentChildren, args: [NgbPanelHeader, { descendants: false },] }],\r\n contentTpls: [{ type: ContentChildren, args: [NgbPanelContent, { descendants: false },] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanel, [{\n type: Directive,\n args: [{ selector: 'ngb-panel' }]\n }], function () { return []; }, { disabled: [{\n type: Input\n }], id: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], title: [{\n type: Input\n }], type: [{\n type: Input\n }], cardClass: [{\n type: Input\n }], titleTpls: [{\n type: ContentChildren,\n args: [NgbPanelTitle, { descendants: false }]\n }], headerTpls: [{\n type: ContentChildren,\n args: [NgbPanelHeader, { descendants: false }]\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbPanelContent, { descendants: false }]\n }] }); })();\r\n/**\r\n * Accordion is a collection of collapsible panels (bootstrap cards).\r\n *\r\n * It can ensure only one panel is opened at a time and allows to customize panel\r\n * headers.\r\n */\r\nclass NgbAccordion {\r\n constructor(config, _element, _ngZone, _changeDetector) {\r\n this._element = _element;\r\n this._ngZone = _ngZone;\r\n this._changeDetector = _changeDetector;\r\n /**\r\n * An array or comma separated strings of panel ids that should be opened **initially**.\r\n *\r\n * For subsequent changes use methods like `expand()`, `collapse()`, etc. and\r\n * the `(panelChange)` event.\r\n */\r\n this.activeIds = [];\r\n /**\r\n * If `true`, panel content will be detached from DOM and not simply hidden when the panel is collapsed.\r\n */\r\n this.destroyOnHide = true;\r\n /**\r\n * Event emitted right before the panel toggle happens.\r\n *\r\n * See [NgbPanelChangeEvent](#/components/accordion/api#NgbPanelChangeEvent) for payload details.\r\n */\r\n this.panelChange = new EventEmitter();\r\n /**\r\n * An event emitted when the expanding animation is finished on the panel. The payload is the panel id.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event emitted when the collapsing animation is finished on the panel, and before the panel element is removed.\r\n * The payload is the panel id.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.hidden = new EventEmitter();\r\n this.animation = config.animation;\r\n this.type = config.type;\r\n this.closeOtherPanels = config.closeOthers;\r\n }\r\n /**\r\n * Checks if a panel with a given id is expanded.\r\n */\r\n isExpanded(panelId) { return this.activeIds.indexOf(panelId) > -1; }\r\n /**\r\n * Expands a panel with a given id.\r\n *\r\n * Has no effect if the panel is already expanded or disabled.\r\n */\r\n expand(panelId) { this._changeOpenState(this._findPanelById(panelId), true); }\r\n /**\r\n * Expands all panels, if `[closeOthers]` is `false`.\r\n *\r\n * If `[closeOthers]` is `true`, it will expand the first panel, unless there is already a panel opened.\r\n */\r\n expandAll() {\r\n if (this.closeOtherPanels) {\r\n if (this.activeIds.length === 0 && this.panels.length) {\r\n this._changeOpenState(this.panels.first, true);\r\n }\r\n }\r\n else {\r\n this.panels.forEach(panel => this._changeOpenState(panel, true));\r\n }\r\n }\r\n /**\r\n * Collapses a panel with the given id.\r\n *\r\n * Has no effect if the panel is already collapsed or disabled.\r\n */\r\n collapse(panelId) { this._changeOpenState(this._findPanelById(panelId), false); }\r\n /**\r\n * Collapses all opened panels.\r\n */\r\n collapseAll() {\r\n this.panels.forEach((panel) => { this._changeOpenState(panel, false); });\r\n }\r\n /**\r\n * Toggles a panel with the given id.\r\n *\r\n * Has no effect if the panel is disabled.\r\n */\r\n toggle(panelId) {\r\n const panel = this._findPanelById(panelId);\r\n if (panel) {\r\n this._changeOpenState(panel, !panel.isOpen);\r\n }\r\n }\r\n ngAfterContentChecked() {\r\n // active id updates\r\n if (isString(this.activeIds)) {\r\n this.activeIds = this.activeIds.split(/\\s*,\\s*/);\r\n }\r\n // update panels open states\r\n this.panels.forEach(panel => { panel.isOpen = !panel.disabled && this.activeIds.indexOf(panel.id) > -1; });\r\n // closeOthers updates\r\n if (this.activeIds.length > 1 && this.closeOtherPanels) {\r\n this._closeOthers(this.activeIds[0], false);\r\n this._updateActiveIds();\r\n }\r\n // Setup the initial classes here\r\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\r\n this.panels.forEach(panel => {\r\n const panelElement = this._getPanelElement(panel.id);\r\n if (panelElement) {\r\n if (!panel.initClassDone) {\r\n panel.initClassDone = true;\r\n ngbRunTransition(this._ngZone, panelElement, ngbCollapsingTransition, {\r\n animation: false,\r\n runningTransition: 'continue',\r\n context: { direction: panel.isOpen ? 'show' : 'hide' }\r\n });\r\n }\r\n }\r\n else {\r\n // Classes must be initialized next time it will be in the dom\r\n panel.initClassDone = false;\r\n }\r\n });\r\n });\r\n }\r\n _changeOpenState(panel, nextState) {\r\n if (panel != null && !panel.disabled && panel.isOpen !== nextState) {\r\n let defaultPrevented = false;\r\n this.panelChange.emit({ panelId: panel.id, nextState: nextState, preventDefault: () => { defaultPrevented = true; } });\r\n if (!defaultPrevented) {\r\n panel.isOpen = nextState;\r\n panel.transitionRunning = true;\r\n if (nextState && this.closeOtherPanels) {\r\n this._closeOthers(panel.id);\r\n }\r\n this._updateActiveIds();\r\n this._runTransitions(this.animation);\r\n }\r\n }\r\n }\r\n _closeOthers(panelId, enableTransition = true) {\r\n this.panels.forEach(panel => {\r\n if (panel.id !== panelId && panel.isOpen) {\r\n panel.isOpen = false;\r\n panel.transitionRunning = enableTransition;\r\n }\r\n });\r\n }\r\n _findPanelById(panelId) { return this.panels.find(p => p.id === panelId) || null; }\r\n _updateActiveIds() {\r\n this.activeIds = this.panels.filter(panel => panel.isOpen && !panel.disabled).map(panel => panel.id);\r\n }\r\n _runTransitions(animation) {\r\n // detectChanges is performed to ensure that all panels are in the dom (via transitionRunning = true)\r\n // before starting the animation\r\n this._changeDetector.detectChanges();\r\n this.panels.forEach(panel => {\r\n // When panel.transitionRunning is true, the transition needs to be started OR reversed,\r\n // The direction (show or hide) is choosen by each panel.isOpen state\r\n if (panel.transitionRunning) {\r\n const panelElement = this._getPanelElement(panel.id);\r\n ngbRunTransition(this._ngZone, panelElement, ngbCollapsingTransition, {\r\n animation,\r\n runningTransition: 'stop',\r\n context: { direction: panel.isOpen ? 'show' : 'hide' }\r\n }).subscribe(() => {\r\n panel.transitionRunning = false;\r\n const { id } = panel;\r\n if (panel.isOpen) {\r\n panel.shown.emit();\r\n this.shown.emit(id);\r\n }\r\n else {\r\n panel.hidden.emit();\r\n this.hidden.emit(id);\r\n }\r\n });\r\n }\r\n });\r\n }\r\n _getPanelElement(panelId) {\r\n return this._element.nativeElement.querySelector('#' + panelId);\r\n }\r\n}\nNgbAccordion.ɵfac = function NgbAccordion_Factory(t) { return new (t || NgbAccordion)(ɵngcc0.ɵɵdirectiveInject(NgbAccordionConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbAccordion.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbAccordion, selectors: [[\"ngb-accordion\"]], contentQueries: function NgbAccordion_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPanel, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.panels = _t);\n } }, hostAttrs: [\"role\", \"tablist\", 1, \"accordion\"], hostVars: 1, hostBindings: function NgbAccordion_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-multiselectable\", !ctx.closeOtherPanels);\n } }, inputs: { activeIds: \"activeIds\", destroyOnHide: \"destroyOnHide\", animation: \"animation\", type: \"type\", closeOtherPanels: [\"closeOthers\", \"closeOtherPanels\"] }, outputs: { panelChange: \"panelChange\", shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbAccordion\"], decls: 3, vars: 1, consts: [[\"ngbPanelHeader\", \"\"], [\"t\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"btn\", \"btn-link\", 3, \"ngbPanelToggle\"], [3, \"ngTemplateOutlet\"], [\"role\", \"tab\", 3, \"id\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"role\", \"tabpanel\", 3, \"id\", 4, \"ngIf\"], [\"role\", \"tabpanel\", 3, \"id\"], [1, \"card-body\"]], template: function NgbAccordion_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbAccordion_ng_template_0_Template, 3, 3, \"ng-template\", 0, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbAccordion_ng_template_2_Template, 4, 11, \"ng-template\", 2);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.panels);\n } }, directives: function () { return [NgbPanelHeader, NgbPanelToggle, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgForOf, ɵngcc1.NgIf]; }, encapsulation: 2 });\r\nNgbAccordion.ctorParameters = () => [\r\n { type: NgbAccordionConfig },\r\n { type: ElementRef },\r\n { type: NgZone },\r\n { type: ChangeDetectorRef }\r\n];\r\nNgbAccordion.propDecorators = {\r\n panels: [{ type: ContentChildren, args: [NgbPanel,] }],\r\n animation: [{ type: Input }],\r\n activeIds: [{ type: Input }],\r\n closeOtherPanels: [{ type: Input, args: ['closeOthers',] }],\r\n destroyOnHide: [{ type: Input }],\r\n type: [{ type: Input }],\r\n panelChange: [{ type: Output }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordion, [{\n type: Component,\n args: [{\n selector: 'ngb-accordion',\n exportAs: 'ngbAccordion',\n encapsulation: ViewEncapsulation.None,\n host: { 'class': 'accordion', 'role': 'tablist', '[attr.aria-multiselectable]': '!closeOtherPanels' },\n template: `\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n `\n }]\n }], function () { return [{ type: NgbAccordionConfig }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }]; }, { activeIds: [{\n type: Input\n }], destroyOnHide: [{\n type: Input\n }], panelChange: [{\n type: Output\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], animation: [{\n type: Input\n }], type: [{\n type: Input\n }], closeOtherPanels: [{\n type: Input,\n args: ['closeOthers']\n }], panels: [{\n type: ContentChildren,\n args: [NgbPanel]\n }] }); })();\r\n/**\r\n * A directive to put on a button that toggles panel opening and closing.\r\n *\r\n * To be used inside the [`NgbPanelHeader`](#/components/accordion/api#NgbPanelHeader)\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPanelToggle {\r\n constructor(accordion, panel) {\r\n this.accordion = accordion;\r\n this.panel = panel;\r\n }\r\n set ngbPanelToggle(panel) {\r\n if (panel) {\r\n this.panel = panel;\r\n }\r\n }\r\n}\nNgbPanelToggle.ɵfac = function NgbPanelToggle_Factory(t) { return new (t || NgbPanelToggle)(ɵngcc0.ɵɵdirectiveInject(NgbAccordion), ɵngcc0.ɵɵdirectiveInject(NgbPanel, 9)); };\nNgbPanelToggle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPanelToggle, selectors: [[\"button\", \"ngbPanelToggle\", \"\"]], hostAttrs: [\"type\", \"button\"], hostVars: 5, hostBindings: function NgbPanelToggle_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgbPanelToggle_click_HostBindingHandler() { return ctx.accordion.toggle(ctx.panel.id); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"disabled\", ctx.panel.disabled);\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.panel.isOpen)(\"aria-controls\", ctx.panel.id);\n ɵngcc0.ɵɵclassProp(\"collapsed\", !ctx.panel.isOpen);\n } }, inputs: { ngbPanelToggle: \"ngbPanelToggle\" } });\r\nNgbPanelToggle.ctorParameters = () => [\r\n { type: NgbAccordion },\r\n { type: NgbPanel, decorators: [{ type: Optional }, { type: Host }] }\r\n];\r\nNgbPanelToggle.propDecorators = {\r\n ngbPanelToggle: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPanelToggle, [{\n type: Directive,\n args: [{\n selector: 'button[ngbPanelToggle]',\n host: {\n 'type': 'button',\n '[disabled]': 'panel.disabled',\n '[class.collapsed]': '!panel.isOpen',\n '[attr.aria-expanded]': 'panel.isOpen',\n '[attr.aria-controls]': 'panel.id',\n '(click)': 'accordion.toggle(panel.id)'\n }\n }]\n }], function () { return [{ type: NgbAccordion }, { type: NgbPanel, decorators: [{\n type: Optional\n }, {\n type: Host\n }] }]; }, { ngbPanelToggle: [{\n type: Input\n }] }); })();\n\nconst NGB_ACCORDION_DIRECTIVES = [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle];\r\nclass NgbAccordionModule {\r\n}\nNgbAccordionModule.ɵfac = function NgbAccordionModule_Factory(t) { return new (t || NgbAccordionModule)(); };\nNgbAccordionModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbAccordionModule });\nNgbAccordionModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAccordionModule, [{\n type: NgModule,\n args: [{ declarations: NGB_ACCORDION_DIRECTIVES, exports: NGB_ACCORDION_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbAccordionModule, { declarations: function () { return [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbAccordion, NgbPanel, NgbPanelTitle, NgbPanelContent, NgbPanelHeader, NgbPanelToggle]; } }); })();\n\n/**\r\n * A configuration service for the [NgbAlert](#/components/alert/api#NgbAlert) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize its properties\r\n * to provide default values for all alerts used in the application.\r\n */\r\nclass NgbAlertConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.dismissible = true;\r\n this.type = 'warning';\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbAlertConfig.ɵfac = function NgbAlertConfig_Factory(t) { return new (t || NgbAlertConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbAlertConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbAlertConfig_Factory() { return new NgbAlertConfig(ɵɵinject(NgbConfig)); }, token: NgbAlertConfig, providedIn: \"root\" });\r\nNgbAlertConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlertConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nconst ngbAlertFadingTransition = ({ classList }) => {\r\n classList.remove('show');\r\n};\n\n/**\r\n * Alert is a component to provide contextual feedback messages for user.\r\n *\r\n * It supports several alert types and can be dismissed.\r\n */\r\nclass NgbAlert {\r\n constructor(config, _renderer, _element, _zone) {\r\n this._renderer = _renderer;\r\n this._element = _element;\r\n this._zone = _zone;\r\n /**\r\n * An event emitted when the close button is clicked. It has no payload and only relevant for dismissible alerts.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.closed = new EventEmitter();\r\n this.dismissible = config.dismissible;\r\n this.type = config.type;\r\n this.animation = config.animation;\r\n }\r\n /**\r\n * Triggers alert closing programmatically (same as clicking on the close button (×)).\r\n *\r\n * The returned observable will emit and be completed once the closing transition has finished.\r\n * If the animations are turned off this happens synchronously.\r\n *\r\n * Alternatively you could listen or subscribe to the `(closed)` output\r\n *\r\n * @since 8.0.0\r\n */\r\n close() {\r\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbAlertFadingTransition, { animation: this.animation, runningTransition: 'continue' });\r\n transition.subscribe(() => this.closed.emit());\r\n return transition;\r\n }\r\n ngOnChanges(changes) {\r\n const typeChange = changes['type'];\r\n if (typeChange && !typeChange.firstChange) {\r\n this._renderer.removeClass(this._element.nativeElement, `alert-${typeChange.previousValue}`);\r\n this._renderer.addClass(this._element.nativeElement, `alert-${typeChange.currentValue}`);\r\n }\r\n }\r\n ngOnInit() { this._renderer.addClass(this._element.nativeElement, `alert-${this.type}`); }\r\n}\nNgbAlert.ɵfac = function NgbAlert_Factory(t) { return new (t || NgbAlert)(ɵngcc0.ɵɵdirectiveInject(NgbAlertConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbAlert.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbAlert, selectors: [[\"ngb-alert\"]], hostAttrs: [\"role\", \"alert\", 1, \"alert\", \"show\"], hostVars: 4, hostBindings: function NgbAlert_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation)(\"alert-dismissible\", ctx.dismissible);\n } }, inputs: { dismissible: \"dismissible\", type: \"type\", animation: \"animation\" }, outputs: { closed: \"closed\" }, exportAs: [\"ngbAlert\"], features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c3, decls: 2, vars: 1, consts: function () { let i18n_1; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_alert_close$$FESM2015_NG_BOOTSTRAP_JS_2 = goog.getMsg(\"Close\");\n i18n_1 = MSG_EXTERNAL_ngb_alert_close$$FESM2015_NG_BOOTSTRAP_JS_2;\n }\n else {\n i18n_1 = $localize `:@@ngb.alert.close␟f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8␟7819314041543176992:Close`;\n } return [[\"type\", \"button\", \"class\", \"close\", \"aria-label\", i18n_1, 3, \"click\", 4, \"ngIf\"], [\"type\", \"button\", \"aria-label\", i18n_1, 1, \"close\", 3, \"click\"], [\"aria-hidden\", \"true\"]]; }, template: function NgbAlert_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n ɵngcc0.ɵɵtemplate(1, NgbAlert_button_1_Template, 3, 0, \"button\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.dismissible);\n } }, directives: [ɵngcc1.NgIf], styles: [\"ngb-alert{display:block}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbAlert.ctorParameters = () => [\r\n { type: NgbAlertConfig },\r\n { type: Renderer2 },\r\n { type: ElementRef },\r\n { type: NgZone }\r\n];\r\nNgbAlert.propDecorators = {\r\n animation: [{ type: Input }],\r\n dismissible: [{ type: Input }],\r\n type: [{ type: Input }],\r\n closed: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlert, [{\n type: Component,\n args: [{\n selector: 'ngb-alert',\n exportAs: 'ngbAlert',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { 'role': 'alert', 'class': 'alert show', '[class.fade]': 'animation', '[class.alert-dismissible]': 'dismissible' },\n template: `\r\n \r\n \r\n `,\n styles: [\"ngb-alert{display:block}\"]\n }]\n }], function () { return [{ type: NgbAlertConfig }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { closed: [{\n type: Output\n }], dismissible: [{\n type: Input\n }], type: [{\n type: Input\n }], animation: [{\n type: Input\n }] }); })();\n\nclass NgbAlertModule {\r\n}\nNgbAlertModule.ɵfac = function NgbAlertModule_Factory(t) { return new (t || NgbAlertModule)(); };\nNgbAlertModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbAlertModule });\nNgbAlertModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbAlertModule, [{\n type: NgModule,\n args: [{ declarations: [NgbAlert], exports: [NgbAlert], imports: [CommonModule], entryComponents: [NgbAlert] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbAlertModule, { declarations: function () { return [NgbAlert]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbAlert]; } }); })();\n\nclass NgbButtonLabel {\r\n}\nNgbButtonLabel.ɵfac = function NgbButtonLabel_Factory(t) { return new (t || NgbButtonLabel)(); };\nNgbButtonLabel.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbButtonLabel, selectors: [[\"\", \"ngbButtonLabel\", \"\"]], hostVars: 8, hostBindings: function NgbButtonLabel_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"btn\", true)(\"active\", ctx.active)(\"disabled\", ctx.disabled)(\"focus\", ctx.focused);\n } } });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbButtonLabel, [{\n type: Directive,\n args: [{\n selector: '[ngbButtonLabel]',\n host: { '[class.btn]': 'true', '[class.active]': 'active', '[class.disabled]': 'disabled', '[class.focus]': 'focused' }\n }]\n }], null, null); })();\n\n/**\r\n * Allows to easily create Bootstrap-style checkbox buttons.\r\n *\r\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\r\n * either in a reactive or template-driven way.\r\n */\r\nclass NgbCheckBox {\r\n constructor(_label, _cd) {\r\n this._label = _label;\r\n this._cd = _cd;\r\n /**\r\n * If `true`, the checkbox button will be disabled\r\n */\r\n this.disabled = false;\r\n /**\r\n * The form control value when the checkbox is checked.\r\n */\r\n this.valueChecked = true;\r\n /**\r\n * The form control value when the checkbox is unchecked.\r\n */\r\n this.valueUnChecked = false;\r\n this.onChange = (_) => { };\r\n this.onTouched = () => { };\r\n }\r\n set focused(isFocused) {\r\n this._label.focused = isFocused;\r\n if (!isFocused) {\r\n this.onTouched();\r\n }\r\n }\r\n onInputChange($event) {\r\n const modelToPropagate = $event.target.checked ? this.valueChecked : this.valueUnChecked;\r\n this.onChange(modelToPropagate);\r\n this.onTouched();\r\n this.writeValue(modelToPropagate);\r\n }\r\n registerOnChange(fn) { this.onChange = fn; }\r\n registerOnTouched(fn) { this.onTouched = fn; }\r\n setDisabledState(isDisabled) {\r\n this.disabled = isDisabled;\r\n this._label.disabled = isDisabled;\r\n }\r\n writeValue(value) {\r\n this.checked = value === this.valueChecked;\r\n this._label.active = this.checked;\r\n // label won't be updated, if it is inside the OnPush component when [ngModel] changes\r\n this._cd.markForCheck();\r\n }\r\n}\nNgbCheckBox.ɵfac = function NgbCheckBox_Factory(t) { return new (t || NgbCheckBox)(ɵngcc0.ɵɵdirectiveInject(NgbButtonLabel), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbCheckBox.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbCheckBox, selectors: [[\"\", \"ngbButton\", \"\", \"type\", \"checkbox\"]], hostVars: 2, hostBindings: function NgbCheckBox_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function NgbCheckBox_change_HostBindingHandler($event) { return ctx.onInputChange($event); })(\"focus\", function NgbCheckBox_focus_HostBindingHandler() { return ctx.focused = true; })(\"blur\", function NgbCheckBox_blur_HostBindingHandler() { return ctx.focused = false; });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"checked\", ctx.checked)(\"disabled\", ctx.disabled);\n } }, inputs: { disabled: \"disabled\", valueChecked: \"valueChecked\", valueUnChecked: \"valueUnChecked\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbCheckBox), multi: true }])] });\r\nNgbCheckBox.ctorParameters = () => [\r\n { type: NgbButtonLabel },\r\n { type: ChangeDetectorRef }\r\n];\r\nNgbCheckBox.propDecorators = {\r\n disabled: [{ type: Input }],\r\n valueChecked: [{ type: Input }],\r\n valueUnChecked: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCheckBox, [{\n type: Directive,\n args: [{\n selector: '[ngbButton][type=checkbox]',\n host: {\n '[checked]': 'checked',\n '[disabled]': 'disabled',\n '(change)': 'onInputChange($event)',\n '(focus)': 'focused = true',\n '(blur)': 'focused = false'\n },\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbCheckBox), multi: true }]\n }]\n }], function () { return [{ type: NgbButtonLabel }, { type: ɵngcc0.ChangeDetectorRef }]; }, { disabled: [{\n type: Input\n }], valueChecked: [{\n type: Input\n }], valueUnChecked: [{\n type: Input\n }] }); })();\n\nlet nextId$1 = 0;\r\n/**\r\n * Allows to easily create Bootstrap-style radio buttons.\r\n *\r\n * Integrates with forms, so the value of a checked button is bound to the underlying form control\r\n * either in a reactive or template-driven way.\r\n */\r\nclass NgbRadioGroup {\r\n constructor() {\r\n this._radios = new Set();\r\n this._value = null;\r\n /**\r\n * Name of the radio group applied to radio input elements.\r\n *\r\n * Will be applied to all radio input elements inside the group,\r\n * unless [`NgbRadio`](#/components/buttons/api#NgbRadio)'s specify names themselves.\r\n *\r\n * If not provided, will be generated in the `ngb-radio-xx` format.\r\n */\r\n this.name = `ngb-radio-${nextId$1++}`;\r\n this.onChange = (_) => { };\r\n this.onTouched = () => { };\r\n }\r\n get disabled() { return this._disabled; }\r\n set disabled(isDisabled) { this.setDisabledState(isDisabled); }\r\n onRadioChange(radio) {\r\n this.writeValue(radio.value);\r\n this.onChange(radio.value);\r\n }\r\n onRadioValueUpdate() { this._updateRadiosValue(); }\r\n register(radio) { this._radios.add(radio); }\r\n registerOnChange(fn) { this.onChange = fn; }\r\n registerOnTouched(fn) { this.onTouched = fn; }\r\n setDisabledState(isDisabled) {\r\n this._disabled = isDisabled;\r\n this._updateRadiosDisabled();\r\n }\r\n unregister(radio) { this._radios.delete(radio); }\r\n writeValue(value) {\r\n this._value = value;\r\n this._updateRadiosValue();\r\n }\r\n _updateRadiosValue() { this._radios.forEach((radio) => radio.updateValue(this._value)); }\r\n _updateRadiosDisabled() { this._radios.forEach((radio) => radio.updateDisabled()); }\r\n}\nNgbRadioGroup.ɵfac = function NgbRadioGroup_Factory(t) { return new (t || NgbRadioGroup)(); };\nNgbRadioGroup.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbRadioGroup, selectors: [[\"\", \"ngbRadioGroup\", \"\"]], hostAttrs: [\"role\", \"radiogroup\"], inputs: { name: \"name\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRadioGroup), multi: true }])] });\r\nNgbRadioGroup.propDecorators = {\r\n name: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRadioGroup, [{\n type: Directive,\n args: [{\n selector: '[ngbRadioGroup]',\n host: { 'role': 'radiogroup' },\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRadioGroup), multi: true }]\n }]\n }], function () { return []; }, { name: [{\n type: Input\n }] }); })();\r\n/**\r\n * A directive that marks an input of type \"radio\" as a part of the\r\n * [`NgbRadioGroup`](#/components/buttons/api#NgbRadioGroup).\r\n */\r\nclass NgbRadio {\r\n constructor(_group, _label, _renderer, _element, _cd) {\r\n this._group = _group;\r\n this._label = _label;\r\n this._renderer = _renderer;\r\n this._element = _element;\r\n this._cd = _cd;\r\n this._value = null;\r\n this._group.register(this);\r\n this.updateDisabled();\r\n }\r\n /**\r\n * The form control value when current radio button is checked.\r\n */\r\n set value(value) {\r\n this._value = value;\r\n const stringValue = value ? value.toString() : '';\r\n this._renderer.setProperty(this._element.nativeElement, 'value', stringValue);\r\n this._group.onRadioValueUpdate();\r\n }\r\n /**\r\n * If `true`, current radio button will be disabled.\r\n */\r\n set disabled(isDisabled) {\r\n this._disabled = isDisabled !== false;\r\n this.updateDisabled();\r\n }\r\n set focused(isFocused) {\r\n if (this._label) {\r\n this._label.focused = isFocused;\r\n }\r\n if (!isFocused) {\r\n this._group.onTouched();\r\n }\r\n }\r\n get checked() { return this._checked; }\r\n get disabled() { return this._group.disabled || this._disabled; }\r\n get value() { return this._value; }\r\n get nameAttr() { return this.name || this._group.name; }\r\n ngOnDestroy() { this._group.unregister(this); }\r\n onChange() { this._group.onRadioChange(this); }\r\n updateValue(value) {\r\n // label won't be updated, if it is inside the OnPush component when [ngModel] changes\r\n if (this.value !== value) {\r\n this._cd.markForCheck();\r\n }\r\n this._checked = this.value === value;\r\n this._label.active = this._checked;\r\n }\r\n updateDisabled() { this._label.disabled = this.disabled; }\r\n}\nNgbRadio.ɵfac = function NgbRadio_Factory(t) { return new (t || NgbRadio)(ɵngcc0.ɵɵdirectiveInject(NgbRadioGroup), ɵngcc0.ɵɵdirectiveInject(NgbButtonLabel), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbRadio.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbRadio, selectors: [[\"\", \"ngbButton\", \"\", \"type\", \"radio\"]], hostVars: 3, hostBindings: function NgbRadio_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function NgbRadio_change_HostBindingHandler() { return ctx.onChange(); })(\"focus\", function NgbRadio_focus_HostBindingHandler() { return ctx.focused = true; })(\"blur\", function NgbRadio_blur_HostBindingHandler() { return ctx.focused = false; });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"checked\", ctx.checked)(\"disabled\", ctx.disabled)(\"name\", ctx.nameAttr);\n } }, inputs: { value: \"value\", disabled: \"disabled\", name: \"name\" } });\r\nNgbRadio.ctorParameters = () => [\r\n { type: NgbRadioGroup },\r\n { type: NgbButtonLabel },\r\n { type: Renderer2 },\r\n { type: ElementRef },\r\n { type: ChangeDetectorRef }\r\n];\r\nNgbRadio.propDecorators = {\r\n name: [{ type: Input }],\r\n value: [{ type: Input, args: ['value',] }],\r\n disabled: [{ type: Input, args: ['disabled',] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRadio, [{\n type: Directive,\n args: [{\n selector: '[ngbButton][type=radio]',\n host: {\n '[checked]': 'checked',\n '[disabled]': 'disabled',\n '[name]': 'nameAttr',\n '(change)': 'onChange()',\n '(focus)': 'focused = true',\n '(blur)': 'focused = false'\n }\n }]\n }], function () { return [{ type: NgbRadioGroup }, { type: NgbButtonLabel }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }]; }, { value: [{\n type: Input,\n args: ['value']\n }], disabled: [{\n type: Input,\n args: ['disabled']\n }], name: [{\n type: Input\n }] }); })();\n\nconst NGB_BUTTON_DIRECTIVES = [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio];\r\nclass NgbButtonsModule {\r\n}\nNgbButtonsModule.ɵfac = function NgbButtonsModule_Factory(t) { return new (t || NgbButtonsModule)(); };\nNgbButtonsModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbButtonsModule });\nNgbButtonsModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbButtonsModule, [{\n type: NgModule,\n args: [{ declarations: NGB_BUTTON_DIRECTIVES, exports: NGB_BUTTON_DIRECTIVES }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbButtonsModule, { declarations: [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio], exports: [NgbButtonLabel, NgbCheckBox, NgbRadioGroup, NgbRadio] }); })();\n\n/**\r\n * A configuration service for the [NgbCarousel](#/components/carousel/api#NgbCarousel) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize its properties\r\n * to provide default values for all carousels used in the application.\r\n */\r\nclass NgbCarouselConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.interval = 5000;\r\n this.wrap = true;\r\n this.keyboard = true;\r\n this.pauseOnHover = true;\r\n this.pauseOnFocus = true;\r\n this.showNavigationArrows = true;\r\n this.showNavigationIndicators = true;\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbCarouselConfig.ɵfac = function NgbCarouselConfig_Factory(t) { return new (t || NgbCarouselConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbCarouselConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbCarouselConfig_Factory() { return new NgbCarouselConfig(ɵɵinject(NgbConfig)); }, token: NgbCarouselConfig, providedIn: \"root\" });\r\nNgbCarouselConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarouselConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\n/**\r\n * Defines the carousel slide transition direction.\r\n */\r\nvar NgbSlideEventDirection;\r\n(function (NgbSlideEventDirection) {\r\n NgbSlideEventDirection[\"LEFT\"] = \"left\";\r\n NgbSlideEventDirection[\"RIGHT\"] = \"right\";\r\n})(NgbSlideEventDirection || (NgbSlideEventDirection = {}));\r\nconst isBeingAnimated = ({ classList }) => {\r\n return classList.contains('carousel-item-left') || classList.contains('carousel-item-right');\r\n};\r\nconst ɵ0$1 = isBeingAnimated;\r\nconst removeDirectionClasses = (classList) => {\r\n classList.remove('carousel-item-left');\r\n classList.remove('carousel-item-right');\r\n};\r\nconst ɵ1 = removeDirectionClasses;\r\nconst removeClasses = (classList) => {\r\n removeDirectionClasses(classList);\r\n classList.remove('carousel-item-prev');\r\n classList.remove('carousel-item-next');\r\n};\r\nconst ɵ2 = removeClasses;\r\nconst ngbCarouselTransitionIn = (element, animation, { direction }) => {\r\n const { classList } = element;\r\n if (!animation) {\r\n removeDirectionClasses(classList);\r\n removeClasses(classList);\r\n classList.add('active');\r\n return;\r\n }\r\n if (isBeingAnimated(element)) {\r\n // Revert the transition\r\n removeDirectionClasses(classList);\r\n }\r\n else {\r\n // For the 'in' transition, a 'pre-class' is applied to the element to ensure its visibility\r\n classList.add('carousel-item-' + (direction === NgbSlideEventDirection.LEFT ? 'next' : 'prev'));\r\n reflow(element);\r\n classList.add('carousel-item-' + direction);\r\n }\r\n return () => {\r\n removeClasses(classList);\r\n classList.add('active');\r\n };\r\n};\r\nconst ngbCarouselTransitionOut = (element, animation, { direction }) => {\r\n const { classList } = element;\r\n if (!animation) {\r\n removeDirectionClasses(classList);\r\n removeClasses(classList);\r\n classList.remove('active');\r\n return;\r\n }\r\n // direction is left or right, depending on the way the slide goes out.\r\n if (isBeingAnimated(element)) {\r\n // Revert the transition\r\n removeDirectionClasses(classList);\r\n }\r\n else {\r\n classList.add('carousel-item-' + direction);\r\n }\r\n return () => {\r\n removeClasses(classList);\r\n classList.remove('active');\r\n };\r\n};\n\nlet nextId$2 = 0;\r\n/**\r\n * A directive that wraps the individual carousel slide.\r\n */\r\nclass NgbSlide {\r\n constructor(tplRef) {\r\n this.tplRef = tplRef;\r\n /**\r\n * Slide id that must be unique for the entire document.\r\n *\r\n * If not provided, will be generated in the `ngb-slide-xx` format.\r\n */\r\n this.id = `ngb-slide-${nextId$2++}`;\r\n /**\r\n * An event emitted when the slide transition is finished\r\n *\r\n * @since 8.0.0\r\n */\r\n this.slid = new EventEmitter();\r\n }\r\n}\nNgbSlide.ɵfac = function NgbSlide_Factory(t) { return new (t || NgbSlide)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbSlide.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbSlide, selectors: [[\"ng-template\", \"ngbSlide\", \"\"]], inputs: { id: \"id\" }, outputs: { slid: \"slid\" } });\r\nNgbSlide.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\r\nNgbSlide.propDecorators = {\r\n id: [{ type: Input }],\r\n slid: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbSlide, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbSlide]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, { id: [{\n type: Input\n }], slid: [{\n type: Output\n }] }); })();\r\n/**\r\n * Carousel is a component to easily create and control slideshows.\r\n *\r\n * Allows to set intervals, change the way user interacts with the slides and provides a programmatic API.\r\n */\r\nclass NgbCarousel {\r\n constructor(config, _platformId, _ngZone, _cd, _container) {\r\n this._platformId = _platformId;\r\n this._ngZone = _ngZone;\r\n this._cd = _cd;\r\n this._container = _container;\r\n this.NgbSlideEventSource = NgbSlideEventSource;\r\n this._destroy$ = new Subject();\r\n this._interval$ = new BehaviorSubject(0);\r\n this._mouseHover$ = new BehaviorSubject(false);\r\n this._focused$ = new BehaviorSubject(false);\r\n this._pauseOnHover$ = new BehaviorSubject(false);\r\n this._pauseOnFocus$ = new BehaviorSubject(false);\r\n this._pause$ = new BehaviorSubject(false);\r\n this._wrap$ = new BehaviorSubject(false);\r\n /**\r\n * An event emitted just before the slide transition starts.\r\n *\r\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\r\n */\r\n this.slide = new EventEmitter();\r\n /**\r\n * An event emitted right after the slide transition is completed.\r\n *\r\n * See [`NgbSlideEvent`](#/components/carousel/api#NgbSlideEvent) for payload details.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.slid = new EventEmitter();\r\n /*\r\n * Keep the ids of the panels currently transitionning\r\n * in order to allow only the transition revertion\r\n */\r\n this._transitionIds = null;\r\n this.animation = config.animation;\r\n this.interval = config.interval;\r\n this.wrap = config.wrap;\r\n this.keyboard = config.keyboard;\r\n this.pauseOnHover = config.pauseOnHover;\r\n this.pauseOnFocus = config.pauseOnFocus;\r\n this.showNavigationArrows = config.showNavigationArrows;\r\n this.showNavigationIndicators = config.showNavigationIndicators;\r\n }\r\n /**\r\n * Time in milliseconds before the next slide is shown.\r\n */\r\n set interval(value) {\r\n this._interval$.next(value);\r\n }\r\n get interval() { return this._interval$.value; }\r\n /**\r\n * If `true`, will 'wrap' the carousel by switching from the last slide back to the first.\r\n */\r\n set wrap(value) {\r\n this._wrap$.next(value);\r\n }\r\n get wrap() { return this._wrap$.value; }\r\n /**\r\n * If `true`, will pause slide switching when mouse cursor hovers the slide.\r\n *\r\n * @since 2.2.0\r\n */\r\n set pauseOnHover(value) {\r\n this._pauseOnHover$.next(value);\r\n }\r\n get pauseOnHover() { return this._pauseOnHover$.value; }\r\n /**\r\n * If `true`, will pause slide switching when the focus is inside the carousel.\r\n */\r\n set pauseOnFocus(value) {\r\n this._pauseOnFocus$.next(value);\r\n }\r\n get pauseOnFocus() { return this._pauseOnFocus$.value; }\r\n set mouseHover(value) { this._mouseHover$.next(value); }\r\n get mouseHover() { return this._mouseHover$.value; }\r\n set focused(value) { this._focused$.next(value); }\r\n get focused() { return this._focused$.value; }\r\n arrowLeft() {\r\n this.focus();\r\n this.prev(NgbSlideEventSource.ARROW_LEFT);\r\n }\r\n arrowRight() {\r\n this.focus();\r\n this.next(NgbSlideEventSource.ARROW_RIGHT);\r\n }\r\n ngAfterContentInit() {\r\n // setInterval() doesn't play well with SSR and protractor,\r\n // so we should run it in the browser and outside Angular\r\n if (isPlatformBrowser(this._platformId)) {\r\n this._ngZone.runOutsideAngular(() => {\r\n const hasNextSlide$ = combineLatest([\r\n this.slide.pipe(map(slideEvent => slideEvent.current), startWith(this.activeId)),\r\n this._wrap$, this.slides.changes.pipe(startWith(null))\r\n ])\r\n .pipe(map(([currentSlideId, wrap]) => {\r\n const slideArr = this.slides.toArray();\r\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\r\n return wrap ? slideArr.length > 1 : currentSlideIdx < slideArr.length - 1;\r\n }), distinctUntilChanged());\r\n combineLatest([\r\n this._pause$, this._pauseOnHover$, this._mouseHover$, this._pauseOnFocus$, this._focused$, this._interval$,\r\n hasNextSlide$\r\n ])\r\n .pipe(map(([pause, pauseOnHover, mouseHover, pauseOnFocus, focused, interval, hasNextSlide]) => ((pause || (pauseOnHover && mouseHover) || (pauseOnFocus && focused) || !hasNextSlide) ?\r\n 0 :\r\n interval)), distinctUntilChanged(), switchMap(interval => interval > 0 ? timer(interval, interval) : NEVER), takeUntil(this._destroy$))\r\n .subscribe(() => this._ngZone.run(() => this.next(NgbSlideEventSource.TIMER)));\r\n });\r\n }\r\n this.slides.changes.pipe(takeUntil(this._destroy$)).subscribe(() => {\r\n var _a;\r\n (_a = this._transitionIds) === null || _a === void 0 ? void 0 : _a.forEach(id => ngbCompleteTransition(this._getSlideElement(id)));\r\n this._transitionIds = null;\r\n this._cd.markForCheck();\r\n // The following code need to be done asynchronously, after the dom becomes stable,\r\n // otherwise all changes will be undone.\r\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\r\n for (const { id } of this.slides) {\r\n const element = this._getSlideElement(id);\r\n if (id === this.activeId) {\r\n element.classList.add('active');\r\n }\r\n else {\r\n element.classList.remove('active');\r\n }\r\n }\r\n });\r\n });\r\n }\r\n ngAfterContentChecked() {\r\n let activeSlide = this._getSlideById(this.activeId);\r\n this.activeId = activeSlide ? activeSlide.id : (this.slides.length ? this.slides.first.id : '');\r\n }\r\n ngAfterViewInit() {\r\n // Initialize the 'active' class (not managed by the template)\r\n if (this.activeId) {\r\n const element = this._getSlideElement(this.activeId);\r\n if (element) {\r\n element.classList.add('active');\r\n }\r\n }\r\n }\r\n ngOnDestroy() { this._destroy$.next(); }\r\n /**\r\n * Navigates to a slide with the specified identifier.\r\n */\r\n select(slideId, source) {\r\n this._cycleToSelected(slideId, this._getSlideEventDirection(this.activeId, slideId), source);\r\n }\r\n /**\r\n * Navigates to the previous slide.\r\n */\r\n prev(source) {\r\n this._cycleToSelected(this._getPrevSlide(this.activeId), NgbSlideEventDirection.RIGHT, source);\r\n }\r\n /**\r\n * Navigates to the next slide.\r\n */\r\n next(source) {\r\n this._cycleToSelected(this._getNextSlide(this.activeId), NgbSlideEventDirection.LEFT, source);\r\n }\r\n /**\r\n * Pauses cycling through the slides.\r\n */\r\n pause() { this._pause$.next(true); }\r\n /**\r\n * Restarts cycling through the slides from left to right.\r\n */\r\n cycle() { this._pause$.next(false); }\r\n /**\r\n * Set the focus on the carousel.\r\n */\r\n focus() { this._container.nativeElement.focus(); }\r\n _cycleToSelected(slideIdx, direction, source) {\r\n const transitionIds = this._transitionIds;\r\n if (transitionIds && (transitionIds[0] !== slideIdx || transitionIds[1] !== this.activeId)) {\r\n // Revert prevented\r\n return;\r\n }\r\n let selectedSlide = this._getSlideById(slideIdx);\r\n if (selectedSlide && selectedSlide.id !== this.activeId) {\r\n this._transitionIds = [this.activeId, slideIdx];\r\n this.slide.emit({ prev: this.activeId, current: selectedSlide.id, direction: direction, paused: this._pause$.value, source });\r\n const options = {\r\n animation: this.animation,\r\n runningTransition: 'stop',\r\n context: { direction },\r\n };\r\n const transitions = [];\r\n const activeSlide = this._getSlideById(this.activeId);\r\n if (activeSlide) {\r\n const activeSlideTransition = ngbRunTransition(this._ngZone, this._getSlideElement(activeSlide.id), ngbCarouselTransitionOut, options);\r\n activeSlideTransition.subscribe(() => { activeSlide.slid.emit({ isShown: false, direction, source }); });\r\n transitions.push(activeSlideTransition);\r\n }\r\n const previousId = this.activeId;\r\n this.activeId = selectedSlide.id;\r\n const nextSlide = this._getSlideById(this.activeId);\r\n const transition = ngbRunTransition(this._ngZone, this._getSlideElement(selectedSlide.id), ngbCarouselTransitionIn, options);\r\n transition.subscribe(() => { nextSlide === null || nextSlide === void 0 ? void 0 : nextSlide.slid.emit({ isShown: true, direction, source }); });\r\n transitions.push(transition);\r\n zip(...transitions).pipe(take(1)).subscribe(() => {\r\n this._transitionIds = null;\r\n this.slid.emit({ prev: previousId, current: selectedSlide.id, direction: direction, paused: this._pause$.value, source });\r\n });\r\n }\r\n // we get here after the interval fires or any external API call like next(), prev() or select()\r\n this._cd.markForCheck();\r\n }\r\n _getSlideEventDirection(currentActiveSlideId, nextActiveSlideId) {\r\n const currentActiveSlideIdx = this._getSlideIdxById(currentActiveSlideId);\r\n const nextActiveSlideIdx = this._getSlideIdxById(nextActiveSlideId);\r\n return currentActiveSlideIdx > nextActiveSlideIdx ? NgbSlideEventDirection.RIGHT : NgbSlideEventDirection.LEFT;\r\n }\r\n _getSlideById(slideId) {\r\n return this.slides.find(slide => slide.id === slideId) || null;\r\n }\r\n _getSlideIdxById(slideId) {\r\n const slide = this._getSlideById(slideId);\r\n return slide != null ? this.slides.toArray().indexOf(slide) : -1;\r\n }\r\n _getNextSlide(currentSlideId) {\r\n const slideArr = this.slides.toArray();\r\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\r\n const isLastSlide = currentSlideIdx === slideArr.length - 1;\r\n return isLastSlide ? (this.wrap ? slideArr[0].id : slideArr[slideArr.length - 1].id) :\r\n slideArr[currentSlideIdx + 1].id;\r\n }\r\n _getPrevSlide(currentSlideId) {\r\n const slideArr = this.slides.toArray();\r\n const currentSlideIdx = this._getSlideIdxById(currentSlideId);\r\n const isFirstSlide = currentSlideIdx === 0;\r\n return isFirstSlide ? (this.wrap ? slideArr[slideArr.length - 1].id : slideArr[0].id) :\r\n slideArr[currentSlideIdx - 1].id;\r\n }\r\n _getSlideElement(slideId) {\r\n return this._container.nativeElement.querySelector(`#slide-${slideId}`);\r\n }\r\n}\nNgbCarousel.ɵfac = function NgbCarousel_Factory(t) { return new (t || NgbCarousel)(ɵngcc0.ɵɵdirectiveInject(NgbCarouselConfig), ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbCarousel.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbCarousel, selectors: [[\"ngb-carousel\"]], contentQueries: function NgbCarousel_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbSlide, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.slides = _t);\n } }, hostAttrs: [\"tabIndex\", \"0\", 1, \"carousel\", \"slide\"], hostVars: 3, hostBindings: function NgbCarousel_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown.arrowLeft\", function NgbCarousel_keydown_arrowLeft_HostBindingHandler() { return ctx.keyboard && ctx.arrowLeft(); })(\"keydown.arrowRight\", function NgbCarousel_keydown_arrowRight_HostBindingHandler() { return ctx.keyboard && ctx.arrowRight(); })(\"mouseenter\", function NgbCarousel_mouseenter_HostBindingHandler() { return ctx.mouseHover = true; })(\"mouseleave\", function NgbCarousel_mouseleave_HostBindingHandler() { return ctx.mouseHover = false; })(\"focusin\", function NgbCarousel_focusin_HostBindingHandler() { return ctx.focused = true; })(\"focusout\", function NgbCarousel_focusout_HostBindingHandler() { return ctx.focused = false; });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-activedescendant\", \"slide-\" + ctx.activeId);\n ɵngcc0.ɵɵstyleProp(\"display\", \"block\");\n } }, inputs: { animation: \"animation\", interval: \"interval\", wrap: \"wrap\", keyboard: \"keyboard\", pauseOnHover: \"pauseOnHover\", pauseOnFocus: \"pauseOnFocus\", showNavigationArrows: \"showNavigationArrows\", showNavigationIndicators: \"showNavigationIndicators\", activeId: \"activeId\" }, outputs: { slide: \"slide\", slid: \"slid\" }, exportAs: [\"ngbCarousel\"], decls: 6, vars: 6, consts: function () { let i18n_4; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @desc Currently selected slide number read by screen reader\n */\n const MSG_EXTERNAL_ngb_carousel_slide_number$$FESM2015_NG_BOOTSTRAP_JS__5 = goog.getMsg(\" Slide {$interpolation} of {$interpolation_1} \", { \"interpolation\": \"\\uFFFD0\\uFFFD\", \"interpolation_1\": \"\\uFFFD1\\uFFFD\" });\n i18n_4 = MSG_EXTERNAL_ngb_carousel_slide_number$$FESM2015_NG_BOOTSTRAP_JS__5;\n }\n else {\n i18n_4 = $localize `:Currently selected slide number read by screen reader@@ngb.carousel.slide-number␟a65b1b49aa7dd8c4f3004da6a8c2241814dae621␟783273603869937627: Slide ${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION: of ${\"\\uFFFD1\\uFFFD\"}:INTERPOLATION_1: `;\n } let i18n_6; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_carousel_previous$$FESM2015_NG_BOOTSTRAP_JS__7 = goog.getMsg(\"Previous\");\n i18n_6 = MSG_EXTERNAL_ngb_carousel_previous$$FESM2015_NG_BOOTSTRAP_JS__7;\n }\n else {\n i18n_6 = $localize `:@@ngb.carousel.previous␟680d5c75b7fd8d37961083608b9fcdc4167b4c43␟4452427314943113135:Previous`;\n } let i18n_8; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_carousel_next$$FESM2015_NG_BOOTSTRAP_JS__9 = goog.getMsg(\"Next\");\n i18n_8 = MSG_EXTERNAL_ngb_carousel_next$$FESM2015_NG_BOOTSTRAP_JS__9;\n }\n else {\n i18n_8 = $localize `:@@ngb.carousel.next␟f732c304c7433e5a83ffcd862c3dce709a0f4982␟3885497195825665706:Next`;\n } return [[\"role\", \"tablist\", 1, \"carousel-indicators\"], [\"role\", \"tab\", 3, \"active\", \"click\", 4, \"ngFor\", \"ngForOf\"], [1, \"carousel-inner\"], [\"class\", \"carousel-item\", \"role\", \"tabpanel\", 3, \"id\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"carousel-control-prev\", \"role\", \"button\", 3, \"click\", 4, \"ngIf\"], [\"class\", \"carousel-control-next\", \"role\", \"button\", 3, \"click\", 4, \"ngIf\"], [\"role\", \"tab\", 3, \"click\"], [\"role\", \"tabpanel\", 1, \"carousel-item\", 3, \"id\"], [1, \"sr-only\"], i18n_4, [3, \"ngTemplateOutlet\"], [\"role\", \"button\", 1, \"carousel-control-prev\", 3, \"click\"], [\"aria-hidden\", \"true\", 1, \"carousel-control-prev-icon\"], i18n_6, [\"role\", \"button\", 1, \"carousel-control-next\", 3, \"click\"], [\"aria-hidden\", \"true\", 1, \"carousel-control-next-icon\"], i18n_8]; }, template: function NgbCarousel_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ol\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbCarousel_li_1_Template, 1, 5, \"li\", 1);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, NgbCarousel_div_3_Template, 4, 4, \"div\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, NgbCarousel_a_4_Template, 4, 0, \"a\", 4);\n ɵngcc0.ɵɵtemplate(5, NgbCarousel_a_5_Template, 4, 0, \"a\", 5);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"sr-only\", !ctx.showNavigationIndicators);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.slides);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.slides);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationArrows);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showNavigationArrows);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgIf], encapsulation: 2, changeDetection: 0 });\r\nNgbCarousel.ctorParameters = () => [\r\n { type: NgbCarouselConfig },\r\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\r\n { type: NgZone },\r\n { type: ChangeDetectorRef },\r\n { type: ElementRef }\r\n];\r\nNgbCarousel.propDecorators = {\r\n slides: [{ type: ContentChildren, args: [NgbSlide,] }],\r\n animation: [{ type: Input }],\r\n activeId: [{ type: Input }],\r\n interval: [{ type: Input }],\r\n wrap: [{ type: Input }],\r\n keyboard: [{ type: Input }],\r\n pauseOnHover: [{ type: Input }],\r\n pauseOnFocus: [{ type: Input }],\r\n showNavigationArrows: [{ type: Input }],\r\n showNavigationIndicators: [{ type: Input }],\r\n slide: [{ type: Output }],\r\n slid: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarousel, [{\n type: Component,\n args: [{\n selector: 'ngb-carousel',\n exportAs: 'ngbCarousel',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'carousel slide',\n '[style.display]': '\"block\"',\n 'tabIndex': '0',\n '(keydown.arrowLeft)': 'keyboard && arrowLeft()',\n '(keydown.arrowRight)': 'keyboard && arrowRight()',\n '(mouseenter)': 'mouseHover = true',\n '(mouseleave)': 'mouseHover = false',\n '(focusin)': 'focused = true',\n '(focusout)': 'focused = false',\n '[attr.aria-activedescendant]': `'slide-' + activeId`\n },\n template: `\r\n
    \r\n
  1. \r\n
\r\n
\r\n
\r\n \r\n Slide {{i + 1}} of {{c}}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n Previous\r\n \r\n \r\n \r\n Next\r\n \r\n `\n }]\n }], function () { return [{ type: NgbCarouselConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }]; }, { slide: [{\n type: Output\n }], slid: [{\n type: Output\n }], animation: [{\n type: Input\n }], interval: [{\n type: Input\n }], wrap: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], pauseOnHover: [{\n type: Input\n }], pauseOnFocus: [{\n type: Input\n }], showNavigationArrows: [{\n type: Input\n }], showNavigationIndicators: [{\n type: Input\n }], activeId: [{\n type: Input\n }], slides: [{\n type: ContentChildren,\n args: [NgbSlide]\n }] }); })();\r\nvar NgbSlideEventSource;\r\n(function (NgbSlideEventSource) {\r\n NgbSlideEventSource[\"TIMER\"] = \"timer\";\r\n NgbSlideEventSource[\"ARROW_LEFT\"] = \"arrowLeft\";\r\n NgbSlideEventSource[\"ARROW_RIGHT\"] = \"arrowRight\";\r\n NgbSlideEventSource[\"INDICATOR\"] = \"indicator\";\r\n})(NgbSlideEventSource || (NgbSlideEventSource = {}));\r\nconst NGB_CAROUSEL_DIRECTIVES = [NgbCarousel, NgbSlide];\n\nclass NgbCarouselModule {\r\n}\nNgbCarouselModule.ɵfac = function NgbCarouselModule_Factory(t) { return new (t || NgbCarouselModule)(); };\nNgbCarouselModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbCarouselModule });\nNgbCarouselModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCarouselModule, [{\n type: NgModule,\n args: [{ declarations: NGB_CAROUSEL_DIRECTIVES, exports: NGB_CAROUSEL_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbCarouselModule, { declarations: function () { return [NgbCarousel, NgbSlide]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbCarousel, NgbSlide]; } }); })();\n\n/**\r\n * A configuration service for the [NgbCollapse](#/components/collapse/api#NgbCollapse) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize its properties\r\n * to provide default values for all collapses used in the application.\r\n */\r\nclass NgbCollapseConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbCollapseConfig.ɵfac = function NgbCollapseConfig_Factory(t) { return new (t || NgbCollapseConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbCollapseConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbCollapseConfig_Factory() { return new NgbCollapseConfig(ɵɵinject(NgbConfig)); }, token: NgbCollapseConfig, providedIn: \"root\" });\r\nNgbCollapseConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCollapseConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\n/**\r\n * A directive to provide a simple way of hiding and showing elements on the page.\r\n */\r\nclass NgbCollapse {\r\n constructor(_element, config, _zone) {\r\n this._element = _element;\r\n this._zone = _zone;\r\n /**\r\n * If `true`, will collapse the element or show it otherwise.\r\n */\r\n this.collapsed = false;\r\n this.ngbCollapseChange = new EventEmitter();\r\n /**\r\n * An event emitted when the collapse element is shown, after the transition. It has no payload.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event emitted when the collapse element is hidden, after the transition. It has no payload.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.hidden = new EventEmitter();\r\n this.animation = config.animation;\r\n }\r\n ngOnInit() { this._runTransition(this.collapsed, false); }\r\n ngOnChanges({ collapsed }) {\r\n if (!collapsed.firstChange) {\r\n this._runTransitionWithEvents(this.collapsed, this.animation);\r\n }\r\n }\r\n /**\r\n * Triggers collapsing programmatically.\r\n *\r\n * If there is a collapsing transition running already, it will be reversed.\r\n * If the animations are turned off this happens synchronously.\r\n *\r\n * @since 8.0.0\r\n */\r\n toggle(open = this.collapsed) {\r\n this.collapsed = !open;\r\n this.ngbCollapseChange.next(this.collapsed);\r\n this._runTransitionWithEvents(this.collapsed, this.animation);\r\n }\r\n _runTransition(collapsed, animation) {\r\n return ngbRunTransition(this._zone, this._element.nativeElement, ngbCollapsingTransition, { animation, runningTransition: 'stop', context: { direction: collapsed ? 'hide' : 'show' } });\r\n }\r\n _runTransitionWithEvents(collapsed, animation) {\r\n this._runTransition(collapsed, animation).subscribe(() => {\r\n if (collapsed) {\r\n this.hidden.emit();\r\n }\r\n else {\r\n this.shown.emit();\r\n }\r\n });\r\n }\r\n}\nNgbCollapse.ɵfac = function NgbCollapse_Factory(t) { return new (t || NgbCollapse)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgbCollapseConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbCollapse.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbCollapse, selectors: [[\"\", \"ngbCollapse\", \"\"]], inputs: { collapsed: [\"ngbCollapse\", \"collapsed\"], animation: \"animation\" }, outputs: { ngbCollapseChange: \"ngbCollapseChange\", shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbCollapse\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\r\nNgbCollapse.ctorParameters = () => [\r\n { type: ElementRef },\r\n { type: NgbCollapseConfig },\r\n { type: NgZone }\r\n];\r\nNgbCollapse.propDecorators = {\r\n animation: [{ type: Input }],\r\n collapsed: [{ type: Input, args: ['ngbCollapse',] }],\r\n ngbCollapseChange: [{ type: Output }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCollapse, [{\n type: Directive,\n args: [{ selector: '[ngbCollapse]', exportAs: 'ngbCollapse' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: NgbCollapseConfig }, { type: ɵngcc0.NgZone }]; }, { collapsed: [{\n type: Input,\n args: ['ngbCollapse']\n }], ngbCollapseChange: [{\n type: Output\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], animation: [{\n type: Input\n }] }); })();\n\nclass NgbCollapseModule {\r\n}\nNgbCollapseModule.ɵfac = function NgbCollapseModule_Factory(t) { return new (t || NgbCollapseModule)(); };\nNgbCollapseModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbCollapseModule });\nNgbCollapseModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCollapseModule, [{\n type: NgModule,\n args: [{ declarations: [NgbCollapse], exports: [NgbCollapse] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbCollapseModule, { declarations: [NgbCollapse], exports: [NgbCollapse] }); })();\n\n/**\r\n * A simple class that represents a date that datepicker also uses internally.\r\n *\r\n * It is the implementation of the `NgbDateStruct` interface that adds some convenience methods,\r\n * like `.equals()`, `.before()`, etc.\r\n *\r\n * All datepicker APIs consume `NgbDateStruct`, but return `NgbDate`.\r\n *\r\n * In many cases it is simpler to manipulate these objects together with\r\n * [`NgbCalendar`](#/components/datepicker/api#NgbCalendar) than native JS Dates.\r\n *\r\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\r\n *\r\n * @since 3.0.0\r\n */\r\nclass NgbDate {\r\n constructor(year, month, day) {\r\n this.year = isInteger(year) ? year : null;\r\n this.month = isInteger(month) ? month : null;\r\n this.day = isInteger(day) ? day : null;\r\n }\r\n /**\r\n * A **static method** that creates a new date object from the `NgbDateStruct`,\r\n *\r\n * ex. `NgbDate.from({year: 2000, month: 5, day: 1})`.\r\n *\r\n * If the `date` is already of `NgbDate` type, the method will return the same object.\r\n */\r\n static from(date) {\r\n if (date instanceof NgbDate) {\r\n return date;\r\n }\r\n return date ? new NgbDate(date.year, date.month, date.day) : null;\r\n }\r\n /**\r\n * Checks if the current date is equal to another date.\r\n */\r\n equals(other) {\r\n return other != null && this.year === other.year && this.month === other.month && this.day === other.day;\r\n }\r\n /**\r\n * Checks if the current date is before another date.\r\n */\r\n before(other) {\r\n if (!other) {\r\n return false;\r\n }\r\n if (this.year === other.year) {\r\n if (this.month === other.month) {\r\n return this.day === other.day ? false : this.day < other.day;\r\n }\r\n else {\r\n return this.month < other.month;\r\n }\r\n }\r\n else {\r\n return this.year < other.year;\r\n }\r\n }\r\n /**\r\n * Checks if the current date is after another date.\r\n */\r\n after(other) {\r\n if (!other) {\r\n return false;\r\n }\r\n if (this.year === other.year) {\r\n if (this.month === other.month) {\r\n return this.day === other.day ? false : this.day > other.day;\r\n }\r\n else {\r\n return this.month > other.month;\r\n }\r\n }\r\n else {\r\n return this.year > other.year;\r\n }\r\n }\r\n}\n\nfunction fromJSDate(jsDate) {\r\n return new NgbDate(jsDate.getFullYear(), jsDate.getMonth() + 1, jsDate.getDate());\r\n}\r\nfunction toJSDate(date) {\r\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\r\n // this is done avoid 30 -> 1930 conversion\r\n if (!isNaN(jsDate.getTime())) {\r\n jsDate.setFullYear(date.year);\r\n }\r\n return jsDate;\r\n}\r\nfunction NGB_DATEPICKER_CALENDAR_FACTORY() {\r\n return new NgbCalendarGregorian();\r\n}\r\n/**\r\n * A service that represents the calendar used by the datepicker.\r\n *\r\n * The default implementation uses the Gregorian calendar. You can inject it in your own\r\n * implementations if necessary to simplify `NgbDate` calculations.\r\n */\r\nclass NgbCalendar {\r\n}\nNgbCalendar.ɵfac = function NgbCalendar_Factory(t) { return new (t || NgbCalendar)(); };\r\nNgbCalendar.ɵprov = ɵɵdefineInjectable({ factory: NGB_DATEPICKER_CALENDAR_FACTORY, token: NgbCalendar, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendar, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_CALENDAR_FACTORY }]\n }], null, null); })();\r\nclass NgbCalendarGregorian extends NgbCalendar {\r\n getDaysPerWeek() { return 7; }\r\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\r\n getWeeksPerMonth() { return 6; }\r\n getNext(date, period = 'd', number = 1) {\r\n let jsDate = toJSDate(date);\r\n let checkMonth = true;\r\n let expectedMonth = jsDate.getMonth();\r\n switch (period) {\r\n case 'y':\r\n jsDate.setFullYear(jsDate.getFullYear() + number);\r\n break;\r\n case 'm':\r\n expectedMonth += number;\r\n jsDate.setMonth(expectedMonth);\r\n expectedMonth = expectedMonth % 12;\r\n if (expectedMonth < 0) {\r\n expectedMonth = expectedMonth + 12;\r\n }\r\n break;\r\n case 'd':\r\n jsDate.setDate(jsDate.getDate() + number);\r\n checkMonth = false;\r\n break;\r\n default:\r\n return date;\r\n }\r\n if (checkMonth && jsDate.getMonth() !== expectedMonth) {\r\n // this means the destination month has less days than the initial month\r\n // let's go back to the end of the previous month:\r\n jsDate.setDate(0);\r\n }\r\n return fromJSDate(jsDate);\r\n }\r\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\r\n getWeekday(date) {\r\n let jsDate = toJSDate(date);\r\n let day = jsDate.getDay();\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n return day === 0 ? 7 : day;\r\n }\r\n getWeekNumber(week, firstDayOfWeek) {\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n if (firstDayOfWeek === 7) {\r\n firstDayOfWeek = 0;\r\n }\r\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\r\n let date = week[thursdayIndex];\r\n const jsDate = toJSDate(date);\r\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\r\n const time = jsDate.getTime();\r\n jsDate.setMonth(0); // Compare with Jan 1\r\n jsDate.setDate(1);\r\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\r\n }\r\n getToday() { return fromJSDate(new Date()); }\r\n isValid(date) {\r\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\r\n return false;\r\n }\r\n // year 0 doesn't exist in Gregorian calendar\r\n if (date.year === 0) {\r\n return false;\r\n }\r\n const jsDate = toJSDate(date);\r\n return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year && jsDate.getMonth() + 1 === date.month &&\r\n jsDate.getDate() === date.day;\r\n }\r\n}\nNgbCalendarGregorian.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarGregorian_BaseFactory; return function NgbCalendarGregorian_Factory(t) { return (ɵNgbCalendarGregorian_BaseFactory || (ɵNgbCalendarGregorian_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarGregorian)))(t || NgbCalendarGregorian); }; }();\nNgbCalendarGregorian.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarGregorian, factory: NgbCalendarGregorian.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarGregorian, [{\n type: Injectable\n }], null, null); })();\n\nfunction isChangedDate(prev, next) {\r\n return !dateComparator(prev, next);\r\n}\r\nfunction isChangedMonth(prev, next) {\r\n return !prev && !next ? false : !prev || !next ? true : prev.year !== next.year || prev.month !== next.month;\r\n}\r\nfunction dateComparator(prev, next) {\r\n return (!prev && !next) || (!!prev && !!next && prev.equals(next));\r\n}\r\nfunction checkMinBeforeMax(minDate, maxDate) {\r\n if (maxDate && minDate && maxDate.before(minDate)) {\r\n throw new Error(`'maxDate' ${maxDate} should be greater than 'minDate' ${minDate}`);\r\n }\r\n}\r\nfunction checkDateInRange(date, minDate, maxDate) {\r\n if (date && minDate && date.before(minDate)) {\r\n return minDate;\r\n }\r\n if (date && maxDate && date.after(maxDate)) {\r\n return maxDate;\r\n }\r\n return date || null;\r\n}\r\nfunction isDateSelectable(date, state) {\r\n const { minDate, maxDate, disabled, markDisabled } = state;\r\n // clang-format off\r\n return !(date === null ||\r\n date === undefined ||\r\n disabled ||\r\n (markDisabled && markDisabled(date, { year: date.year, month: date.month })) ||\r\n (minDate && date.before(minDate)) ||\r\n (maxDate && date.after(maxDate)));\r\n // clang-format on\r\n}\r\nfunction generateSelectBoxMonths(calendar, date, minDate, maxDate) {\r\n if (!date) {\r\n return [];\r\n }\r\n let months = calendar.getMonths(date.year);\r\n if (minDate && date.year === minDate.year) {\r\n const index = months.findIndex(month => month === minDate.month);\r\n months = months.slice(index);\r\n }\r\n if (maxDate && date.year === maxDate.year) {\r\n const index = months.findIndex(month => month === maxDate.month);\r\n months = months.slice(0, index + 1);\r\n }\r\n return months;\r\n}\r\nfunction generateSelectBoxYears(date, minDate, maxDate) {\r\n if (!date) {\r\n return [];\r\n }\r\n const start = minDate ? Math.max(minDate.year, date.year - 500) : date.year - 10;\r\n const end = maxDate ? Math.min(maxDate.year, date.year + 500) : date.year + 10;\r\n const length = end - start + 1;\r\n const numbers = Array(length);\r\n for (let i = 0; i < length; i++) {\r\n numbers[i] = start + i;\r\n }\r\n return numbers;\r\n}\r\nfunction nextMonthDisabled(calendar, date, maxDate) {\r\n const nextDate = Object.assign(calendar.getNext(date, 'm'), { day: 1 });\r\n return maxDate != null && nextDate.after(maxDate);\r\n}\r\nfunction prevMonthDisabled(calendar, date, minDate) {\r\n const prevDate = Object.assign(calendar.getPrev(date, 'm'), { day: 1 });\r\n return minDate != null && (prevDate.year === minDate.year && prevDate.month < minDate.month ||\r\n prevDate.year < minDate.year && minDate.month === 1);\r\n}\r\nfunction buildMonths(calendar, date, state, i18n, force) {\r\n const { displayMonths, months } = state;\r\n // move old months to a temporary array\r\n const monthsToReuse = months.splice(0, months.length);\r\n // generate new first dates, nullify or reuse months\r\n const firstDates = Array.from({ length: displayMonths }, (_, i) => {\r\n const firstDate = Object.assign(calendar.getNext(date, 'm', i), { day: 1 });\r\n months[i] = null;\r\n if (!force) {\r\n const reusedIndex = monthsToReuse.findIndex(month => month.firstDate.equals(firstDate));\r\n // move reused month back to months\r\n if (reusedIndex !== -1) {\r\n months[i] = monthsToReuse.splice(reusedIndex, 1)[0];\r\n }\r\n }\r\n return firstDate;\r\n });\r\n // rebuild nullified months\r\n firstDates.forEach((firstDate, i) => {\r\n if (months[i] === null) {\r\n months[i] = buildMonth(calendar, firstDate, state, i18n, monthsToReuse.shift() || {});\r\n }\r\n });\r\n return months;\r\n}\r\nfunction buildMonth(calendar, date, state, i18n, month = {}) {\r\n const { dayTemplateData, minDate, maxDate, firstDayOfWeek, markDisabled, outsideDays, weekdayWidth, weekdaysVisible } = state;\r\n const calendarToday = calendar.getToday();\r\n month.firstDate = null;\r\n month.lastDate = null;\r\n month.number = date.month;\r\n month.year = date.year;\r\n month.weeks = month.weeks || [];\r\n month.weekdays = month.weekdays || [];\r\n date = getFirstViewDate(calendar, date, firstDayOfWeek);\r\n // clearing weekdays, if not visible\r\n if (!weekdaysVisible) {\r\n month.weekdays.length = 0;\r\n }\r\n // month has weeks\r\n for (let week = 0; week < calendar.getWeeksPerMonth(); week++) {\r\n let weekObject = month.weeks[week];\r\n if (!weekObject) {\r\n weekObject = month.weeks[week] = { number: 0, days: [], collapsed: true };\r\n }\r\n const days = weekObject.days;\r\n // week has days\r\n for (let day = 0; day < calendar.getDaysPerWeek(); day++) {\r\n if (week === 0 && weekdaysVisible) {\r\n month.weekdays[day] = i18n.getWeekdayLabel(calendar.getWeekday(date), weekdayWidth);\r\n }\r\n const newDate = new NgbDate(date.year, date.month, date.day);\r\n const nextDate = calendar.getNext(newDate);\r\n const ariaLabel = i18n.getDayAriaLabel(newDate);\r\n // marking date as disabled\r\n let disabled = !!((minDate && newDate.before(minDate)) || (maxDate && newDate.after(maxDate)));\r\n if (!disabled && markDisabled) {\r\n disabled = markDisabled(newDate, { month: month.number, year: month.year });\r\n }\r\n // today\r\n let today = newDate.equals(calendarToday);\r\n // adding user-provided data to the context\r\n let contextUserData = dayTemplateData ? dayTemplateData(newDate, { month: month.number, year: month.year }) : undefined;\r\n // saving first date of the month\r\n if (month.firstDate === null && newDate.month === month.number) {\r\n month.firstDate = newDate;\r\n }\r\n // saving last date of the month\r\n if (newDate.month === month.number && nextDate.month !== month.number) {\r\n month.lastDate = newDate;\r\n }\r\n let dayObject = days[day];\r\n if (!dayObject) {\r\n dayObject = days[day] = {};\r\n }\r\n dayObject.date = newDate;\r\n dayObject.context = Object.assign(dayObject.context || {}, {\r\n $implicit: newDate,\r\n date: newDate,\r\n data: contextUserData,\r\n currentMonth: month.number,\r\n currentYear: month.year, disabled,\r\n focused: false,\r\n selected: false, today\r\n });\r\n dayObject.tabindex = -1;\r\n dayObject.ariaLabel = ariaLabel;\r\n dayObject.hidden = false;\r\n date = nextDate;\r\n }\r\n weekObject.number = calendar.getWeekNumber(days.map(day => day.date), firstDayOfWeek);\r\n // marking week as collapsed\r\n weekObject.collapsed = outsideDays === 'collapsed' && days[0].date.month !== month.number &&\r\n days[days.length - 1].date.month !== month.number;\r\n }\r\n return month;\r\n}\r\nfunction getFirstViewDate(calendar, date, firstDayOfWeek) {\r\n const daysPerWeek = calendar.getDaysPerWeek();\r\n const firstMonthDate = new NgbDate(date.year, date.month, 1);\r\n const dayOfWeek = calendar.getWeekday(firstMonthDate) % daysPerWeek;\r\n return calendar.getPrev(firstMonthDate, 'd', (daysPerWeek + dayOfWeek - firstDayOfWeek) % daysPerWeek);\r\n}\n\nfunction NGB_DATEPICKER_18N_FACTORY(locale) {\r\n return new NgbDatepickerI18nDefault(locale);\r\n}\r\n/**\r\n * A service supplying i18n data to the datepicker component.\r\n *\r\n * The default implementation of this service uses the Angular locale and registered locale data for\r\n * weekdays and month names (as explained in the Angular i18n guide).\r\n *\r\n * It also provides a way to i18n data that depends on calendar calculations, like aria labels, day, week and year\r\n * numerals. For other static labels the datepicker uses the default Angular i18n.\r\n *\r\n * See the [i18n demo](#/components/datepicker/examples#i18n) and\r\n * [Hebrew calendar demo](#/components/datepicker/calendars#hebrew) on how to extend this class and define\r\n * a custom provider for i18n.\r\n */\r\nclass NgbDatepickerI18n {\r\n /**\r\n * Returns the weekday label using specified width\r\n *\r\n * @since 9.1.0\r\n */\r\n getWeekdayLabel(weekday, width) { return this.getWeekdayShortName(weekday); }\r\n /**\r\n * Returns the text label to display above the day view.\r\n *\r\n * @since 9.1.0\r\n */\r\n getMonthLabel(date) {\r\n return `${this.getMonthFullName(date.month, date.year)} ${this.getYearNumerals(date.year)}`;\r\n }\r\n /**\r\n * Returns the textual representation of a day that is rendered in a day cell.\r\n *\r\n * @since 3.0.0\r\n */\r\n getDayNumerals(date) { return `${date.day}`; }\r\n /**\r\n * Returns the textual representation of a week number rendered by datepicker.\r\n *\r\n * @since 3.0.0\r\n */\r\n getWeekNumerals(weekNumber) { return `${weekNumber}`; }\r\n /**\r\n * Returns the textual representation of a year that is rendered in the datepicker year select box.\r\n *\r\n * @since 3.0.0\r\n */\r\n getYearNumerals(year) { return `${year}`; }\r\n /**\r\n * Returns the week label to display in the heading of the month view.\r\n *\r\n * @since 9.1.0\r\n */\r\n getWeekLabel() { return ''; }\r\n}\nNgbDatepickerI18n.ɵfac = function NgbDatepickerI18n_Factory(t) { return new (t || NgbDatepickerI18n)(); };\r\nNgbDatepickerI18n.ɵprov = ɵɵdefineInjectable({ factory: function NgbDatepickerI18n_Factory() { return NGB_DATEPICKER_18N_FACTORY(ɵɵinject(LOCALE_ID)); }, token: NgbDatepickerI18n, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18n, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_18N_FACTORY, deps: [LOCALE_ID] }]\n }], null, null); })();\r\n/**\r\n * A service providing default implementation for the datepicker i18n.\r\n * It can be used as a base implementation if necessary.\r\n *\r\n * @since 9.1.0\r\n */\r\nclass NgbDatepickerI18nDefault extends NgbDatepickerI18n {\r\n constructor(_locale) {\r\n super();\r\n this._locale = _locale;\r\n this._monthsShort = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Abbreviated);\r\n this._monthsFull = getLocaleMonthNames(_locale, FormStyle.Standalone, TranslationWidth.Wide);\r\n }\r\n getWeekdayShortName(weekday) { return this.getWeekdayLabel(weekday, TranslationWidth.Short); }\r\n getWeekdayLabel(weekday, width) {\r\n const weekdaysStartingOnSunday = getLocaleDayNames(this._locale, FormStyle.Standalone, width === undefined ? TranslationWidth.Short : width);\r\n const weekdays = weekdaysStartingOnSunday.map((day, index) => weekdaysStartingOnSunday[(index + 1) % 7]);\r\n return weekdays[weekday - 1] || '';\r\n }\r\n getMonthShortName(month) { return this._monthsShort[month - 1] || ''; }\r\n getMonthFullName(month) { return this._monthsFull[month - 1] || ''; }\r\n getDayAriaLabel(date) {\r\n const jsDate = new Date(date.year, date.month - 1, date.day);\r\n return formatDate(jsDate, 'fullDate', this._locale);\r\n }\r\n}\nNgbDatepickerI18nDefault.ɵfac = function NgbDatepickerI18nDefault_Factory(t) { return new (t || NgbDatepickerI18nDefault)(ɵngcc0.ɵɵinject(LOCALE_ID)); };\nNgbDatepickerI18nDefault.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerI18nDefault, factory: NgbDatepickerI18nDefault.ɵfac });\r\nNgbDatepickerI18nDefault.ctorParameters = () => [\r\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18nDefault, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n\nclass NgbDatepickerService {\r\n constructor(_calendar, _i18n) {\r\n this._calendar = _calendar;\r\n this._i18n = _i18n;\r\n this._VALIDATORS = {\r\n dayTemplateData: (dayTemplateData) => {\r\n if (this._state.dayTemplateData !== dayTemplateData) {\r\n return { dayTemplateData };\r\n }\r\n },\r\n displayMonths: (displayMonths) => {\r\n displayMonths = toInteger(displayMonths);\r\n if (isInteger(displayMonths) && displayMonths > 0 && this._state.displayMonths !== displayMonths) {\r\n return { displayMonths };\r\n }\r\n },\r\n disabled: (disabled) => {\r\n if (this._state.disabled !== disabled) {\r\n return { disabled };\r\n }\r\n },\r\n firstDayOfWeek: (firstDayOfWeek) => {\r\n firstDayOfWeek = toInteger(firstDayOfWeek);\r\n if (isInteger(firstDayOfWeek) && firstDayOfWeek >= 0 && this._state.firstDayOfWeek !== firstDayOfWeek) {\r\n return { firstDayOfWeek };\r\n }\r\n },\r\n focusVisible: (focusVisible) => {\r\n if (this._state.focusVisible !== focusVisible && !this._state.disabled) {\r\n return { focusVisible };\r\n }\r\n },\r\n markDisabled: (markDisabled) => {\r\n if (this._state.markDisabled !== markDisabled) {\r\n return { markDisabled };\r\n }\r\n },\r\n maxDate: (date) => {\r\n const maxDate = this.toValidDate(date, null);\r\n if (isChangedDate(this._state.maxDate, maxDate)) {\r\n return { maxDate };\r\n }\r\n },\r\n minDate: (date) => {\r\n const minDate = this.toValidDate(date, null);\r\n if (isChangedDate(this._state.minDate, minDate)) {\r\n return { minDate };\r\n }\r\n },\r\n navigation: (navigation) => {\r\n if (this._state.navigation !== navigation) {\r\n return { navigation };\r\n }\r\n },\r\n outsideDays: (outsideDays) => {\r\n if (this._state.outsideDays !== outsideDays) {\r\n return { outsideDays };\r\n }\r\n },\r\n weekdays: (weekdays) => {\r\n const weekdayWidth = weekdays === true || weekdays === false ? TranslationWidth.Short : weekdays;\r\n const weekdaysVisible = weekdays === true || weekdays === false ? weekdays : true;\r\n if (this._state.weekdayWidth !== weekdayWidth || this._state.weekdaysVisible !== weekdaysVisible) {\r\n return { weekdayWidth, weekdaysVisible };\r\n }\r\n }\r\n };\r\n this._model$ = new Subject();\r\n this._dateSelect$ = new Subject();\r\n this._state = {\r\n dayTemplateData: null,\r\n markDisabled: null,\r\n maxDate: null,\r\n minDate: null,\r\n disabled: false,\r\n displayMonths: 1,\r\n firstDate: null,\r\n firstDayOfWeek: 1,\r\n lastDate: null,\r\n focusDate: null,\r\n focusVisible: false,\r\n months: [],\r\n navigation: 'select',\r\n outsideDays: 'visible',\r\n prevDisabled: false,\r\n nextDisabled: false,\r\n selectedDate: null,\r\n selectBoxes: { years: [], months: [] },\r\n weekdayWidth: TranslationWidth.Short,\r\n weekdaysVisible: true\r\n };\r\n }\r\n get model$() { return this._model$.pipe(filter(model => model.months.length > 0)); }\r\n get dateSelect$() { return this._dateSelect$.pipe(filter(date => date !== null)); }\r\n set(options) {\r\n let patch = Object.keys(options)\r\n .map(key => this._VALIDATORS[key](options[key]))\r\n .reduce((obj, part) => (Object.assign(Object.assign({}, obj), part)), {});\r\n if (Object.keys(patch).length > 0) {\r\n this._nextState(patch);\r\n }\r\n }\r\n focus(date) {\r\n const focusedDate = this.toValidDate(date, null);\r\n if (focusedDate != null && !this._state.disabled && isChangedDate(this._state.focusDate, focusedDate)) {\r\n this._nextState({ focusDate: date });\r\n }\r\n }\r\n focusSelect() {\r\n if (isDateSelectable(this._state.focusDate, this._state)) {\r\n this.select(this._state.focusDate, { emitEvent: true });\r\n }\r\n }\r\n open(date) {\r\n const firstDate = this.toValidDate(date, this._calendar.getToday());\r\n if (firstDate != null && !this._state.disabled &&\r\n (!this._state.firstDate || isChangedMonth(this._state.firstDate, firstDate))) {\r\n this._nextState({ firstDate });\r\n }\r\n }\r\n select(date, options = {}) {\r\n const selectedDate = this.toValidDate(date, null);\r\n if (selectedDate != null && !this._state.disabled) {\r\n if (isChangedDate(this._state.selectedDate, selectedDate)) {\r\n this._nextState({ selectedDate });\r\n }\r\n if (options.emitEvent && isDateSelectable(selectedDate, this._state)) {\r\n this._dateSelect$.next(selectedDate);\r\n }\r\n }\r\n }\r\n toValidDate(date, defaultValue) {\r\n const ngbDate = NgbDate.from(date);\r\n if (defaultValue === undefined) {\r\n defaultValue = this._calendar.getToday();\r\n }\r\n return this._calendar.isValid(ngbDate) ? ngbDate : defaultValue;\r\n }\r\n getMonth(struct) {\r\n for (let month of this._state.months) {\r\n if (struct.month === month.number && struct.year === month.year) {\r\n return month;\r\n }\r\n }\r\n throw new Error(`month ${struct.month} of year ${struct.year} not found`);\r\n }\r\n _nextState(patch) {\r\n const newState = this._updateState(patch);\r\n this._patchContexts(newState);\r\n this._state = newState;\r\n this._model$.next(this._state);\r\n }\r\n _patchContexts(state) {\r\n const { months, displayMonths, selectedDate, focusDate, focusVisible, disabled, outsideDays } = state;\r\n state.months.forEach(month => {\r\n month.weeks.forEach(week => {\r\n week.days.forEach(day => {\r\n // patch focus flag\r\n if (focusDate) {\r\n day.context.focused = focusDate.equals(day.date) && focusVisible;\r\n }\r\n // calculating tabindex\r\n day.tabindex =\r\n !disabled && focusDate && day.date.equals(focusDate) && focusDate.month === month.number ? 0 : -1;\r\n // override context disabled\r\n if (disabled === true) {\r\n day.context.disabled = true;\r\n }\r\n // patch selection flag\r\n if (selectedDate !== undefined) {\r\n day.context.selected = selectedDate !== null && selectedDate.equals(day.date);\r\n }\r\n // visibility\r\n if (month.number !== day.date.month) {\r\n day.hidden = outsideDays === 'hidden' || outsideDays === 'collapsed' ||\r\n (displayMonths > 1 && day.date.after(months[0].firstDate) &&\r\n day.date.before(months[displayMonths - 1].lastDate));\r\n }\r\n });\r\n });\r\n });\r\n }\r\n _updateState(patch) {\r\n // patching fields\r\n const state = Object.assign({}, this._state, patch);\r\n let startDate = state.firstDate;\r\n // min/max dates changed\r\n if ('minDate' in patch || 'maxDate' in patch) {\r\n checkMinBeforeMax(state.minDate, state.maxDate);\r\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\r\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\r\n startDate = state.focusDate;\r\n }\r\n // disabled\r\n if ('disabled' in patch) {\r\n state.focusVisible = false;\r\n }\r\n // initial rebuild via 'select()'\r\n if ('selectedDate' in patch && this._state.months.length === 0) {\r\n startDate = state.selectedDate;\r\n }\r\n // terminate early if only focus visibility was changed\r\n if ('focusVisible' in patch) {\r\n return state;\r\n }\r\n // focus date changed\r\n if ('focusDate' in patch) {\r\n state.focusDate = checkDateInRange(state.focusDate, state.minDate, state.maxDate);\r\n startDate = state.focusDate;\r\n // nothing to rebuild if only focus changed and it is still visible\r\n if (state.months.length !== 0 && state.focusDate && !state.focusDate.before(state.firstDate) &&\r\n !state.focusDate.after(state.lastDate)) {\r\n return state;\r\n }\r\n }\r\n // first date changed\r\n if ('firstDate' in patch) {\r\n state.firstDate = checkDateInRange(state.firstDate, state.minDate, state.maxDate);\r\n startDate = state.firstDate;\r\n }\r\n // rebuilding months\r\n if (startDate) {\r\n const forceRebuild = 'dayTemplateData' in patch || 'firstDayOfWeek' in patch || 'markDisabled' in patch ||\r\n 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch || 'outsideDays' in patch ||\r\n 'weekdaysVisible' in patch;\r\n const months = buildMonths(this._calendar, startDate, state, this._i18n, forceRebuild);\r\n // updating months and boundary dates\r\n state.months = months;\r\n state.firstDate = months[0].firstDate;\r\n state.lastDate = months[months.length - 1].lastDate;\r\n // reset selected date if 'markDisabled' returns true\r\n if ('selectedDate' in patch && !isDateSelectable(state.selectedDate, state)) {\r\n state.selectedDate = null;\r\n }\r\n // adjusting focus after months were built\r\n if ('firstDate' in patch) {\r\n if (!state.focusDate || state.focusDate.before(state.firstDate) || state.focusDate.after(state.lastDate)) {\r\n state.focusDate = startDate;\r\n }\r\n }\r\n // adjusting months/years for the select box navigation\r\n const yearChanged = !this._state.firstDate || this._state.firstDate.year !== state.firstDate.year;\r\n const monthChanged = !this._state.firstDate || this._state.firstDate.month !== state.firstDate.month;\r\n if (state.navigation === 'select') {\r\n // years -> boundaries (min/max were changed)\r\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.years.length === 0 || yearChanged) {\r\n state.selectBoxes.years = generateSelectBoxYears(state.firstDate, state.minDate, state.maxDate);\r\n }\r\n // months -> when current year or boundaries change\r\n if ('minDate' in patch || 'maxDate' in patch || state.selectBoxes.months.length === 0 || yearChanged) {\r\n state.selectBoxes.months =\r\n generateSelectBoxMonths(this._calendar, state.firstDate, state.minDate, state.maxDate);\r\n }\r\n }\r\n else {\r\n state.selectBoxes = { years: [], months: [] };\r\n }\r\n // updating navigation arrows -> boundaries change (min/max) or month/year changes\r\n if ((state.navigation === 'arrows' || state.navigation === 'select') &&\r\n (monthChanged || yearChanged || 'minDate' in patch || 'maxDate' in patch || 'disabled' in patch)) {\r\n state.prevDisabled = state.disabled || prevMonthDisabled(this._calendar, state.firstDate, state.minDate);\r\n state.nextDisabled = state.disabled || nextMonthDisabled(this._calendar, state.lastDate, state.maxDate);\r\n }\r\n }\r\n return state;\r\n }\r\n}\nNgbDatepickerService.ɵfac = function NgbDatepickerService_Factory(t) { return new (t || NgbDatepickerService)(ɵngcc0.ɵɵinject(NgbCalendar), ɵngcc0.ɵɵinject(NgbDatepickerI18n)); };\nNgbDatepickerService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerService, factory: NgbDatepickerService.ɵfac });\r\nNgbDatepickerService.ctorParameters = () => [\r\n { type: NgbCalendar },\r\n { type: NgbDatepickerI18n }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerService, [{\n type: Injectable\n }], function () { return [{ type: NgbCalendar }, { type: NgbDatepickerI18n }]; }, null); })();\n\n// clang-format on\r\nvar NavigationEvent;\r\n(function (NavigationEvent) {\r\n NavigationEvent[NavigationEvent[\"PREV\"] = 0] = \"PREV\";\r\n NavigationEvent[NavigationEvent[\"NEXT\"] = 1] = \"NEXT\";\r\n})(NavigationEvent || (NavigationEvent = {}));\n\n/**\r\n * A configuration service for the [`NgbDatepicker`](#/components/datepicker/api#NgbDatepicker) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the datepickers used in the application.\r\n */\r\nclass NgbDatepickerConfig {\r\n constructor() {\r\n this.displayMonths = 1;\r\n this.firstDayOfWeek = 1;\r\n this.navigation = 'select';\r\n this.outsideDays = 'visible';\r\n this.showWeekdays = true;\r\n this.showWeekNumbers = false;\r\n this.weekdays = TranslationWidth.Short;\r\n }\r\n}\nNgbDatepickerConfig.ɵfac = function NgbDatepickerConfig_Factory(t) { return new (t || NgbDatepickerConfig)(); };\r\nNgbDatepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbDatepickerConfig_Factory() { return new NgbDatepickerConfig(); }, token: NgbDatepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nfunction NGB_DATEPICKER_DATE_ADAPTER_FACTORY() {\r\n return new NgbDateStructAdapter();\r\n}\r\n/**\r\n * An abstract service that does the conversion between the internal datepicker `NgbDateStruct` model and\r\n * any provided user date model `D`, ex. a string, a native date, etc.\r\n *\r\n * The adapter is used **only** for conversion when binding datepicker to a form control,\r\n * ex. `[(ngModel)]=\"userDateModel\"`. Here `userDateModel` can be of any type.\r\n *\r\n * The default datepicker implementation assumes we use `NgbDateStruct` as a user model.\r\n *\r\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details\r\n * and the [custom adapter demo](#/components/datepicker/examples#adapter) for an example.\r\n */\r\nclass NgbDateAdapter {\r\n}\nNgbDateAdapter.ɵfac = function NgbDateAdapter_Factory(t) { return new (t || NgbDateAdapter)(); };\r\nNgbDateAdapter.ɵprov = ɵɵdefineInjectable({ factory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY, token: NgbDateAdapter, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateAdapter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_DATE_ADAPTER_FACTORY }]\n }], null, null); })();\r\nclass NgbDateStructAdapter extends NgbDateAdapter {\r\n /**\r\n * Converts a NgbDateStruct value into NgbDateStruct value\r\n */\r\n fromModel(date) {\r\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\r\n { year: date.year, month: date.month, day: date.day } :\r\n null;\r\n }\r\n /**\r\n * Converts a NgbDateStruct value into NgbDateStruct value\r\n */\r\n toModel(date) {\r\n return (date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day)) ?\r\n { year: date.year, month: date.month, day: date.day } :\r\n null;\r\n }\r\n}\nNgbDateStructAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateStructAdapter_BaseFactory; return function NgbDateStructAdapter_Factory(t) { return (ɵNgbDateStructAdapter_BaseFactory || (ɵNgbDateStructAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateStructAdapter)))(t || NgbDateStructAdapter); }; }();\nNgbDateStructAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateStructAdapter, factory: NgbDateStructAdapter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateStructAdapter, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * A directive that marks the content template that customizes the way datepicker months are displayed\r\n *\r\n * @since 5.3.0\r\n */\r\nclass NgbDatepickerContent {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbDatepickerContent.ɵfac = function NgbDatepickerContent_Factory(t) { return new (t || NgbDatepickerContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbDatepickerContent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDatepickerContent, selectors: [[\"ng-template\", \"ngbDatepickerContent\", \"\"]] });\r\nNgbDatepickerContent.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbDatepickerContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A highly configurable component that helps you with selecting calendar dates.\r\n *\r\n * `NgbDatepicker` is meant to be displayed inline on a page or put inside a popup.\r\n */\r\nclass NgbDatepicker {\r\n constructor(_service, _calendar, i18n, config, cd, _elementRef, _ngbDateAdapter, _ngZone) {\r\n this._service = _service;\r\n this._calendar = _calendar;\r\n this.i18n = i18n;\r\n this._elementRef = _elementRef;\r\n this._ngbDateAdapter = _ngbDateAdapter;\r\n this._ngZone = _ngZone;\r\n this._controlValue = null;\r\n this._destroyed$ = new Subject();\r\n this._publicState = {};\r\n /**\r\n * An event emitted right before the navigation happens and displayed month changes.\r\n *\r\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\r\n */\r\n this.navigate = new EventEmitter();\r\n /**\r\n * An event emitted when user selects a date using keyboard or mouse.\r\n *\r\n * The payload of the event is currently selected `NgbDate`.\r\n *\r\n * @since 5.2.0\r\n */\r\n this.dateSelect = new EventEmitter();\r\n this.onChange = (_) => { };\r\n this.onTouched = () => { };\r\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\r\n 'maxDate', 'navigation', 'outsideDays', 'showWeekdays', 'showWeekNumbers', 'startDate', 'weekdays']\r\n .forEach(input => this[input] = config[input]);\r\n _service.dateSelect$.pipe(takeUntil(this._destroyed$)).subscribe(date => { this.dateSelect.emit(date); });\r\n _service.model$.pipe(takeUntil(this._destroyed$)).subscribe(model => {\r\n const newDate = model.firstDate;\r\n const oldDate = this.model ? this.model.firstDate : null;\r\n // update public state\r\n this._publicState = {\r\n maxDate: model.maxDate,\r\n minDate: model.minDate,\r\n firstDate: model.firstDate,\r\n lastDate: model.lastDate,\r\n focusedDate: model.focusDate,\r\n months: model.months.map(viewModel => viewModel.firstDate)\r\n };\r\n let navigationPrevented = false;\r\n // emitting navigation event if the first month changes\r\n if (!newDate.equals(oldDate)) {\r\n this.navigate.emit({\r\n current: oldDate ? { year: oldDate.year, month: oldDate.month } : null,\r\n next: { year: newDate.year, month: newDate.month },\r\n preventDefault: () => navigationPrevented = true\r\n });\r\n // can't prevent the very first navigation\r\n if (navigationPrevented && oldDate !== null) {\r\n this._service.open(oldDate);\r\n return;\r\n }\r\n }\r\n const newSelectedDate = model.selectedDate;\r\n const newFocusedDate = model.focusDate;\r\n const oldFocusedDate = this.model ? this.model.focusDate : null;\r\n this.model = model;\r\n // handling selection change\r\n if (isChangedDate(newSelectedDate, this._controlValue)) {\r\n this._controlValue = newSelectedDate;\r\n this.onTouched();\r\n this.onChange(this._ngbDateAdapter.toModel(newSelectedDate));\r\n }\r\n // handling focus change\r\n if (isChangedDate(newFocusedDate, oldFocusedDate) && oldFocusedDate && model.focusVisible) {\r\n this.focus();\r\n }\r\n cd.markForCheck();\r\n });\r\n }\r\n /**\r\n * If `true`, weekdays will be displayed.\r\n *\r\n * @deprecated 9.1.0, please use 'weekdays' instead\r\n */\r\n set showWeekdays(weekdays) {\r\n this.weekdays = weekdays;\r\n this._showWeekdays = weekdays;\r\n }\r\n get showWeekdays() { return this._showWeekdays; }\r\n /**\r\n * Returns the readonly public state of the datepicker\r\n *\r\n * @since 5.2.0\r\n */\r\n get state() { return this._publicState; }\r\n /**\r\n * Returns the calendar service used in the specific datepicker instance.\r\n *\r\n * @since 5.3.0\r\n */\r\n get calendar() { return this._calendar; }\r\n /**\r\n * Focuses on given date.\r\n */\r\n focusDate(date) { this._service.focus(NgbDate.from(date)); }\r\n /**\r\n * Selects focused date.\r\n */\r\n focusSelect() { this._service.focusSelect(); }\r\n focus() {\r\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\r\n const elementToFocus = this._elementRef.nativeElement.querySelector('div.ngb-dp-day[tabindex=\"0\"]');\r\n if (elementToFocus) {\r\n elementToFocus.focus();\r\n }\r\n });\r\n }\r\n /**\r\n * Navigates to the provided date.\r\n *\r\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\r\n * If nothing or invalid date provided calendar will open current month.\r\n *\r\n * Use the `[startDate]` input as an alternative.\r\n */\r\n navigateTo(date) {\r\n this._service.open(NgbDate.from(date ? date.day ? date : Object.assign(Object.assign({}, date), { day: 1 }) : null));\r\n }\r\n ngAfterViewInit() {\r\n this._ngZone.runOutsideAngular(() => {\r\n const focusIns$ = fromEvent(this._contentEl.nativeElement, 'focusin');\r\n const focusOuts$ = fromEvent(this._contentEl.nativeElement, 'focusout');\r\n const { nativeElement } = this._elementRef;\r\n // we're changing 'focusVisible' only when entering or leaving months view\r\n // and ignoring all focus events where both 'target' and 'related' target are day cells\r\n merge(focusIns$, focusOuts$)\r\n .pipe(filter(({ target, relatedTarget }) => !(hasClassName(target, 'ngb-dp-day') && hasClassName(relatedTarget, 'ngb-dp-day') &&\r\n nativeElement.contains(target) && nativeElement.contains(relatedTarget))), takeUntil(this._destroyed$))\r\n .subscribe(({ type }) => this._ngZone.run(() => this._service.set({ focusVisible: type === 'focusin' })));\r\n });\r\n }\r\n ngOnDestroy() { this._destroyed$.next(); }\r\n ngOnInit() {\r\n if (this.model === undefined) {\r\n const inputs = {};\r\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\r\n 'outsideDays', 'weekdays']\r\n .forEach(name => inputs[name] = this[name]);\r\n this._service.set(inputs);\r\n this.navigateTo(this.startDate);\r\n }\r\n if (!this.dayTemplate) {\r\n this.dayTemplate = this._defaultDayTemplate;\r\n }\r\n }\r\n ngOnChanges(changes) {\r\n const inputs = {};\r\n if (changes.showWeekdays) {\r\n inputs['weekdays'] = this.weekdays;\r\n }\r\n ['dayTemplateData', 'displayMonths', 'markDisabled', 'firstDayOfWeek', 'navigation', 'minDate', 'maxDate',\r\n 'outsideDays', 'weekdays']\r\n .filter(name => name in changes)\r\n .forEach(name => inputs[name] = this[name]);\r\n this._service.set(inputs);\r\n if ('startDate' in changes) {\r\n const { currentValue, previousValue } = changes.startDate;\r\n if (isChangedMonth(previousValue, currentValue)) {\r\n this.navigateTo(this.startDate);\r\n }\r\n }\r\n }\r\n onDateSelect(date) {\r\n this._service.focus(date);\r\n this._service.select(date, { emitEvent: true });\r\n }\r\n onNavigateDateSelect(date) { this._service.open(date); }\r\n onNavigateEvent(event) {\r\n switch (event) {\r\n case NavigationEvent.PREV:\r\n this._service.open(this._calendar.getPrev(this.model.firstDate, 'm', 1));\r\n break;\r\n case NavigationEvent.NEXT:\r\n this._service.open(this._calendar.getNext(this.model.firstDate, 'm', 1));\r\n break;\r\n }\r\n }\r\n registerOnChange(fn) { this.onChange = fn; }\r\n registerOnTouched(fn) { this.onTouched = fn; }\r\n setDisabledState(disabled) { this._service.set({ disabled }); }\r\n writeValue(value) {\r\n this._controlValue = NgbDate.from(this._ngbDateAdapter.fromModel(value));\r\n this._service.select(this._controlValue);\r\n }\r\n}\nNgbDatepicker.ɵfac = function NgbDatepicker_Factory(t) { return new (t || NgbDatepicker)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerService), ɵngcc0.ɵɵdirectiveInject(NgbCalendar), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgbDateAdapter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbDatepicker.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepicker, selectors: [[\"ngb-datepicker\"]], contentQueries: function NgbDatepicker_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDatepickerContent, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTemplate = _t.first);\n } }, viewQuery: function NgbDatepicker_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c10, 7);\n ɵngcc0.ɵɵviewQuery(_c11, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._defaultDayTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._contentEl = _t.first);\n } }, inputs: { showWeekdays: \"showWeekdays\", weekdays: \"weekdays\", dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", maxDate: \"maxDate\", minDate: \"minDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\" }, outputs: { navigate: \"navigate\", dateSelect: \"dateSelect\" }, exportAs: [\"ngbDatepicker\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbDatepicker), multi: true }, NgbDatepickerService]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 10, vars: 5, consts: [[\"defaultDayTemplate\", \"\"], [\"defaultContentTemplate\", \"\"], [1, \"ngb-dp-header\"], [3, \"date\", \"months\", \"disabled\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\", \"navigate\", \"select\", 4, \"ngIf\"], [1, \"ngb-dp-content\"], [\"content\", \"\"], [3, \"ngTemplateOutlet\"], [\"ngbDatepickerDayView\", \"\", 3, \"date\", \"currentMonth\", \"selected\", \"disabled\", \"focused\"], [\"class\", \"ngb-dp-month\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-month\"], [\"class\", \"ngb-dp-month-name\", 4, \"ngIf\"], [3, \"month\"], [1, \"ngb-dp-month-name\"], [3, \"date\", \"months\", \"disabled\", \"showSelect\", \"prevDisabled\", \"nextDisabled\", \"selectBoxes\", \"navigate\", \"select\"]], template: function NgbDatepicker_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepicker_ng_template_0_Template, 1, 5, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbDatepicker_ng_template_2_Template, 1, 1, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementStart(4, \"div\", 2);\n ɵngcc0.ɵɵtemplate(5, NgbDatepicker_ngb_datepicker_navigation_5_Template, 1, 7, \"ngb-datepicker-navigation\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 4, 5);\n ɵngcc0.ɵɵtemplate(8, NgbDatepicker_ng_template_8_Template, 0, 0, \"ng-template\", 6);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(9, NgbDatepicker_ng_template_9_Template, 0, 0, \"ng-template\", 6);\n } if (rf & 2) {\n const _r2 = ɵngcc0.ɵɵreference(3);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.navigation !== \"none\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"ngb-dp-months\", !ctx.contentTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx.contentTemplate == null ? null : ctx.contentTemplate.templateRef) || _r2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.footerTemplate);\n } }, directives: function () { return [NgbDatepickerDayView, ɵngcc1.NgForOf, ɵngcc1.NgIf, NgbDatepickerMonth, NgbDatepickerNavigation, ɵngcc1.NgTemplateOutlet]; }, styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{background-color:#f8f9fa;background-color:var(--light);border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem}.ngb-dp-months{display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{background-color:#f8f9fa;background-color:var(--light);font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbDatepicker.ctorParameters = () => [\r\n { type: NgbDatepickerService },\r\n { type: NgbCalendar },\r\n { type: NgbDatepickerI18n },\r\n { type: NgbDatepickerConfig },\r\n { type: ChangeDetectorRef },\r\n { type: ElementRef },\r\n { type: NgbDateAdapter },\r\n { type: NgZone }\r\n];\r\nNgbDatepicker.propDecorators = {\r\n _defaultDayTemplate: [{ type: ViewChild, args: ['defaultDayTemplate', { static: true },] }],\r\n _contentEl: [{ type: ViewChild, args: ['content', { static: true },] }],\r\n contentTemplate: [{ type: ContentChild, args: [NgbDatepickerContent, { static: true },] }],\r\n dayTemplate: [{ type: Input }],\r\n dayTemplateData: [{ type: Input }],\r\n displayMonths: [{ type: Input }],\r\n firstDayOfWeek: [{ type: Input }],\r\n footerTemplate: [{ type: Input }],\r\n markDisabled: [{ type: Input }],\r\n maxDate: [{ type: Input }],\r\n minDate: [{ type: Input }],\r\n navigation: [{ type: Input }],\r\n outsideDays: [{ type: Input }],\r\n showWeekdays: [{ type: Input }],\r\n showWeekNumbers: [{ type: Input }],\r\n startDate: [{ type: Input }],\r\n weekdays: [{ type: Input }],\r\n navigate: [{ type: Output }],\r\n dateSelect: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepicker, [{\n type: Component,\n args: [{\n exportAs: 'ngbDatepicker',\n selector: 'ngb-datepicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\r\n \r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n
1 && navigation === 'select')\" class=\"ngb-dp-month-name\">\r\n {{ i18n.getMonthLabel(month.firstDate) }}\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n \r\n `,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbDatepicker), multi: true }, NgbDatepickerService],\n styles: [\"ngb-datepicker{border:1px solid #dfdfdf;border-radius:.25rem;display:inline-block}ngb-datepicker-month{pointer-events:auto}ngb-datepicker.dropdown-menu{padding:0}.ngb-dp-body{z-index:1050}.ngb-dp-header{background-color:#f8f9fa;background-color:var(--light);border-bottom:0;border-radius:.25rem .25rem 0 0;padding-top:.25rem}.ngb-dp-months{display:flex}.ngb-dp-month{pointer-events:none}.ngb-dp-month-name{background-color:#f8f9fa;background-color:var(--light);font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-month+.ngb-dp-month .ngb-dp-month-name,.ngb-dp-month+.ngb-dp-month .ngb-dp-week{padding-left:1rem}.ngb-dp-month:last-child .ngb-dp-week{padding-right:.25rem}.ngb-dp-month:first-child .ngb-dp-week{padding-left:.25rem}.ngb-dp-month .ngb-dp-week:last-child{padding-bottom:.25rem}\"]\n }]\n }], function () { return [{ type: NgbDatepickerService }, { type: NgbCalendar }, { type: NgbDatepickerI18n }, { type: NgbDatepickerConfig }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ElementRef }, { type: NgbDateAdapter }, { type: ɵngcc0.NgZone }]; }, { navigate: [{\n type: Output\n }], dateSelect: [{\n type: Output\n }], showWeekdays: [{\n type: Input\n }], weekdays: [{\n type: Input\n }], dayTemplate: [{\n type: Input\n }], _defaultDayTemplate: [{\n type: ViewChild,\n args: ['defaultDayTemplate', { static: true }]\n }], _contentEl: [{\n type: ViewChild,\n args: ['content', { static: true }]\n }], contentTemplate: [{\n type: ContentChild,\n args: [NgbDatepickerContent, { static: true }]\n }], dayTemplateData: [{\n type: Input\n }], displayMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], markDisabled: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], navigation: [{\n type: Input\n }], outsideDays: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }], startDate: [{\n type: Input\n }] }); })();\n\nvar Key;\r\n(function (Key) {\r\n Key[Key[\"Tab\"] = 9] = \"Tab\";\r\n Key[Key[\"Enter\"] = 13] = \"Enter\";\r\n Key[Key[\"Escape\"] = 27] = \"Escape\";\r\n Key[Key[\"Space\"] = 32] = \"Space\";\r\n Key[Key[\"PageUp\"] = 33] = \"PageUp\";\r\n Key[Key[\"PageDown\"] = 34] = \"PageDown\";\r\n Key[Key[\"End\"] = 35] = \"End\";\r\n Key[Key[\"Home\"] = 36] = \"Home\";\r\n Key[Key[\"ArrowLeft\"] = 37] = \"ArrowLeft\";\r\n Key[Key[\"ArrowUp\"] = 38] = \"ArrowUp\";\r\n Key[Key[\"ArrowRight\"] = 39] = \"ArrowRight\";\r\n Key[Key[\"ArrowDown\"] = 40] = \"ArrowDown\";\r\n})(Key || (Key = {}));\n\n/**\r\n * A service that represents the keyboard navigation.\r\n *\r\n * Default keyboard shortcuts [are documented in the overview](#/components/datepicker/overview#keyboard-shortcuts)\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbDatepickerKeyboardService {\r\n /**\r\n * Processes a keyboard event.\r\n */\r\n processKey(event, datepicker) {\r\n const { state, calendar } = datepicker;\r\n // tslint:disable-next-line:deprecation\r\n switch (event.which) {\r\n case Key.PageUp:\r\n datepicker.focusDate(calendar.getPrev(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\r\n break;\r\n case Key.PageDown:\r\n datepicker.focusDate(calendar.getNext(state.focusedDate, event.shiftKey ? 'y' : 'm', 1));\r\n break;\r\n case Key.End:\r\n datepicker.focusDate(event.shiftKey ? state.maxDate : state.lastDate);\r\n break;\r\n case Key.Home:\r\n datepicker.focusDate(event.shiftKey ? state.minDate : state.firstDate);\r\n break;\r\n case Key.ArrowLeft:\r\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', 1));\r\n break;\r\n case Key.ArrowUp:\r\n datepicker.focusDate(calendar.getPrev(state.focusedDate, 'd', calendar.getDaysPerWeek()));\r\n break;\r\n case Key.ArrowRight:\r\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', 1));\r\n break;\r\n case Key.ArrowDown:\r\n datepicker.focusDate(calendar.getNext(state.focusedDate, 'd', calendar.getDaysPerWeek()));\r\n break;\r\n case Key.Enter:\r\n case Key.Space:\r\n datepicker.focusSelect();\r\n break;\r\n default:\r\n return;\r\n }\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n}\nNgbDatepickerKeyboardService.ɵfac = function NgbDatepickerKeyboardService_Factory(t) { return new (t || NgbDatepickerKeyboardService)(); };\r\nNgbDatepickerKeyboardService.ɵprov = ɵɵdefineInjectable({ factory: function NgbDatepickerKeyboardService_Factory() { return new NgbDatepickerKeyboardService(); }, token: NgbDatepickerKeyboardService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerKeyboardService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n\n/**\r\n * A component that renders one month including all the days, weekdays and week numbers. Can be used inside\r\n * the `` when you want to customize months layout.\r\n *\r\n * For a usage example, see [custom month layout demo](#/components/datepicker/examples#custommonth)\r\n *\r\n * @since 5.3.0\r\n */\r\nclass NgbDatepickerMonth {\r\n constructor(i18n, datepicker, _keyboardService, _service) {\r\n this.i18n = i18n;\r\n this.datepicker = datepicker;\r\n this._keyboardService = _keyboardService;\r\n this._service = _service;\r\n }\r\n /**\r\n * The first date of month to be rendered.\r\n *\r\n * This month must one of the months present in the\r\n * [datepicker state](#/components/datepicker/api#NgbDatepickerState).\r\n */\r\n set month(month) {\r\n this.viewModel = this._service.getMonth(month);\r\n }\r\n onKeyDown(event) { this._keyboardService.processKey(event, this.datepicker); }\r\n doSelect(day) {\r\n if (!day.context.disabled && !day.hidden) {\r\n this.datepicker.onDateSelect(day.date);\r\n }\r\n }\r\n}\nNgbDatepickerMonth.ɵfac = function NgbDatepickerMonth_Factory(t) { return new (t || NgbDatepickerMonth)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(NgbDatepicker), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerKeyboardService), ɵngcc0.ɵɵdirectiveInject(NgbDatepickerService)); };\nNgbDatepickerMonth.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerMonth, selectors: [[\"ngb-datepicker-month\"]], hostAttrs: [\"role\", \"grid\"], hostBindings: function NgbDatepickerMonth_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function NgbDatepickerMonth_keydown_HostBindingHandler($event) { return ctx.onKeyDown($event); });\n } }, inputs: { month: \"month\" }, decls: 2, vars: 2, consts: [[\"class\", \"ngb-dp-week ngb-dp-weekdays\", \"role\", \"row\", 4, \"ngIf\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"role\", \"row\", 1, \"ngb-dp-week\", \"ngb-dp-weekdays\"], [\"class\", \"ngb-dp-weekday ngb-dp-showweek small\", 4, \"ngIf\"], [\"class\", \"ngb-dp-weekday small\", \"role\", \"columnheader\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-weekday\", \"ngb-dp-showweek\", \"small\"], [\"role\", \"columnheader\", 1, \"ngb-dp-weekday\", \"small\"], [\"class\", \"ngb-dp-week\", \"role\", \"row\", 4, \"ngIf\"], [\"role\", \"row\", 1, \"ngb-dp-week\"], [\"class\", \"ngb-dp-week-number small text-muted\", 4, \"ngIf\"], [\"class\", \"ngb-dp-day\", \"role\", \"gridcell\", 3, \"disabled\", \"tabindex\", \"hidden\", \"ngb-dp-today\", \"click\", 4, \"ngFor\", \"ngForOf\"], [1, \"ngb-dp-week-number\", \"small\", \"text-muted\"], [\"role\", \"gridcell\", 1, \"ngb-dp-day\", 3, \"tabindex\", \"click\"], [3, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbDatepickerMonth_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbDatepickerMonth_div_0_Template, 3, 2, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbDatepickerMonth_ng_template_1_Template, 1, 1, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.viewModel.weekdays.length > 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.viewModel.weeks);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], styles: [\"ngb-datepicker-month{display:block}.ngb-dp-week-number,.ngb-dp-weekday{font-style:italic;line-height:2rem;text-align:center}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:flex}.ngb-dp-weekdays{background-color:#f8f9fa;background-color:var(--light);border-bottom:1px solid rgba(0,0,0,.125);border-radius:0}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{height:2rem;width:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default;pointer-events:none}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\"], encapsulation: 2 });\r\nNgbDatepickerMonth.ctorParameters = () => [\r\n { type: NgbDatepickerI18n },\r\n { type: NgbDatepicker },\r\n { type: NgbDatepickerKeyboardService },\r\n { type: NgbDatepickerService }\r\n];\r\nNgbDatepickerMonth.propDecorators = {\r\n month: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerMonth, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-month',\n host: { 'role': 'grid', '(keydown)': 'onKeyDown($event)' },\n encapsulation: ViewEncapsulation.None,\n template: `\r\n
0\" class=\"ngb-dp-week ngb-dp-weekdays\" role=\"row\">\r\n
{{ i18n.getWeekLabel() }}
\r\n
{{ weekday }}
\r\n
\r\n \r\n
\r\n
{{ i18n.getWeekNumerals(week.number) }}
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n `,\n styles: [\"ngb-datepicker-month{display:block}.ngb-dp-week-number,.ngb-dp-weekday{font-style:italic;line-height:2rem;text-align:center}.ngb-dp-weekday{color:#5bc0de;color:var(--info)}.ngb-dp-week{border-radius:.25rem;display:flex}.ngb-dp-weekdays{background-color:#f8f9fa;background-color:var(--light);border-bottom:1px solid rgba(0,0,0,.125);border-radius:0}.ngb-dp-day,.ngb-dp-week-number,.ngb-dp-weekday{height:2rem;width:2rem}.ngb-dp-day{cursor:pointer}.ngb-dp-day.disabled,.ngb-dp-day.hidden{cursor:default;pointer-events:none}.ngb-dp-day[tabindex=\\\"0\\\"]{z-index:1}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }, { type: NgbDatepicker }, { type: NgbDatepickerKeyboardService }, { type: NgbDatepickerService }]; }, { month: [{\n type: Input\n }] }); })();\n\nclass NgbDatepickerNavigation {\r\n constructor(i18n) {\r\n this.i18n = i18n;\r\n this.navigation = NavigationEvent;\r\n this.months = [];\r\n this.navigate = new EventEmitter();\r\n this.select = new EventEmitter();\r\n }\r\n onClickPrev(event) {\r\n event.currentTarget.focus();\r\n this.navigate.emit(this.navigation.PREV);\r\n }\r\n onClickNext(event) {\r\n event.currentTarget.focus();\r\n this.navigate.emit(this.navigation.NEXT);\r\n }\r\n}\nNgbDatepickerNavigation.ɵfac = function NgbDatepickerNavigation_Factory(t) { return new (t || NgbDatepickerNavigation)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n)); };\nNgbDatepickerNavigation.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerNavigation, selectors: [[\"ngb-datepicker-navigation\"]], inputs: { months: \"months\", date: \"date\", disabled: \"disabled\", showSelect: \"showSelect\", prevDisabled: \"prevDisabled\", nextDisabled: \"nextDisabled\", selectBoxes: \"selectBoxes\" }, outputs: { navigate: \"navigate\", select: \"select\" }, decls: 8, vars: 4, consts: function () { let i18n_12; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_13 = goog.getMsg(\"Previous month\");\n i18n_12 = MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_13;\n }\n else {\n i18n_12 = $localize `:@@ngb.datepicker.previous-month␟c3b08b07b5ab98e7cdcf18df39355690ab7d3884␟8586908745456864217:Previous month`;\n } let i18n_14; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_15 = goog.getMsg(\"Previous month\");\n i18n_14 = MSG_EXTERNAL_ngb_datepicker_previous_month$$FESM2015_NG_BOOTSTRAP_JS_15;\n }\n else {\n i18n_14 = $localize `:@@ngb.datepicker.previous-month␟c3b08b07b5ab98e7cdcf18df39355690ab7d3884␟8586908745456864217:Previous month`;\n } let i18n_16; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_17 = goog.getMsg(\"Next month\");\n i18n_16 = MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_17;\n }\n else {\n i18n_16 = $localize `:@@ngb.datepicker.next-month␟4bd046985cfe13040d5ef0cd881edce0968a111a␟3628374603023447227:Next month`;\n } let i18n_18; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_19 = goog.getMsg(\"Next month\");\n i18n_18 = MSG_EXTERNAL_ngb_datepicker_next_month$$FESM2015_NG_BOOTSTRAP_JS_19;\n }\n else {\n i18n_18 = $localize `:@@ngb.datepicker.next-month␟4bd046985cfe13040d5ef0cd881edce0968a111a␟3628374603023447227:Next month`;\n } return [[1, \"ngb-dp-arrow\"], [\"type\", \"button\", \"aria-label\", i18n_12, \"title\", i18n_14, 1, \"btn\", \"btn-link\", \"ngb-dp-arrow-btn\", 3, \"disabled\", \"click\"], [1, \"ngb-dp-navigation-chevron\"], [\"class\", \"ngb-dp-navigation-select\", 3, \"date\", \"disabled\", \"months\", \"years\", \"select\", 4, \"ngIf\"], [4, \"ngIf\"], [1, \"ngb-dp-arrow\", \"right\"], [\"type\", \"button\", \"aria-label\", i18n_16, \"title\", i18n_18, 1, \"btn\", \"btn-link\", \"ngb-dp-arrow-btn\", 3, \"disabled\", \"click\"], [1, \"ngb-dp-navigation-select\", 3, \"date\", \"disabled\", \"months\", \"years\", \"select\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [\"class\", \"ngb-dp-arrow\", 4, \"ngIf\"], [1, \"ngb-dp-month-name\"]]; }, template: function NgbDatepickerNavigation_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"button\", 1);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerNavigation_Template_button_click_1_listener($event) { return ctx.onClickPrev($event); });\n ɵngcc0.ɵɵelement(2, \"span\", 2);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(3, NgbDatepickerNavigation_ngb_datepicker_navigation_select_3_Template, 1, 4, \"ngb-datepicker-navigation-select\", 3);\n ɵngcc0.ɵɵtemplate(4, NgbDatepickerNavigation_4_Template, 1, 1, null, 4);\n ɵngcc0.ɵɵelementStart(5, \"div\", 5)(6, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function NgbDatepickerNavigation_Template_button_click_6_listener($event) { return ctx.onClickNext($event); });\n ɵngcc0.ɵɵelement(7, \"span\", 2);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.prevDisabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSelect);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx.showSelect);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.nextDisabled);\n } }, directives: function () { return [ɵngcc1.NgIf, NgbDatepickerNavigationSelect, ɵngcc1.NgForOf]; }, styles: [\"ngb-datepicker-navigation{align-items:center;display:flex}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;height:.75em;margin-left:.25em;margin-right:.15em;transform:rotate(-135deg);width:.75em}.ngb-dp-arrow{display:flex;flex:1 1 auto;height:2rem;margin:0;padding-left:0;padding-right:0;width:2rem}.ngb-dp-arrow.right{justify-content:flex-end}.ngb-dp-arrow.right .ngb-dp-navigation-chevron{margin-left:.15em;margin-right:.25em;transform:rotate(45deg)}.ngb-dp-arrow-btn{background-color:transparent;border:none;margin:0 .5rem;padding:0 .25rem;z-index:1}.ngb-dp-arrow-btn:focus{outline-style:auto;outline-width:1px}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:flex;flex:1 1 9rem}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbDatepickerNavigation.ctorParameters = () => [\r\n { type: NgbDatepickerI18n }\r\n];\r\nNgbDatepickerNavigation.propDecorators = {\r\n date: [{ type: Input }],\r\n disabled: [{ type: Input }],\r\n months: [{ type: Input }],\r\n showSelect: [{ type: Input }],\r\n prevDisabled: [{ type: Input }],\r\n nextDisabled: [{ type: Input }],\r\n selectBoxes: [{ type: Input }],\r\n navigate: [{ type: Output }],\r\n select: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerNavigation, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-navigation',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\r\n
\r\n \r\n
\r\n \r\n \r\n\r\n \r\n
0\">
\r\n
\r\n {{ i18n.getMonthLabel(month.firstDate) }}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n `,\n styles: [\"ngb-datepicker-navigation{align-items:center;display:flex}.ngb-dp-navigation-chevron{border-style:solid;border-width:.2em .2em 0 0;display:inline-block;height:.75em;margin-left:.25em;margin-right:.15em;transform:rotate(-135deg);width:.75em}.ngb-dp-arrow{display:flex;flex:1 1 auto;height:2rem;margin:0;padding-left:0;padding-right:0;width:2rem}.ngb-dp-arrow.right{justify-content:flex-end}.ngb-dp-arrow.right .ngb-dp-navigation-chevron{margin-left:.15em;margin-right:.25em;transform:rotate(45deg)}.ngb-dp-arrow-btn{background-color:transparent;border:none;margin:0 .5rem;padding:0 .25rem;z-index:1}.ngb-dp-arrow-btn:focus{outline-style:auto;outline-width:1px}@media (-ms-high-contrast:active),(-ms-high-contrast:none){.ngb-dp-arrow-btn:focus{outline-style:solid}}.ngb-dp-month-name{font-size:larger;height:2rem;line-height:2rem;text-align:center}.ngb-dp-navigation-select{display:flex;flex:1 1 9rem}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }]; }, { months: [{\n type: Input\n }], navigate: [{\n type: Output\n }], select: [{\n type: Output\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], showSelect: [{\n type: Input\n }], prevDisabled: [{\n type: Input\n }], nextDisabled: [{\n type: Input\n }], selectBoxes: [{\n type: Input\n }] }); })();\n\nconst isContainedIn = (element, array) => array ? array.some(item => item.contains(element)) : false;\r\nconst ɵ0$2 = isContainedIn;\r\nconst matchesSelectorIfAny = (element, selector) => !selector || closest(element, selector) != null;\r\nconst ɵ1$1 = matchesSelectorIfAny;\r\nconst ɵ2$1 = () => {\r\n const isIOS = () => /iPad|iPhone|iPod/.test(navigator.userAgent) ||\r\n (/Macintosh/.test(navigator.userAgent) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2);\r\n const isAndroid = () => /Android/.test(navigator.userAgent);\r\n return typeof navigator !== 'undefined' ? !!navigator.userAgent && (isIOS() || isAndroid()) : false;\r\n};\r\n// we have to add a more significant delay to avoid re-opening when handling (click) on a toggling element\r\n// TODO: use proper Angular platform detection when NgbAutoClose becomes a service and we can inject PLATFORM_ID\r\nconst isMobile = (ɵ2$1)();\r\n// setting 'ngbAutoClose' synchronously on mobile results in immediate popup closing\r\n// when tapping on the triggering element\r\nconst wrapAsyncForMobile = fn => isMobile ? () => setTimeout(() => fn(), 100) : fn;\r\nconst ɵ3 = wrapAsyncForMobile;\r\nfunction ngbAutoClose(zone, document, type, close, closed$, insideElements, ignoreElements, insideSelector) {\r\n // closing on ESC and outside clicks\r\n if (type) {\r\n zone.runOutsideAngular(wrapAsyncForMobile(() => {\r\n const shouldCloseOnClick = (event) => {\r\n const element = event.target;\r\n if (event.button === 2 || isContainedIn(element, ignoreElements)) {\r\n return false;\r\n }\r\n if (type === 'inside') {\r\n return isContainedIn(element, insideElements) && matchesSelectorIfAny(element, insideSelector);\r\n }\r\n else if (type === 'outside') {\r\n return !isContainedIn(element, insideElements);\r\n }\r\n else /* if (type === true) */ {\r\n return matchesSelectorIfAny(element, insideSelector) || !isContainedIn(element, insideElements);\r\n }\r\n };\r\n const escapes$ = fromEvent(document, 'keydown')\r\n .pipe(takeUntil(closed$), \r\n // tslint:disable-next-line:deprecation\r\n filter(e => e.which === Key.Escape), tap(e => e.preventDefault()));\r\n // we have to pre-calculate 'shouldCloseOnClick' on 'mousedown',\r\n // because on 'mouseup' DOM nodes might be detached\r\n const mouseDowns$ = fromEvent(document, 'mousedown').pipe(map(shouldCloseOnClick), takeUntil(closed$));\r\n const closeableClicks$ = fromEvent(document, 'mouseup')\r\n .pipe(withLatestFrom(mouseDowns$), filter(([_, shouldClose]) => shouldClose), delay(0), takeUntil(closed$));\r\n race([\r\n escapes$.pipe(map(_ => 0 /* ESCAPE */)), closeableClicks$.pipe(map(_ => 1 /* CLICK */))\r\n ]).subscribe((source) => zone.run(() => close(source)));\r\n }));\r\n }\r\n}\n\nconst FOCUSABLE_ELEMENTS_SELECTOR = [\r\n 'a[href]', 'button:not([disabled])', 'input:not([disabled]):not([type=\"hidden\"])', 'select:not([disabled])',\r\n 'textarea:not([disabled])', '[contenteditable]', '[tabindex]:not([tabindex=\"-1\"])'\r\n].join(', ');\r\n/**\r\n * Returns first and last focusable elements inside of a given element based on specific CSS selector\r\n */\r\nfunction getFocusableBoundaryElements(element) {\r\n const list = Array.from(element.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR))\r\n .filter(el => el.tabIndex !== -1);\r\n return [list[0], list[list.length - 1]];\r\n}\r\n/**\r\n * Function that enforces browser focus to be trapped inside a DOM element.\r\n *\r\n * Works only for clicks inside the element and navigation with 'Tab', ignoring clicks outside of the element\r\n *\r\n * @param zone Angular zone\r\n * @param element The element around which focus will be trapped inside\r\n * @param stopFocusTrap$ The observable stream. When completed the focus trap will clean up listeners\r\n * and free internal resources\r\n * @param refocusOnClick Put the focus back to the last focused element whenever a click occurs on element (default to\r\n * false)\r\n */\r\nconst ngbFocusTrap = (zone, element, stopFocusTrap$, refocusOnClick = false) => {\r\n zone.runOutsideAngular(() => {\r\n // last focused element\r\n const lastFocusedElement$ = fromEvent(element, 'focusin').pipe(takeUntil(stopFocusTrap$), map(e => e.target));\r\n // 'tab' / 'shift+tab' stream\r\n fromEvent(element, 'keydown')\r\n .pipe(takeUntil(stopFocusTrap$), \r\n // tslint:disable:deprecation\r\n filter(e => e.which === Key.Tab), \r\n // tslint:enable:deprecation\r\n withLatestFrom(lastFocusedElement$))\r\n .subscribe(([tabEvent, focusedElement]) => {\r\n const [first, last] = getFocusableBoundaryElements(element);\r\n if ((focusedElement === first || focusedElement === element) && tabEvent.shiftKey) {\r\n last.focus();\r\n tabEvent.preventDefault();\r\n }\r\n if (focusedElement === last && !tabEvent.shiftKey) {\r\n first.focus();\r\n tabEvent.preventDefault();\r\n }\r\n });\r\n // inside click\r\n if (refocusOnClick) {\r\n fromEvent(element, 'click')\r\n .pipe(takeUntil(stopFocusTrap$), withLatestFrom(lastFocusedElement$), map(arr => arr[1]))\r\n .subscribe(lastFocusedElement => lastFocusedElement.focus());\r\n }\r\n });\r\n};\n\n// previous version:\r\n// https://github.com/angular-ui/bootstrap/blob/07c31d0731f7cb068a1932b8e01d2312b796b4ec/src/position/position.js\r\nclass Positioning {\r\n getAllStyles(element) { return window.getComputedStyle(element); }\r\n getStyle(element, prop) { return this.getAllStyles(element)[prop]; }\r\n isStaticPositioned(element) {\r\n return (this.getStyle(element, 'position') || 'static') === 'static';\r\n }\r\n offsetParent(element) {\r\n let offsetParentEl = element.offsetParent || document.documentElement;\r\n while (offsetParentEl && offsetParentEl !== document.documentElement && this.isStaticPositioned(offsetParentEl)) {\r\n offsetParentEl = offsetParentEl.offsetParent;\r\n }\r\n return offsetParentEl || document.documentElement;\r\n }\r\n position(element, round = true) {\r\n let elPosition;\r\n let parentOffset = { width: 0, height: 0, top: 0, bottom: 0, left: 0, right: 0 };\r\n if (this.getStyle(element, 'position') === 'fixed') {\r\n elPosition = element.getBoundingClientRect();\r\n elPosition = {\r\n top: elPosition.top,\r\n bottom: elPosition.bottom,\r\n left: elPosition.left,\r\n right: elPosition.right,\r\n height: elPosition.height,\r\n width: elPosition.width\r\n };\r\n }\r\n else {\r\n const offsetParentEl = this.offsetParent(element);\r\n elPosition = this.offset(element, false);\r\n if (offsetParentEl !== document.documentElement) {\r\n parentOffset = this.offset(offsetParentEl, false);\r\n }\r\n parentOffset.top += offsetParentEl.clientTop;\r\n parentOffset.left += offsetParentEl.clientLeft;\r\n }\r\n elPosition.top -= parentOffset.top;\r\n elPosition.bottom -= parentOffset.top;\r\n elPosition.left -= parentOffset.left;\r\n elPosition.right -= parentOffset.left;\r\n if (round) {\r\n elPosition.top = Math.round(elPosition.top);\r\n elPosition.bottom = Math.round(elPosition.bottom);\r\n elPosition.left = Math.round(elPosition.left);\r\n elPosition.right = Math.round(elPosition.right);\r\n }\r\n return elPosition;\r\n }\r\n offset(element, round = true) {\r\n const elBcr = element.getBoundingClientRect();\r\n const viewportOffset = {\r\n top: window.pageYOffset - document.documentElement.clientTop,\r\n left: window.pageXOffset - document.documentElement.clientLeft\r\n };\r\n let elOffset = {\r\n height: elBcr.height || element.offsetHeight,\r\n width: elBcr.width || element.offsetWidth,\r\n top: elBcr.top + viewportOffset.top,\r\n bottom: elBcr.bottom + viewportOffset.top,\r\n left: elBcr.left + viewportOffset.left,\r\n right: elBcr.right + viewportOffset.left\r\n };\r\n if (round) {\r\n elOffset.height = Math.round(elOffset.height);\r\n elOffset.width = Math.round(elOffset.width);\r\n elOffset.top = Math.round(elOffset.top);\r\n elOffset.bottom = Math.round(elOffset.bottom);\r\n elOffset.left = Math.round(elOffset.left);\r\n elOffset.right = Math.round(elOffset.right);\r\n }\r\n return elOffset;\r\n }\r\n /*\r\n Return false if the element to position is outside the viewport\r\n */\r\n positionElements(hostElement, targetElement, placement, appendToBody) {\r\n const [placementPrimary = 'top', placementSecondary = 'center'] = placement.split('-');\r\n const hostElPosition = appendToBody ? this.offset(hostElement, false) : this.position(hostElement, false);\r\n const targetElStyles = this.getAllStyles(targetElement);\r\n const marginTop = parseFloat(targetElStyles.marginTop);\r\n const marginBottom = parseFloat(targetElStyles.marginBottom);\r\n const marginLeft = parseFloat(targetElStyles.marginLeft);\r\n const marginRight = parseFloat(targetElStyles.marginRight);\r\n let topPosition = 0;\r\n let leftPosition = 0;\r\n switch (placementPrimary) {\r\n case 'top':\r\n topPosition = (hostElPosition.top - (targetElement.offsetHeight + marginTop + marginBottom));\r\n break;\r\n case 'bottom':\r\n topPosition = (hostElPosition.top + hostElPosition.height);\r\n break;\r\n case 'left':\r\n leftPosition = (hostElPosition.left - (targetElement.offsetWidth + marginLeft + marginRight));\r\n break;\r\n case 'right':\r\n leftPosition = (hostElPosition.left + hostElPosition.width);\r\n break;\r\n }\r\n switch (placementSecondary) {\r\n case 'top':\r\n topPosition = hostElPosition.top;\r\n break;\r\n case 'bottom':\r\n topPosition = hostElPosition.top + hostElPosition.height - targetElement.offsetHeight;\r\n break;\r\n case 'left':\r\n leftPosition = hostElPosition.left;\r\n break;\r\n case 'right':\r\n leftPosition = hostElPosition.left + hostElPosition.width - targetElement.offsetWidth;\r\n break;\r\n case 'center':\r\n if (placementPrimary === 'top' || placementPrimary === 'bottom') {\r\n leftPosition = (hostElPosition.left + hostElPosition.width / 2 - targetElement.offsetWidth / 2);\r\n }\r\n else {\r\n topPosition = (hostElPosition.top + hostElPosition.height / 2 - targetElement.offsetHeight / 2);\r\n }\r\n break;\r\n }\r\n /// The translate3d/gpu acceleration render a blurry text on chrome, the next line is commented until a browser fix\r\n // targetElement.style.transform = `translate3d(${Math.round(leftPosition)}px, ${Math.floor(topPosition)}px, 0px)`;\r\n targetElement.style.transform = `translate(${Math.round(leftPosition)}px, ${Math.round(topPosition)}px)`;\r\n // Check if the targetElement is inside the viewport\r\n const targetElBCR = targetElement.getBoundingClientRect();\r\n const html = document.documentElement;\r\n const windowHeight = window.innerHeight || html.clientHeight;\r\n const windowWidth = window.innerWidth || html.clientWidth;\r\n return targetElBCR.left >= 0 && targetElBCR.top >= 0 && targetElBCR.right <= windowWidth &&\r\n targetElBCR.bottom <= windowHeight;\r\n }\r\n}\r\nconst placementSeparator = /\\s+/;\r\nconst positionService = new Positioning();\r\n/*\r\n * Accept the placement array and applies the appropriate placement dependent on the viewport.\r\n * Returns the applied placement.\r\n * In case of auto placement, placements are selected in order\r\n * 'top', 'bottom', 'left', 'right',\r\n * 'top-left', 'top-right',\r\n * 'bottom-left', 'bottom-right',\r\n * 'left-top', 'left-bottom',\r\n * 'right-top', 'right-bottom'.\r\n * */\r\nfunction positionElements(hostElement, targetElement, placement, appendToBody, baseClass) {\r\n let placementVals = Array.isArray(placement) ? placement : placement.split(placementSeparator);\r\n const allowedPlacements = [\r\n 'top', 'bottom', 'left', 'right', 'top-left', 'top-right', 'bottom-left', 'bottom-right', 'left-top', 'left-bottom',\r\n 'right-top', 'right-bottom'\r\n ];\r\n const classList = targetElement.classList;\r\n const addClassesToTarget = (targetPlacement) => {\r\n const [primary, secondary] = targetPlacement.split('-');\r\n const classes = [];\r\n if (baseClass) {\r\n classes.push(`${baseClass}-${primary}`);\r\n if (secondary) {\r\n classes.push(`${baseClass}-${primary}-${secondary}`);\r\n }\r\n classes.forEach((classname) => { classList.add(classname); });\r\n }\r\n return classes;\r\n };\r\n // Remove old placement classes to avoid issues\r\n if (baseClass) {\r\n allowedPlacements.forEach((placementToRemove) => { classList.remove(`${baseClass}-${placementToRemove}`); });\r\n }\r\n // replace auto placement with other placements\r\n let hasAuto = placementVals.findIndex(val => val === 'auto');\r\n if (hasAuto >= 0) {\r\n allowedPlacements.forEach(function (obj) {\r\n if (placementVals.find(val => val.search('^' + obj) !== -1) == null) {\r\n placementVals.splice(hasAuto++, 1, obj);\r\n }\r\n });\r\n }\r\n // coordinates where to position\r\n // Required for transform:\r\n const style = targetElement.style;\r\n style.position = 'absolute';\r\n style.top = '0';\r\n style.left = '0';\r\n style['will-change'] = 'transform';\r\n let testPlacement = null;\r\n let isInViewport = false;\r\n for (testPlacement of placementVals) {\r\n let addedClasses = addClassesToTarget(testPlacement);\r\n if (positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody)) {\r\n isInViewport = true;\r\n break;\r\n }\r\n // Remove the baseClasses for further calculation\r\n if (baseClass) {\r\n addedClasses.forEach((classname) => { classList.remove(classname); });\r\n }\r\n }\r\n if (!isInViewport) {\r\n // If nothing match, the first placement is the default one\r\n testPlacement = placementVals[0];\r\n addClassesToTarget(testPlacement);\r\n positionService.positionElements(hostElement, targetElement, testPlacement, appendToBody);\r\n }\r\n return testPlacement;\r\n}\n\nfunction NGB_DATEPICKER_PARSER_FORMATTER_FACTORY() {\r\n return new NgbDateISOParserFormatter();\r\n}\r\n/**\r\n * An abstract service for parsing and formatting dates for the\r\n * [`NgbInputDatepicker`](#/components/datepicker/api#NgbInputDatepicker) directive.\r\n * Converts between the internal `NgbDateStruct` model presentation and a `string` that is displayed in the\r\n * input element.\r\n *\r\n * When user types something in the input this service attempts to parse it into a `NgbDateStruct` object.\r\n * And vice versa, when users selects a date in the calendar with the mouse, it must be displayed as a `string`\r\n * in the input.\r\n *\r\n * Default implementation uses the ISO 8601 format, but you can provide another implementation via DI\r\n * to use an alternative string format or a custom parsing logic.\r\n *\r\n * See the [date format overview](#/components/datepicker/overview#date-model) for more details.\r\n */\r\nclass NgbDateParserFormatter {\r\n}\nNgbDateParserFormatter.ɵfac = function NgbDateParserFormatter_Factory(t) { return new (t || NgbDateParserFormatter)(); };\r\nNgbDateParserFormatter.ɵprov = ɵɵdefineInjectable({ factory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY, token: NgbDateParserFormatter, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateParserFormatter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_PARSER_FORMATTER_FACTORY }]\n }], null, null); })();\r\nclass NgbDateISOParserFormatter extends NgbDateParserFormatter {\r\n parse(value) {\r\n if (value != null) {\r\n const dateParts = value.trim().split('-');\r\n if (dateParts.length === 1 && isNumber(dateParts[0])) {\r\n return { year: toInteger(dateParts[0]), month: null, day: null };\r\n }\r\n else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {\r\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: null };\r\n }\r\n else if (dateParts.length === 3 && isNumber(dateParts[0]) && isNumber(dateParts[1]) && isNumber(dateParts[2])) {\r\n return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: toInteger(dateParts[2]) };\r\n }\r\n }\r\n return null;\r\n }\r\n format(date) {\r\n return date ?\r\n `${date.year}-${isNumber(date.month) ? padNumber(date.month) : ''}-${isNumber(date.day) ? padNumber(date.day) : ''}` :\r\n '';\r\n }\r\n}\nNgbDateISOParserFormatter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateISOParserFormatter_BaseFactory; return function NgbDateISOParserFormatter_Factory(t) { return (ɵNgbDateISOParserFormatter_BaseFactory || (ɵNgbDateISOParserFormatter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateISOParserFormatter)))(t || NgbDateISOParserFormatter); }; }();\nNgbDateISOParserFormatter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateISOParserFormatter, factory: NgbDateISOParserFormatter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateISOParserFormatter, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * A configuration service for the [`NgbDatepickerInput`](#/components/datepicker/api#NgbDatepicker) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the datepicker inputs used in the application.\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbInputDatepickerConfig extends NgbDatepickerConfig {\r\n constructor() {\r\n super(...arguments);\r\n this.autoClose = true;\r\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\r\n this.restoreFocus = true;\r\n }\r\n}\nNgbInputDatepickerConfig.ɵfac = /*@__PURE__*/ function () { let ɵNgbInputDatepickerConfig_BaseFactory; return function NgbInputDatepickerConfig_Factory(t) { return (ɵNgbInputDatepickerConfig_BaseFactory || (ɵNgbInputDatepickerConfig_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbInputDatepickerConfig)))(t || NgbInputDatepickerConfig); }; }();\r\nNgbInputDatepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbInputDatepickerConfig_Factory() { return new NgbInputDatepickerConfig(); }, token: NgbInputDatepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbInputDatepickerConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n\n/**\r\n * A directive that allows to stick a datepicker popup to an input field.\r\n *\r\n * Manages interaction with the input field itself, does value formatting and provides forms integration.\r\n */\r\nclass NgbInputDatepicker {\r\n constructor(_parserFormatter, _elRef, _vcRef, _renderer, _cfr, _ngZone, _calendar, _dateAdapter, _document, _changeDetector, config) {\r\n this._parserFormatter = _parserFormatter;\r\n this._elRef = _elRef;\r\n this._vcRef = _vcRef;\r\n this._renderer = _renderer;\r\n this._cfr = _cfr;\r\n this._ngZone = _ngZone;\r\n this._calendar = _calendar;\r\n this._dateAdapter = _dateAdapter;\r\n this._document = _document;\r\n this._changeDetector = _changeDetector;\r\n this._cRef = null;\r\n this._disabled = false;\r\n this._elWithFocus = null;\r\n this._model = null;\r\n /**\r\n * An event emitted when user selects a date using keyboard or mouse.\r\n *\r\n * The payload of the event is currently selected `NgbDate`.\r\n *\r\n * @since 1.1.1\r\n */\r\n this.dateSelect = new EventEmitter();\r\n /**\r\n * Event emitted right after the navigation happens and displayed month changes.\r\n *\r\n * See [`NgbDatepickerNavigateEvent`](#/components/datepicker/api#NgbDatepickerNavigateEvent) for the payload info.\r\n */\r\n this.navigate = new EventEmitter();\r\n /**\r\n * An event fired after closing datepicker window.\r\n *\r\n * @since 4.2.0\r\n */\r\n this.closed = new EventEmitter();\r\n this._onChange = (_) => { };\r\n this._onTouched = () => { };\r\n this._validatorChange = () => { };\r\n ['autoClose', 'container', 'positionTarget', 'placement'].forEach(input => this[input] = config[input]);\r\n this._zoneSubscription = _ngZone.onStable.subscribe(() => this._updatePopupPosition());\r\n }\r\n /**\r\n * If `true`, weekdays will be displayed.\r\n *\r\n * @deprecated 9.1.0, please use 'weekdays' instead\r\n */\r\n set showWeekdays(weekdays) {\r\n this.weekdays = weekdays;\r\n this._showWeekdays = weekdays;\r\n }\r\n get showWeekdays() { return this._showWeekdays; }\r\n get disabled() {\r\n return this._disabled;\r\n }\r\n set disabled(value) {\r\n this._disabled = value === '' || (value && value !== 'false');\r\n if (this.isOpen()) {\r\n this._cRef.instance.setDisabledState(this._disabled);\r\n }\r\n }\r\n registerOnChange(fn) { this._onChange = fn; }\r\n registerOnTouched(fn) { this._onTouched = fn; }\r\n registerOnValidatorChange(fn) { this._validatorChange = fn; }\r\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\r\n validate(c) {\r\n const { value } = c;\r\n if (value != null) {\r\n const ngbDate = this._fromDateStruct(this._dateAdapter.fromModel(value));\r\n if (!ngbDate) {\r\n return { 'ngbDate': { invalid: value } };\r\n }\r\n if (this.minDate && ngbDate.before(NgbDate.from(this.minDate))) {\r\n return { 'ngbDate': { minDate: { minDate: this.minDate, actual: value } } };\r\n }\r\n if (this.maxDate && ngbDate.after(NgbDate.from(this.maxDate))) {\r\n return { 'ngbDate': { maxDate: { maxDate: this.maxDate, actual: value } } };\r\n }\r\n }\r\n return null;\r\n }\r\n writeValue(value) {\r\n this._model = this._fromDateStruct(this._dateAdapter.fromModel(value));\r\n this._writeModelValue(this._model);\r\n }\r\n manualDateChange(value, updateView = false) {\r\n const inputValueChanged = value !== this._inputValue;\r\n if (inputValueChanged) {\r\n this._inputValue = value;\r\n this._model = this._fromDateStruct(this._parserFormatter.parse(value));\r\n }\r\n if (inputValueChanged || !updateView) {\r\n this._onChange(this._model ? this._dateAdapter.toModel(this._model) : (value === '' ? null : value));\r\n }\r\n if (updateView && this._model) {\r\n this._writeModelValue(this._model);\r\n }\r\n }\r\n isOpen() { return !!this._cRef; }\r\n /**\r\n * Opens the datepicker popup.\r\n *\r\n * If the related form control contains a valid date, the corresponding month will be opened.\r\n */\r\n open() {\r\n if (!this.isOpen()) {\r\n const cf = this._cfr.resolveComponentFactory(NgbDatepicker);\r\n this._cRef = this._vcRef.createComponent(cf);\r\n this._applyPopupStyling(this._cRef.location.nativeElement);\r\n this._applyDatepickerInputs(this._cRef.instance);\r\n this._subscribeForDatepickerOutputs(this._cRef.instance);\r\n this._cRef.instance.ngOnInit();\r\n this._cRef.instance.writeValue(this._dateAdapter.toModel(this._model));\r\n // date selection event handling\r\n this._cRef.instance.registerOnChange((selectedDate) => {\r\n this.writeValue(selectedDate);\r\n this._onChange(selectedDate);\r\n this._onTouched();\r\n });\r\n this._cRef.changeDetectorRef.detectChanges();\r\n this._cRef.instance.setDisabledState(this.disabled);\r\n if (this.container === 'body') {\r\n this._document.querySelector(this.container).appendChild(this._cRef.location.nativeElement);\r\n }\r\n // focus handling\r\n this._elWithFocus = this._document.activeElement;\r\n ngbFocusTrap(this._ngZone, this._cRef.location.nativeElement, this.closed, true);\r\n this._cRef.instance.focus();\r\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.closed, [], [this._elRef.nativeElement, this._cRef.location.nativeElement]);\r\n }\r\n }\r\n /**\r\n * Closes the datepicker popup.\r\n */\r\n close() {\r\n if (this.isOpen()) {\r\n this._vcRef.remove(this._vcRef.indexOf(this._cRef.hostView));\r\n this._cRef = null;\r\n this.closed.emit();\r\n this._changeDetector.markForCheck();\r\n // restore focus\r\n let elementToFocus = this._elWithFocus;\r\n if (isString(this.restoreFocus)) {\r\n elementToFocus = this._document.querySelector(this.restoreFocus);\r\n }\r\n else if (this.restoreFocus !== undefined) {\r\n elementToFocus = this.restoreFocus;\r\n }\r\n // in IE document.activeElement can contain an object without 'focus()' sometimes\r\n if (elementToFocus && elementToFocus['focus']) {\r\n elementToFocus.focus();\r\n }\r\n else {\r\n this._document.body.focus();\r\n }\r\n }\r\n }\r\n /**\r\n * Toggles the datepicker popup.\r\n */\r\n toggle() {\r\n if (this.isOpen()) {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n /**\r\n * Navigates to the provided date.\r\n *\r\n * With the default calendar we use ISO 8601: 'month' is 1=Jan ... 12=Dec.\r\n * If nothing or invalid date provided calendar will open current month.\r\n *\r\n * Use the `[startDate]` input as an alternative.\r\n */\r\n navigateTo(date) {\r\n if (this.isOpen()) {\r\n this._cRef.instance.navigateTo(date);\r\n }\r\n }\r\n onBlur() { this._onTouched(); }\r\n onFocus() { this._elWithFocus = this._elRef.nativeElement; }\r\n ngOnChanges(changes) {\r\n if (changes['minDate'] || changes['maxDate']) {\r\n this._validatorChange();\r\n if (this.isOpen()) {\r\n if (changes['minDate']) {\r\n this._cRef.instance.minDate = this.minDate;\r\n }\r\n if (changes['maxDate']) {\r\n this._cRef.instance.maxDate = this.maxDate;\r\n }\r\n this._cRef.instance.ngOnChanges(changes);\r\n }\r\n }\r\n if (changes['datepickerClass']) {\r\n const { currentValue, previousValue } = changes['datepickerClass'];\r\n this._applyPopupClass(currentValue, previousValue);\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.close();\r\n this._zoneSubscription.unsubscribe();\r\n }\r\n _applyDatepickerInputs(datepickerInstance) {\r\n ['dayTemplate', 'dayTemplateData', 'displayMonths', 'firstDayOfWeek', 'footerTemplate', 'markDisabled', 'minDate',\r\n 'maxDate', 'navigation', 'outsideDays', 'showNavigation', 'showWeekNumbers', 'weekdays']\r\n .forEach((optionName) => {\r\n if (this[optionName] !== undefined) {\r\n datepickerInstance[optionName] = this[optionName];\r\n }\r\n });\r\n datepickerInstance.startDate = this.startDate || this._model;\r\n }\r\n _applyPopupClass(newClass, oldClass) {\r\n var _a;\r\n const popupEl = (_a = this._cRef) === null || _a === void 0 ? void 0 : _a.location.nativeElement;\r\n if (popupEl) {\r\n if (newClass) {\r\n this._renderer.addClass(popupEl, newClass);\r\n }\r\n if (oldClass) {\r\n this._renderer.removeClass(popupEl, oldClass);\r\n }\r\n }\r\n }\r\n _applyPopupStyling(nativeElement) {\r\n this._renderer.addClass(nativeElement, 'dropdown-menu');\r\n this._renderer.addClass(nativeElement, 'show');\r\n if (this.container === 'body') {\r\n this._renderer.addClass(nativeElement, 'ngb-dp-body');\r\n }\r\n this._applyPopupClass(this.datepickerClass);\r\n }\r\n _subscribeForDatepickerOutputs(datepickerInstance) {\r\n datepickerInstance.navigate.subscribe(navigateEvent => this.navigate.emit(navigateEvent));\r\n datepickerInstance.dateSelect.subscribe(date => {\r\n this.dateSelect.emit(date);\r\n if (this.autoClose === true || this.autoClose === 'inside') {\r\n this.close();\r\n }\r\n });\r\n }\r\n _writeModelValue(model) {\r\n const value = this._parserFormatter.format(model);\r\n this._inputValue = value;\r\n this._renderer.setProperty(this._elRef.nativeElement, 'value', value);\r\n if (this.isOpen()) {\r\n this._cRef.instance.writeValue(this._dateAdapter.toModel(model));\r\n this._onTouched();\r\n }\r\n }\r\n _fromDateStruct(date) {\r\n const ngbDate = date ? new NgbDate(date.year, date.month, date.day) : null;\r\n return this._calendar.isValid(ngbDate) ? ngbDate : null;\r\n }\r\n _updatePopupPosition() {\r\n if (!this._cRef) {\r\n return;\r\n }\r\n let hostElement;\r\n if (isString(this.positionTarget)) {\r\n hostElement = this._document.querySelector(this.positionTarget);\r\n }\r\n else if (this.positionTarget instanceof HTMLElement) {\r\n hostElement = this.positionTarget;\r\n }\r\n else {\r\n hostElement = this._elRef.nativeElement;\r\n }\r\n if (this.positionTarget && !hostElement) {\r\n throw new Error('ngbDatepicker could not find element declared in [positionTarget] to position against.');\r\n }\r\n positionElements(hostElement, this._cRef.location.nativeElement, this.placement, this.container === 'body');\r\n }\r\n}\nNgbInputDatepicker.ɵfac = function NgbInputDatepicker_Factory(t) { return new (t || NgbInputDatepicker)(ɵngcc0.ɵɵdirectiveInject(NgbDateParserFormatter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(NgbCalendar), ɵngcc0.ɵɵdirectiveInject(NgbDateAdapter), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbInputDatepickerConfig)); };\nNgbInputDatepicker.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbInputDatepicker, selectors: [[\"input\", \"ngbDatepicker\", \"\"]], hostVars: 1, hostBindings: function NgbInputDatepicker_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"input\", function NgbInputDatepicker_input_HostBindingHandler($event) { return ctx.manualDateChange($event.target.value); })(\"change\", function NgbInputDatepicker_change_HostBindingHandler($event) { return ctx.manualDateChange($event.target.value, true); })(\"focus\", function NgbInputDatepicker_focus_HostBindingHandler() { return ctx.onFocus(); })(\"blur\", function NgbInputDatepicker_blur_HostBindingHandler() { return ctx.onBlur(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"disabled\", ctx.disabled);\n } }, inputs: { showWeekdays: \"showWeekdays\", weekdays: \"weekdays\", disabled: \"disabled\", autoClose: \"autoClose\", datepickerClass: \"datepickerClass\", dayTemplate: \"dayTemplate\", dayTemplateData: \"dayTemplateData\", displayMonths: \"displayMonths\", firstDayOfWeek: \"firstDayOfWeek\", footerTemplate: \"footerTemplate\", markDisabled: \"markDisabled\", minDate: \"minDate\", maxDate: \"maxDate\", navigation: \"navigation\", outsideDays: \"outsideDays\", placement: \"placement\", restoreFocus: \"restoreFocus\", showWeekNumbers: \"showWeekNumbers\", startDate: \"startDate\", container: \"container\", positionTarget: \"positionTarget\" }, outputs: { dateSelect: \"dateSelect\", navigate: \"navigate\", closed: \"closed\" }, exportAs: [\"ngbDatepicker\"], features: [ɵngcc0.ɵɵProvidersFeature([\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig }\n ]), ɵngcc0.ɵɵNgOnChangesFeature] });\r\nNgbInputDatepicker.ctorParameters = () => [\r\n { type: NgbDateParserFormatter },\r\n { type: ElementRef },\r\n { type: ViewContainerRef },\r\n { type: Renderer2 },\r\n { type: ComponentFactoryResolver },\r\n { type: NgZone },\r\n { type: NgbCalendar },\r\n { type: NgbDateAdapter },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: ChangeDetectorRef },\r\n { type: NgbInputDatepickerConfig }\r\n];\r\nNgbInputDatepicker.propDecorators = {\r\n autoClose: [{ type: Input }],\r\n datepickerClass: [{ type: Input }],\r\n dayTemplate: [{ type: Input }],\r\n dayTemplateData: [{ type: Input }],\r\n displayMonths: [{ type: Input }],\r\n firstDayOfWeek: [{ type: Input }],\r\n footerTemplate: [{ type: Input }],\r\n markDisabled: [{ type: Input }],\r\n minDate: [{ type: Input }],\r\n maxDate: [{ type: Input }],\r\n navigation: [{ type: Input }],\r\n outsideDays: [{ type: Input }],\r\n placement: [{ type: Input }],\r\n restoreFocus: [{ type: Input }],\r\n showWeekdays: [{ type: Input }],\r\n showWeekNumbers: [{ type: Input }],\r\n startDate: [{ type: Input }],\r\n container: [{ type: Input }],\r\n positionTarget: [{ type: Input }],\r\n weekdays: [{ type: Input }],\r\n dateSelect: [{ type: Output }],\r\n navigate: [{ type: Output }],\r\n closed: [{ type: Output }],\r\n disabled: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbInputDatepicker, [{\n type: Directive,\n args: [{\n selector: 'input[ngbDatepicker]',\n exportAs: 'ngbDatepicker',\n host: {\n '(input)': 'manualDateChange($event.target.value)',\n '(change)': 'manualDateChange($event.target.value, true)',\n '(focus)': 'onFocus()',\n '(blur)': 'onBlur()',\n '[disabled]': 'disabled'\n },\n providers: [\n { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgbInputDatepicker), multi: true },\n { provide: NgbDatepickerConfig, useExisting: NgbInputDatepickerConfig }\n ]\n }]\n }], function () { return [{ type: NgbDateParserFormatter }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.NgZone }, { type: NgbCalendar }, { type: NgbDateAdapter }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: NgbInputDatepickerConfig }]; }, { dateSelect: [{\n type: Output\n }], navigate: [{\n type: Output\n }], closed: [{\n type: Output\n }], showWeekdays: [{\n type: Input\n }], weekdays: [{\n type: Input\n }], disabled: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], datepickerClass: [{\n type: Input\n }], dayTemplate: [{\n type: Input\n }], dayTemplateData: [{\n type: Input\n }], displayMonths: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], markDisabled: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], navigation: [{\n type: Input\n }], outsideDays: [{\n type: Input\n }], placement: [{\n type: Input\n }], restoreFocus: [{\n type: Input\n }], showWeekNumbers: [{\n type: Input\n }], startDate: [{\n type: Input\n }], container: [{\n type: Input\n }], positionTarget: [{\n type: Input\n }] }); })();\n\nclass NgbDatepickerDayView {\r\n constructor(i18n) {\r\n this.i18n = i18n;\r\n }\r\n isMuted() { return !this.selected && (this.date.month !== this.currentMonth || this.disabled); }\r\n}\nNgbDatepickerDayView.ɵfac = function NgbDatepickerDayView_Factory(t) { return new (t || NgbDatepickerDayView)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n)); };\nNgbDatepickerDayView.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerDayView, selectors: [[\"\", \"ngbDatepickerDayView\", \"\"]], hostAttrs: [1, \"btn-light\"], hostVars: 10, hostBindings: function NgbDatepickerDayView_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"bg-primary\", ctx.selected)(\"text-white\", ctx.selected)(\"text-muted\", ctx.isMuted())(\"outside\", ctx.isMuted())(\"active\", ctx.focused);\n } }, inputs: { currentMonth: \"currentMonth\", date: \"date\", disabled: \"disabled\", focused: \"focused\", selected: \"selected\" }, attrs: _c20, decls: 1, vars: 1, template: function NgbDatepickerDayView_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtext(0);\n } if (rf & 2) {\n ɵngcc0.ɵɵtextInterpolate(ctx.i18n.getDayNumerals(ctx.date));\n } }, styles: [\"[ngbDatepickerDayView]{background:transparent;border-radius:.25rem;height:2rem;line-height:2rem;text-align:center;width:2rem}[ngbDatepickerDayView].outside{opacity:.5}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbDatepickerDayView.ctorParameters = () => [\r\n { type: NgbDatepickerI18n }\r\n];\r\nNgbDatepickerDayView.propDecorators = {\r\n currentMonth: [{ type: Input }],\r\n date: [{ type: Input }],\r\n disabled: [{ type: Input }],\r\n focused: [{ type: Input }],\r\n selected: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerDayView, [{\n type: Component,\n args: [{\n selector: '[ngbDatepickerDayView]',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'btn-light',\n '[class.bg-primary]': 'selected',\n '[class.text-white]': 'selected',\n '[class.text-muted]': 'isMuted()',\n '[class.outside]': 'isMuted()',\n '[class.active]': 'focused'\n },\n template: `{{ i18n.getDayNumerals(date) }}`,\n styles: [\"[ngbDatepickerDayView]{background:transparent;border-radius:.25rem;height:2rem;line-height:2rem;text-align:center;width:2rem}[ngbDatepickerDayView].outside{opacity:.5}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }]; }, { currentMonth: [{\n type: Input\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], focused: [{\n type: Input\n }], selected: [{\n type: Input\n }] }); })();\n\nclass NgbDatepickerNavigationSelect {\r\n constructor(i18n, _renderer) {\r\n this.i18n = i18n;\r\n this._renderer = _renderer;\r\n this.select = new EventEmitter();\r\n this._month = -1;\r\n this._year = -1;\r\n }\r\n changeMonth(month) { this.select.emit(new NgbDate(this.date.year, toInteger(month), 1)); }\r\n changeYear(year) { this.select.emit(new NgbDate(toInteger(year), this.date.month, 1)); }\r\n ngAfterViewChecked() {\r\n if (this.date) {\r\n if (this.date.month !== this._month) {\r\n this._month = this.date.month;\r\n this._renderer.setProperty(this.monthSelect.nativeElement, 'value', this._month);\r\n }\r\n if (this.date.year !== this._year) {\r\n this._year = this.date.year;\r\n this._renderer.setProperty(this.yearSelect.nativeElement, 'value', this._year);\r\n }\r\n }\r\n }\r\n}\nNgbDatepickerNavigationSelect.ɵfac = function NgbDatepickerNavigationSelect_Factory(t) { return new (t || NgbDatepickerNavigationSelect)(ɵngcc0.ɵɵdirectiveInject(NgbDatepickerI18n), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nNgbDatepickerNavigationSelect.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbDatepickerNavigationSelect, selectors: [[\"ngb-datepicker-navigation-select\"]], viewQuery: function NgbDatepickerNavigationSelect_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c21, 7, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c22, 7, ElementRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.monthSelect = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.yearSelect = _t.first);\n } }, inputs: { date: \"date\", disabled: \"disabled\", months: \"months\", years: \"years\" }, outputs: { select: \"select\" }, decls: 6, vars: 4, consts: function () { let i18n_23; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_24 = goog.getMsg(\"Select month\");\n i18n_23 = MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_24;\n }\n else {\n i18n_23 = $localize `:@@ngb.datepicker.select-month␟1dbc84807f35518112f62e5775d1daebd3d8462b␟2253869508135064750:Select month`;\n } let i18n_25; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_26 = goog.getMsg(\"Select month\");\n i18n_25 = MSG_EXTERNAL_ngb_datepicker_select_month$$FESM2015_NG_BOOTSTRAP_JS_26;\n }\n else {\n i18n_25 = $localize `:@@ngb.datepicker.select-month␟1dbc84807f35518112f62e5775d1daebd3d8462b␟2253869508135064750:Select month`;\n } let i18n_27; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_28 = goog.getMsg(\"Select year\");\n i18n_27 = MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_28;\n }\n else {\n i18n_27 = $localize `:@@ngb.datepicker.select-year␟8ceb09d002bf0c5d1cac171dfbffe1805d2b3962␟8852264961585484321:Select year`;\n } let i18n_29; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_30 = goog.getMsg(\"Select year\");\n i18n_29 = MSG_EXTERNAL_ngb_datepicker_select_year$$FESM2015_NG_BOOTSTRAP_JS_30;\n }\n else {\n i18n_29 = $localize `:@@ngb.datepicker.select-year␟8ceb09d002bf0c5d1cac171dfbffe1805d2b3962␟8852264961585484321:Select year`;\n } return [[\"aria-label\", i18n_23, \"title\", i18n_25, 1, \"custom-select\", 3, \"disabled\", \"change\"], [\"month\", \"\"], [3, \"value\", 4, \"ngFor\", \"ngForOf\"], [\"aria-label\", i18n_27, \"title\", i18n_29, 1, \"custom-select\", 3, \"disabled\", \"change\"], [\"year\", \"\"], [3, \"value\"]]; }, template: function NgbDatepickerNavigationSelect_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"select\", 0, 1);\n ɵngcc0.ɵɵlistener(\"change\", function NgbDatepickerNavigationSelect_Template_select_change_0_listener($event) { return ctx.changeMonth($event.target.value); });\n ɵngcc0.ɵɵtemplate(2, NgbDatepickerNavigationSelect_option_2_Template, 2, 3, \"option\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(3, \"select\", 3, 4);\n ɵngcc0.ɵɵlistener(\"change\", function NgbDatepickerNavigationSelect_Template_select_change_3_listener($event) { return ctx.changeYear($event.target.value); });\n ɵngcc0.ɵɵtemplate(5, NgbDatepickerNavigationSelect_option_5_Template, 2, 2, \"option\", 2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.months);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.years);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc2.NgSelectOption, ɵngcc2.ɵNgSelectMultipleOption], styles: [\"ngb-datepicker-navigation-select>.custom-select{flex:1 1 auto;font-size:.875rem;height:1.85rem;padding:0 .5rem}ngb-datepicker-navigation-select>.custom-select:focus{z-index:1}ngb-datepicker-navigation-select>.custom-select::-ms-value{background-color:transparent!important}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbDatepickerNavigationSelect.ctorParameters = () => [\r\n { type: NgbDatepickerI18n },\r\n { type: Renderer2 }\r\n];\r\nNgbDatepickerNavigationSelect.propDecorators = {\r\n date: [{ type: Input }],\r\n disabled: [{ type: Input }],\r\n months: [{ type: Input }],\r\n years: [{ type: Input }],\r\n select: [{ type: Output }],\r\n monthSelect: [{ type: ViewChild, args: ['month', { static: true, read: ElementRef },] }],\r\n yearSelect: [{ type: ViewChild, args: ['year', { static: true, read: ElementRef },] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerNavigationSelect, [{\n type: Component,\n args: [{\n selector: 'ngb-datepicker-navigation-select',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `\r\n \r\n `,\n styles: [\"ngb-datepicker-navigation-select>.custom-select{flex:1 1 auto;font-size:.875rem;height:1.85rem;padding:0 .5rem}ngb-datepicker-navigation-select>.custom-select:focus{z-index:1}ngb-datepicker-navigation-select>.custom-select::-ms-value{background-color:transparent!important}\"]\n }]\n }], function () { return [{ type: NgbDatepickerI18n }, { type: ɵngcc0.Renderer2 }]; }, { select: [{\n type: Output\n }], date: [{\n type: Input\n }], disabled: [{\n type: Input\n }], months: [{\n type: Input\n }], years: [{\n type: Input\n }], monthSelect: [{\n type: ViewChild,\n args: ['month', { static: true, read: ElementRef }]\n }], yearSelect: [{\n type: ViewChild,\n args: ['year', { static: true, read: ElementRef }]\n }] }); })();\n\nclass NgbCalendarHijri extends NgbCalendar {\r\n getDaysPerWeek() { return 7; }\r\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\r\n getWeeksPerMonth() { return 6; }\r\n getNext(date, period = 'd', number = 1) {\r\n date = new NgbDate(date.year, date.month, date.day);\r\n switch (period) {\r\n case 'y':\r\n date = this._setYear(date, date.year + number);\r\n date.month = 1;\r\n date.day = 1;\r\n return date;\r\n case 'm':\r\n date = this._setMonth(date, date.month + number);\r\n date.day = 1;\r\n return date;\r\n case 'd':\r\n return this._setDay(date, date.day + number);\r\n default:\r\n return date;\r\n }\r\n }\r\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\r\n getWeekday(date) {\r\n const day = this.toGregorian(date).getDay();\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n return day === 0 ? 7 : day;\r\n }\r\n getWeekNumber(week, firstDayOfWeek) {\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n if (firstDayOfWeek === 7) {\r\n firstDayOfWeek = 0;\r\n }\r\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\r\n const date = week[thursdayIndex];\r\n const jsDate = this.toGregorian(date);\r\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\r\n const time = jsDate.getTime();\r\n const MuhDate = this.toGregorian(new NgbDate(date.year, 1, 1)); // Compare with Muharram 1\r\n return Math.floor(Math.round((time - MuhDate.getTime()) / 86400000) / 7) + 1;\r\n }\r\n getToday() { return this.fromGregorian(new Date()); }\r\n isValid(date) {\r\n return date != null && isNumber(date.year) && isNumber(date.month) && isNumber(date.day) &&\r\n !isNaN(this.toGregorian(date).getTime());\r\n }\r\n _setDay(date, day) {\r\n day = +day;\r\n let mDays = this.getDaysPerMonth(date.month, date.year);\r\n if (day <= 0) {\r\n while (day <= 0) {\r\n date = this._setMonth(date, date.month - 1);\r\n mDays = this.getDaysPerMonth(date.month, date.year);\r\n day += mDays;\r\n }\r\n }\r\n else if (day > mDays) {\r\n while (day > mDays) {\r\n day -= mDays;\r\n date = this._setMonth(date, date.month + 1);\r\n mDays = this.getDaysPerMonth(date.month, date.year);\r\n }\r\n }\r\n date.day = day;\r\n return date;\r\n }\r\n _setMonth(date, month) {\r\n month = +month;\r\n date.year = date.year + Math.floor((month - 1) / 12);\r\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\r\n return date;\r\n }\r\n _setYear(date, year) {\r\n date.year = +year;\r\n return date;\r\n }\r\n}\nNgbCalendarHijri.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarHijri_BaseFactory; return function NgbCalendarHijri_Factory(t) { return (ɵNgbCalendarHijri_BaseFactory || (ɵNgbCalendarHijri_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarHijri)))(t || NgbCalendarHijri); }; }();\nNgbCalendarHijri.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarHijri, factory: NgbCalendarHijri.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarHijri, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * Checks if islamic year is a leap year\r\n */\r\nfunction isIslamicLeapYear(hYear) {\r\n return (14 + 11 * hYear) % 30 < 11;\r\n}\r\n/**\r\n * Checks if gregorian years is a leap year\r\n */\r\nfunction isGregorianLeapYear(gDate) {\r\n const year = gDate.getFullYear();\r\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\r\n}\r\n/**\r\n * Returns the start of Hijri Month.\r\n * `hMonth` is 0 for Muharram, 1 for Safar, etc.\r\n * `hYear` is any Hijri hYear.\r\n */\r\nfunction getIslamicMonthStart(hYear, hMonth) {\r\n return Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30.0);\r\n}\r\n/**\r\n * Returns the start of Hijri year.\r\n * `year` is any Hijri year.\r\n */\r\nfunction getIslamicYearStart(year) {\r\n return (year - 1) * 354 + Math.floor((3 + 11 * year) / 30.0);\r\n}\r\nfunction mod(a, b) {\r\n return a - b * Math.floor(a / b);\r\n}\r\n/**\r\n * The civil calendar is one type of Hijri calendars used in islamic countries.\r\n * Uses a fixed cycle of alternating 29- and 30-day months,\r\n * with a leap day added to the last month of 11 out of every 30 years.\r\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\r\n * All the calculations here are based on the equations from \"Calendrical Calculations\" By Edward M. Reingold, Nachum\r\n * Dershowitz.\r\n */\r\nconst GREGORIAN_EPOCH = 1721425.5;\r\nconst ISLAMIC_EPOCH = 1948439.5;\r\nclass NgbCalendarIslamicCivil extends NgbCalendarHijri {\r\n /**\r\n * Returns the equivalent islamic(civil) date value for a give input Gregorian date.\r\n * `gDate` is a JS Date to be converted to Hijri.\r\n */\r\n fromGregorian(gDate) {\r\n const gYear = gDate.getFullYear(), gMonth = gDate.getMonth(), gDay = gDate.getDate();\r\n let julianDay = GREGORIAN_EPOCH - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) +\r\n -Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\r\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear(gDate) ? -1 : -2) + gDay);\r\n julianDay = Math.floor(julianDay) + 0.5;\r\n const days = julianDay - ISLAMIC_EPOCH;\r\n const hYear = Math.floor((30 * days + 10646) / 10631.0);\r\n let hMonth = Math.ceil((days - 29 - getIslamicYearStart(hYear)) / 29.5);\r\n hMonth = Math.min(hMonth, 11);\r\n const hDay = Math.ceil(days - getIslamicMonthStart(hYear, hMonth)) + 1;\r\n return new NgbDate(hYear, hMonth + 1, hDay);\r\n }\r\n /**\r\n * Returns the equivalent JS date value for a give input islamic(civil) date.\r\n * `hDate` is an islamic(civil) date to be converted to Gregorian.\r\n */\r\n toGregorian(hDate) {\r\n const hYear = hDate.year;\r\n const hMonth = hDate.month - 1;\r\n const hDay = hDate.day;\r\n const julianDay = hDay + Math.ceil(29.5 * hMonth) + (hYear - 1) * 354 + Math.floor((3 + 11 * hYear) / 30) + ISLAMIC_EPOCH - 1;\r\n const wjd = Math.floor(julianDay - 0.5) + 0.5, depoch = wjd - GREGORIAN_EPOCH, quadricent = Math.floor(depoch / 146097), dqc = mod(depoch, 146097), cent = Math.floor(dqc / 36524), dcent = mod(dqc, 36524), quad = Math.floor(dcent / 1461), dquad = mod(dcent, 1461), yindex = Math.floor(dquad / 365);\r\n let year = quadricent * 400 + cent * 100 + quad * 4 + yindex;\r\n if (!(cent === 4 || yindex === 4)) {\r\n year++;\r\n }\r\n const gYearStart = GREGORIAN_EPOCH + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\r\n Math.floor((year - 1) / 400);\r\n const yearday = wjd - gYearStart;\r\n const tjd = GREGORIAN_EPOCH - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\r\n Math.floor((year - 1) / 400) + Math.floor(739 / 12 + (isGregorianLeapYear(new Date(year, 3, 1)) ? -1 : -2) + 1);\r\n const leapadj = wjd < tjd ? 0 : isGregorianLeapYear(new Date(year, 3, 1)) ? 1 : 2;\r\n const month = Math.floor(((yearday + leapadj) * 12 + 373) / 367);\r\n const tjd2 = GREGORIAN_EPOCH - 1 + 365 * (year - 1) + Math.floor((year - 1) / 4) - Math.floor((year - 1) / 100) +\r\n Math.floor((year - 1) / 400) +\r\n Math.floor((367 * month - 362) / 12 + (month <= 2 ? 0 : isGregorianLeapYear(new Date(year, month - 1, 1)) ? -1 : -2) +\r\n 1);\r\n const day = wjd - tjd2 + 1;\r\n return new Date(year, month - 1, day);\r\n }\r\n /**\r\n * Returns the number of days in a specific Hijri month.\r\n * `month` is 1 for Muharram, 2 for Safar, etc.\r\n * `year` is any Hijri year.\r\n */\r\n getDaysPerMonth(month, year) {\r\n year = year + Math.floor(month / 13);\r\n month = ((month - 1) % 12) + 1;\r\n let length = 29 + month % 2;\r\n if (month === 12 && isIslamicLeapYear(year)) {\r\n length++;\r\n }\r\n return length;\r\n }\r\n}\nNgbCalendarIslamicCivil.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarIslamicCivil_BaseFactory; return function NgbCalendarIslamicCivil_Factory(t) { return (ɵNgbCalendarIslamicCivil_BaseFactory || (ɵNgbCalendarIslamicCivil_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarIslamicCivil)))(t || NgbCalendarIslamicCivil); }; }();\nNgbCalendarIslamicCivil.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarIslamicCivil, factory: NgbCalendarIslamicCivil.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarIslamicCivil, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * Umalqura calendar is one type of Hijri calendars used in islamic countries.\r\n * This Calendar is used by Saudi Arabia for administrative purpose.\r\n * Unlike tabular calendars, the algorithm involves astronomical calculation, but it's still deterministic.\r\n * http://cldr.unicode.org/development/development-process/design-proposals/islamic-calendar-types\r\n */\r\nconst GREGORIAN_FIRST_DATE = new Date(1882, 10, 12);\r\nconst GREGORIAN_LAST_DATE = new Date(2174, 10, 25);\r\nconst HIJRI_BEGIN = 1300;\r\nconst HIJRI_END = 1600;\r\nconst ONE_DAY = 1000 * 60 * 60 * 24;\r\nconst MONTH_LENGTH = [\r\n // 1300-1304\r\n '101010101010', '110101010100', '111011001001', '011011010100', '011011101010',\r\n // 1305-1309\r\n '001101101100', '101010101101', '010101010101', '011010101001', '011110010010',\r\n // 1310-1314\r\n '101110101001', '010111010100', '101011011010', '010101011100', '110100101101',\r\n // 1315-1319\r\n '011010010101', '011101001010', '101101010100', '101101101010', '010110101101',\r\n // 1320-1324\r\n '010010101110', '101001001111', '010100010111', '011010001011', '011010100101',\r\n // 1325-1329\r\n '101011010101', '001011010110', '100101011011', '010010011101', '101001001101',\r\n // 1330-1334\r\n '110100100110', '110110010101', '010110101100', '100110110110', '001010111010',\r\n // 1335-1339\r\n '101001011011', '010100101011', '101010010101', '011011001010', '101011101001',\r\n // 1340-1344\r\n '001011110100', '100101110110', '001010110110', '100101010110', '101011001010',\r\n // 1345-1349\r\n '101110100100', '101111010010', '010111011001', '001011011100', '100101101101',\r\n // 1350-1354\r\n '010101001101', '101010100101', '101101010010', '101110100101', '010110110100',\r\n // 1355-1359\r\n '100110110110', '010101010111', '001010010111', '010101001011', '011010100011',\r\n // 1360-1364\r\n '011101010010', '101101100101', '010101101010', '101010101011', '010100101011',\r\n // 1365-1369\r\n '110010010101', '110101001010', '110110100101', '010111001010', '101011010110',\r\n // 1370-1374\r\n '100101010111', '010010101011', '100101001011', '101010100101', '101101010010',\r\n // 1375-1379\r\n '101101101010', '010101110101', '001001110110', '100010110111', '010001011011',\r\n // 1380-1384\r\n '010101010101', '010110101001', '010110110100', '100111011010', '010011011101',\r\n // 1385-1389\r\n '001001101110', '100100110110', '101010101010', '110101010100', '110110110010',\r\n // 1390-1394\r\n '010111010101', '001011011010', '100101011011', '010010101011', '101001010101',\r\n // 1395-1399\r\n '101101001001', '101101100100', '101101110001', '010110110100', '101010110101',\r\n // 1400-1404\r\n '101001010101', '110100100101', '111010010010', '111011001001', '011011010100',\r\n // 1405-1409\r\n '101011101001', '100101101011', '010010101011', '101010010011', '110101001001',\r\n // 1410-1414\r\n '110110100100', '110110110010', '101010111001', '010010111010', '101001011011',\r\n // 1415-1419\r\n '010100101011', '101010010101', '101100101010', '101101010101', '010101011100',\r\n // 1420-1424\r\n '010010111101', '001000111101', '100100011101', '101010010101', '101101001010',\r\n // 1425-1429\r\n '101101011010', '010101101101', '001010110110', '100100111011', '010010011011',\r\n // 1430-1434\r\n '011001010101', '011010101001', '011101010100', '101101101010', '010101101100',\r\n // 1435-1439\r\n '101010101101', '010101010101', '101100101001', '101110010010', '101110101001',\r\n // 1440-1444\r\n '010111010100', '101011011010', '010101011010', '101010101011', '010110010101',\r\n // 1445-1449\r\n '011101001001', '011101100100', '101110101010', '010110110101', '001010110110',\r\n // 1450-1454\r\n '101001010110', '111001001101', '101100100101', '101101010010', '101101101010',\r\n // 1455-1459\r\n '010110101101', '001010101110', '100100101111', '010010010111', '011001001011',\r\n // 1460-1464\r\n '011010100101', '011010101100', '101011010110', '010101011101', '010010011101',\r\n // 1465-1469\r\n '101001001101', '110100010110', '110110010101', '010110101010', '010110110101',\r\n // 1470-1474\r\n '001011011010', '100101011011', '010010101101', '010110010101', '011011001010',\r\n // 1475-1479\r\n '011011100100', '101011101010', '010011110101', '001010110110', '100101010110',\r\n // 1480-1484\r\n '101010101010', '101101010100', '101111010010', '010111011001', '001011101010',\r\n // 1485-1489\r\n '100101101101', '010010101101', '101010010101', '101101001010', '101110100101',\r\n // 1490-1494\r\n '010110110010', '100110110101', '010011010110', '101010010111', '010101000111',\r\n // 1495-1499\r\n '011010010011', '011101001001', '101101010101', '010101101010', '101001101011',\r\n // 1500-1504\r\n '010100101011', '101010001011', '110101000110', '110110100011', '010111001010',\r\n // 1505-1509\r\n '101011010110', '010011011011', '001001101011', '100101001011', '101010100101',\r\n // 1510-1514\r\n '101101010010', '101101101001', '010101110101', '000101110110', '100010110111',\r\n // 1515-1519\r\n '001001011011', '010100101011', '010101100101', '010110110100', '100111011010',\r\n // 1520-1524\r\n '010011101101', '000101101101', '100010110110', '101010100110', '110101010010',\r\n // 1525-1529\r\n '110110101001', '010111010100', '101011011010', '100101011011', '010010101011',\r\n // 1530-1534\r\n '011001010011', '011100101001', '011101100010', '101110101001', '010110110010',\r\n // 1535-1539\r\n '101010110101', '010101010101', '101100100101', '110110010010', '111011001001',\r\n // 1540-1544\r\n '011011010010', '101011101001', '010101101011', '010010101011', '101001010101',\r\n // 1545-1549\r\n '110100101001', '110101010100', '110110101010', '100110110101', '010010111010',\r\n // 1550-1554\r\n '101000111011', '010010011011', '101001001101', '101010101010', '101011010101',\r\n // 1555-1559\r\n '001011011010', '100101011101', '010001011110', '101000101110', '110010011010',\r\n // 1560-1564\r\n '110101010101', '011010110010', '011010111001', '010010111010', '101001011101',\r\n // 1565-1569\r\n '010100101101', '101010010101', '101101010010', '101110101000', '101110110100',\r\n // 1570-1574\r\n '010110111001', '001011011010', '100101011010', '101101001010', '110110100100',\r\n // 1575-1579\r\n '111011010001', '011011101000', '101101101010', '010101101101', '010100110101',\r\n // 1580-1584\r\n '011010010101', '110101001010', '110110101000', '110111010100', '011011011010',\r\n // 1585-1589\r\n '010101011011', '001010011101', '011000101011', '101100010101', '101101001010',\r\n // 1590-1594\r\n '101110010101', '010110101010', '101010101110', '100100101110', '110010001111',\r\n // 1595-1599\r\n '010100100111', '011010010101', '011010101010', '101011010110', '010101011101',\r\n // 1600\r\n '001010011101'\r\n];\r\nfunction getDaysDiff(date1, date2) {\r\n // Ignores the time part in date1 and date2:\r\n const time1 = Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());\r\n const time2 = Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());\r\n const diff = Math.abs(time1 - time2);\r\n return Math.round(diff / ONE_DAY);\r\n}\r\nclass NgbCalendarIslamicUmalqura extends NgbCalendarIslamicCivil {\r\n /**\r\n * Returns the equivalent islamic(Umalqura) date value for a give input Gregorian date.\r\n * `gdate` is s JS Date to be converted to Hijri.\r\n */\r\n fromGregorian(gDate) {\r\n let hDay = 1, hMonth = 0, hYear = 1300;\r\n let daysDiff = getDaysDiff(gDate, GREGORIAN_FIRST_DATE);\r\n if (gDate.getTime() - GREGORIAN_FIRST_DATE.getTime() >= 0 && gDate.getTime() - GREGORIAN_LAST_DATE.getTime() <= 0) {\r\n let year = 1300;\r\n for (let i = 0; i < MONTH_LENGTH.length; i++, year++) {\r\n for (let j = 0; j < 12; j++) {\r\n let numOfDays = +MONTH_LENGTH[i][j] + 29;\r\n if (daysDiff <= numOfDays) {\r\n hDay = daysDiff + 1;\r\n if (hDay > numOfDays) {\r\n hDay = 1;\r\n j++;\r\n }\r\n if (j > 11) {\r\n j = 0;\r\n year++;\r\n }\r\n hMonth = j;\r\n hYear = year;\r\n return new NgbDate(hYear, hMonth + 1, hDay);\r\n }\r\n daysDiff = daysDiff - numOfDays;\r\n }\r\n }\r\n return null;\r\n }\r\n else {\r\n return super.fromGregorian(gDate);\r\n }\r\n }\r\n /**\r\n * Converts the current Hijri date to Gregorian.\r\n */\r\n toGregorian(hDate) {\r\n const hYear = hDate.year;\r\n const hMonth = hDate.month - 1;\r\n const hDay = hDate.day;\r\n let gDate = new Date(GREGORIAN_FIRST_DATE);\r\n let dayDiff = hDay - 1;\r\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\r\n for (let y = 0; y < hYear - HIJRI_BEGIN; y++) {\r\n for (let m = 0; m < 12; m++) {\r\n dayDiff += +MONTH_LENGTH[y][m] + 29;\r\n }\r\n }\r\n for (let m = 0; m < hMonth; m++) {\r\n dayDiff += +MONTH_LENGTH[hYear - HIJRI_BEGIN][m] + 29;\r\n }\r\n gDate.setDate(GREGORIAN_FIRST_DATE.getDate() + dayDiff);\r\n }\r\n else {\r\n gDate = super.toGregorian(hDate);\r\n }\r\n return gDate;\r\n }\r\n /**\r\n * Returns the number of days in a specific Hijri hMonth.\r\n * `hMonth` is 1 for Muharram, 2 for Safar, etc.\r\n * `hYear` is any Hijri hYear.\r\n */\r\n getDaysPerMonth(hMonth, hYear) {\r\n if (hYear >= HIJRI_BEGIN && hYear <= HIJRI_END) {\r\n const pos = hYear - HIJRI_BEGIN;\r\n return +MONTH_LENGTH[pos][hMonth - 1] + 29;\r\n }\r\n return super.getDaysPerMonth(hMonth, hYear);\r\n }\r\n}\nNgbCalendarIslamicUmalqura.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarIslamicUmalqura_BaseFactory; return function NgbCalendarIslamicUmalqura_Factory(t) { return (ɵNgbCalendarIslamicUmalqura_BaseFactory || (ɵNgbCalendarIslamicUmalqura_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarIslamicUmalqura)))(t || NgbCalendarIslamicUmalqura); }; }();\nNgbCalendarIslamicUmalqura.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarIslamicUmalqura, factory: NgbCalendarIslamicUmalqura.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarIslamicUmalqura, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * Returns the equivalent JS date value for a give input Jalali date.\r\n * `jalaliDate` is an Jalali date to be converted to Gregorian.\r\n */\r\nfunction toGregorian(jalaliDate) {\r\n let jdn = jalaliToJulian(jalaliDate.year, jalaliDate.month, jalaliDate.day);\r\n let date = julianToGregorian(jdn);\r\n date.setHours(6, 30, 3, 200);\r\n return date;\r\n}\r\n/**\r\n * Returns the equivalent jalali date value for a give input Gregorian date.\r\n * `gdate` is a JS Date to be converted to jalali.\r\n * utc to local\r\n */\r\nfunction fromGregorian(gdate) {\r\n let g2d = gregorianToJulian(gdate.getFullYear(), gdate.getMonth() + 1, gdate.getDate());\r\n return julianToJalali(g2d);\r\n}\r\nfunction setJalaliYear(date, yearValue) {\r\n date.year = +yearValue;\r\n return date;\r\n}\r\nfunction setJalaliMonth(date, month) {\r\n month = +month;\r\n date.year = date.year + Math.floor((month - 1) / 12);\r\n date.month = Math.floor(((month - 1) % 12 + 12) % 12) + 1;\r\n return date;\r\n}\r\nfunction setJalaliDay(date, day) {\r\n let mDays = getDaysPerMonth(date.month, date.year);\r\n if (day <= 0) {\r\n while (day <= 0) {\r\n date = setJalaliMonth(date, date.month - 1);\r\n mDays = getDaysPerMonth(date.month, date.year);\r\n day += mDays;\r\n }\r\n }\r\n else if (day > mDays) {\r\n while (day > mDays) {\r\n day -= mDays;\r\n date = setJalaliMonth(date, date.month + 1);\r\n mDays = getDaysPerMonth(date.month, date.year);\r\n }\r\n }\r\n date.day = day;\r\n return date;\r\n}\r\nfunction mod$1(a, b) {\r\n return a - b * Math.floor(a / b);\r\n}\r\nfunction div(a, b) {\r\n return Math.trunc(a / b);\r\n}\r\n/*\r\n This function determines if the Jalali (Persian) year is\r\n leap (366-day long) or is the common year (365 days), and\r\n finds the day in March (Gregorian calendar) of the first\r\n day of the Jalali year (jalaliYear).\r\n @param jalaliYear Jalali calendar year (-61 to 3177)\r\n @return\r\n leap: number of years since the last leap year (0 to 4)\r\n gYear: Gregorian year of the beginning of Jalali year\r\n march: the March day of Farvardin the 1st (1st day of jalaliYear)\r\n @see: http://www.astro.uni.torun.pl/~kb/Papers/EMP/PersianC-EMP.htm\r\n @see: http://www.fourmilab.ch/documents/calendar/\r\n */\r\nfunction jalCal(jalaliYear) {\r\n // Jalali years starting the 33-year rule.\r\n let breaks = [-61, 9, 38, 199, 426, 686, 756, 818, 1111, 1181, 1210, 1635, 2060, 2097, 2192, 2262, 2324, 2394, 2456, 3178];\r\n const breaksLength = breaks.length;\r\n const gYear = jalaliYear + 621;\r\n let leapJ = -14;\r\n let jp = breaks[0];\r\n if (jalaliYear < jp || jalaliYear >= breaks[breaksLength - 1]) {\r\n throw new Error('Invalid Jalali year ' + jalaliYear);\r\n }\r\n // Find the limiting years for the Jalali year jalaliYear.\r\n let jump;\r\n for (let i = 1; i < breaksLength; i += 1) {\r\n const jm = breaks[i];\r\n jump = jm - jp;\r\n if (jalaliYear < jm) {\r\n break;\r\n }\r\n leapJ = leapJ + div(jump, 33) * 8 + div(mod$1(jump, 33), 4);\r\n jp = jm;\r\n }\r\n let n = jalaliYear - jp;\r\n // Find the number of leap years from AD 621 to the beginning\r\n // of the current Jalali year in the Persian calendar.\r\n leapJ = leapJ + div(n, 33) * 8 + div(mod$1(n, 33) + 3, 4);\r\n if (mod$1(jump, 33) === 4 && jump - n === 4) {\r\n leapJ += 1;\r\n }\r\n // And the same in the Gregorian calendar (until the year gYear).\r\n const leapG = div(gYear, 4) - div((div(gYear, 100) + 1) * 3, 4) - 150;\r\n // Determine the Gregorian date of Farvardin the 1st.\r\n const march = 20 + leapJ - leapG;\r\n // Find how many years have passed since the last leap year.\r\n if (jump - n < 6) {\r\n n = n - jump + div(jump + 4, 33) * 33;\r\n }\r\n let leap = mod$1(mod$1(n + 1, 33) - 1, 4);\r\n if (leap === -1) {\r\n leap = 4;\r\n }\r\n return { leap: leap, gy: gYear, march: march };\r\n}\r\n/*\r\n Calculates Gregorian and Julian calendar dates from the Julian Day number\r\n (jdn) for the period since jdn=-34839655 (i.e. the year -100100 of both\r\n calendars) to some millions years ahead of the present.\r\n @param jdn Julian Day number\r\n @return\r\n gYear: Calendar year (years BC numbered 0, -1, -2, ...)\r\n gMonth: Calendar month (1 to 12)\r\n gDay: Calendar day of the month M (1 to 28/29/30/31)\r\n */\r\nfunction julianToGregorian(julianDayNumber) {\r\n let j = 4 * julianDayNumber + 139361631;\r\n j = j + div(div(4 * julianDayNumber + 183187720, 146097) * 3, 4) * 4 - 3908;\r\n const i = div(mod$1(j, 1461), 4) * 5 + 308;\r\n const gDay = div(mod$1(i, 153), 5) + 1;\r\n const gMonth = mod$1(div(i, 153), 12) + 1;\r\n const gYear = div(j, 1461) - 100100 + div(8 - gMonth, 6);\r\n return new Date(gYear, gMonth - 1, gDay);\r\n}\r\n/*\r\n Converts a date of the Jalali calendar to the Julian Day number.\r\n @param jy Jalali year (1 to 3100)\r\n @param jm Jalali month (1 to 12)\r\n @param jd Jalali day (1 to 29/31)\r\n @return Julian Day number\r\n */\r\nfunction gregorianToJulian(gy, gm, gd) {\r\n let d = div((gy + div(gm - 8, 6) + 100100) * 1461, 4) + div(153 * mod$1(gm + 9, 12) + 2, 5) + gd - 34840408;\r\n d = d - div(div(gy + 100100 + div(gm - 8, 6), 100) * 3, 4) + 752;\r\n return d;\r\n}\r\n/*\r\n Converts the Julian Day number to a date in the Jalali calendar.\r\n @param julianDayNumber Julian Day number\r\n @return\r\n jalaliYear: Jalali year (1 to 3100)\r\n jalaliMonth: Jalali month (1 to 12)\r\n jalaliDay: Jalali day (1 to 29/31)\r\n */\r\nfunction julianToJalali(julianDayNumber) {\r\n let gy = julianToGregorian(julianDayNumber).getFullYear() // Calculate Gregorian year (gy).\r\n , jalaliYear = gy - 621, r = jalCal(jalaliYear), gregorianDay = gregorianToJulian(gy, 3, r.march), jalaliDay, jalaliMonth, numberOfDays;\r\n // Find number of days that passed since 1 Farvardin.\r\n numberOfDays = julianDayNumber - gregorianDay;\r\n if (numberOfDays >= 0) {\r\n if (numberOfDays <= 185) {\r\n // The first 6 months.\r\n jalaliMonth = 1 + div(numberOfDays, 31);\r\n jalaliDay = mod$1(numberOfDays, 31) + 1;\r\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\r\n }\r\n else {\r\n // The remaining months.\r\n numberOfDays -= 186;\r\n }\r\n }\r\n else {\r\n // Previous Jalali year.\r\n jalaliYear -= 1;\r\n numberOfDays += 179;\r\n if (r.leap === 1) {\r\n numberOfDays += 1;\r\n }\r\n }\r\n jalaliMonth = 7 + div(numberOfDays, 30);\r\n jalaliDay = mod$1(numberOfDays, 30) + 1;\r\n return new NgbDate(jalaliYear, jalaliMonth, jalaliDay);\r\n}\r\n/*\r\n Converts a date of the Jalali calendar to the Julian Day number.\r\n @param jYear Jalali year (1 to 3100)\r\n @param jMonth Jalali month (1 to 12)\r\n @param jDay Jalali day (1 to 29/31)\r\n @return Julian Day number\r\n */\r\nfunction jalaliToJulian(jYear, jMonth, jDay) {\r\n let r = jalCal(jYear);\r\n return gregorianToJulian(r.gy, 3, r.march) + (jMonth - 1) * 31 - div(jMonth, 7) * (jMonth - 7) + jDay - 1;\r\n}\r\n/**\r\n * Returns the number of days in a specific jalali month.\r\n */\r\nfunction getDaysPerMonth(month, year) {\r\n if (month <= 6) {\r\n return 31;\r\n }\r\n if (month <= 11) {\r\n return 30;\r\n }\r\n if (jalCal(year).leap === 0) {\r\n return 30;\r\n }\r\n return 29;\r\n}\n\nclass NgbCalendarPersian extends NgbCalendar {\r\n getDaysPerWeek() { return 7; }\r\n getMonths() { return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]; }\r\n getWeeksPerMonth() { return 6; }\r\n getNext(date, period = 'd', number = 1) {\r\n date = new NgbDate(date.year, date.month, date.day);\r\n switch (period) {\r\n case 'y':\r\n date = setJalaliYear(date, date.year + number);\r\n date.month = 1;\r\n date.day = 1;\r\n return date;\r\n case 'm':\r\n date = setJalaliMonth(date, date.month + number);\r\n date.day = 1;\r\n return date;\r\n case 'd':\r\n return setJalaliDay(date, date.day + number);\r\n default:\r\n return date;\r\n }\r\n }\r\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\r\n getWeekday(date) {\r\n const day = toGregorian(date).getDay();\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n return day === 0 ? 7 : day;\r\n }\r\n getWeekNumber(week, firstDayOfWeek) {\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n if (firstDayOfWeek === 7) {\r\n firstDayOfWeek = 0;\r\n }\r\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\r\n const date = week[thursdayIndex];\r\n const jsDate = toGregorian(date);\r\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\r\n const time = jsDate.getTime();\r\n const startDate = toGregorian(new NgbDate(date.year, 1, 1));\r\n return Math.floor(Math.round((time - startDate.getTime()) / 86400000) / 7) + 1;\r\n }\r\n getToday() { return fromGregorian(new Date()); }\r\n isValid(date) {\r\n return date != null && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) &&\r\n !isNaN(toGregorian(date).getTime());\r\n }\r\n}\nNgbCalendarPersian.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarPersian_BaseFactory; return function NgbCalendarPersian_Factory(t) { return (ɵNgbCalendarPersian_BaseFactory || (ɵNgbCalendarPersian_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarPersian)))(t || NgbCalendarPersian); }; }();\nNgbCalendarPersian.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarPersian, factory: NgbCalendarPersian.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarPersian, [{\n type: Injectable\n }], null, null); })();\n\nconst PARTS_PER_HOUR = 1080;\r\nconst PARTS_PER_DAY = 24 * PARTS_PER_HOUR;\r\nconst PARTS_FRACTIONAL_MONTH = 12 * PARTS_PER_HOUR + 793;\r\nconst PARTS_PER_MONTH = 29 * PARTS_PER_DAY + PARTS_FRACTIONAL_MONTH;\r\nconst BAHARAD = 11 * PARTS_PER_HOUR + 204;\r\nconst HEBREW_DAY_ON_JAN_1_1970 = 2092591;\r\nconst GREGORIAN_EPOCH$1 = 1721425.5;\r\nfunction isGregorianLeapYear$1(year) {\r\n return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\r\n}\r\nfunction numberOfFirstDayInYear(year) {\r\n let monthsBeforeYear = Math.floor((235 * year - 234) / 19);\r\n let fractionalMonthsBeforeYear = monthsBeforeYear * PARTS_FRACTIONAL_MONTH + BAHARAD;\r\n let dayNumber = monthsBeforeYear * 29 + Math.floor(fractionalMonthsBeforeYear / PARTS_PER_DAY);\r\n let timeOfDay = fractionalMonthsBeforeYear % PARTS_PER_DAY;\r\n let dayOfWeek = dayNumber % 7; // 0 == Monday\r\n if (dayOfWeek === 2 || dayOfWeek === 4 || dayOfWeek === 6) {\r\n dayNumber++;\r\n dayOfWeek = dayNumber % 7;\r\n }\r\n if (dayOfWeek === 1 && timeOfDay > 15 * PARTS_PER_HOUR + 204 && !isHebrewLeapYear(year)) {\r\n dayNumber += 2;\r\n }\r\n else if (dayOfWeek === 0 && timeOfDay > 21 * PARTS_PER_HOUR + 589 && isHebrewLeapYear(year - 1)) {\r\n dayNumber++;\r\n }\r\n return dayNumber;\r\n}\r\nfunction getDaysInGregorianMonth(month, year) {\r\n let days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n if (isGregorianLeapYear$1(year)) {\r\n days[1]++;\r\n }\r\n return days[month - 1];\r\n}\r\nfunction getHebrewMonths(year) {\r\n return isHebrewLeapYear(year) ? 13 : 12;\r\n}\r\n/**\r\n * Returns the number of days in a specific Hebrew year.\r\n * `year` is any Hebrew year.\r\n */\r\nfunction getDaysInHebrewYear(year) {\r\n return numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\r\n}\r\nfunction isHebrewLeapYear(year) {\r\n if (year != null) {\r\n let b = (year * 12 + 17) % 19;\r\n return b >= ((b < 0) ? -7 : 12);\r\n }\r\n return false;\r\n}\r\n/**\r\n * Returns the number of days in a specific Hebrew month.\r\n * `month` is 1 for Nisan, 2 for Iyar etc. Note: Hebrew leap year contains 13 months.\r\n * `year` is any Hebrew year.\r\n */\r\nfunction getDaysInHebrewMonth(month, year) {\r\n let yearLength = numberOfFirstDayInYear(year + 1) - numberOfFirstDayInYear(year);\r\n let yearType = (yearLength <= 380 ? yearLength : (yearLength - 30)) - 353;\r\n let leapYear = isHebrewLeapYear(year);\r\n let daysInMonth = leapYear ? [30, 29, 29, 29, 30, 30, 29, 30, 29, 30, 29, 30, 29] :\r\n [30, 29, 29, 29, 30, 29, 30, 29, 30, 29, 30, 29];\r\n if (yearType > 0) {\r\n daysInMonth[2]++; // Kislev gets an extra day in normal or complete years.\r\n }\r\n if (yearType > 1) {\r\n daysInMonth[1]++; // Heshvan gets an extra day in complete years only.\r\n }\r\n return daysInMonth[month - 1];\r\n}\r\nfunction getDayNumberInHebrewYear(date) {\r\n let numberOfDay = 0;\r\n for (let i = 1; i < date.month; i++) {\r\n numberOfDay += getDaysInHebrewMonth(i, date.year);\r\n }\r\n return numberOfDay + date.day;\r\n}\r\nfunction setHebrewMonth(date, val) {\r\n let after = val >= 0;\r\n if (!after) {\r\n val = -val;\r\n }\r\n while (val > 0) {\r\n if (after) {\r\n if (val > getHebrewMonths(date.year) - date.month) {\r\n val -= getHebrewMonths(date.year) - date.month + 1;\r\n date.year++;\r\n date.month = 1;\r\n }\r\n else {\r\n date.month += val;\r\n val = 0;\r\n }\r\n }\r\n else {\r\n if (val >= date.month) {\r\n date.year--;\r\n val -= date.month;\r\n date.month = getHebrewMonths(date.year);\r\n }\r\n else {\r\n date.month -= val;\r\n val = 0;\r\n }\r\n }\r\n }\r\n return date;\r\n}\r\nfunction setHebrewDay(date, val) {\r\n let after = val >= 0;\r\n if (!after) {\r\n val = -val;\r\n }\r\n while (val > 0) {\r\n if (after) {\r\n if (val > getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date)) {\r\n val -= getDaysInHebrewYear(date.year) - getDayNumberInHebrewYear(date) + 1;\r\n date.year++;\r\n date.month = 1;\r\n date.day = 1;\r\n }\r\n else if (val > getDaysInHebrewMonth(date.month, date.year) - date.day) {\r\n val -= getDaysInHebrewMonth(date.month, date.year) - date.day + 1;\r\n date.month++;\r\n date.day = 1;\r\n }\r\n else {\r\n date.day += val;\r\n val = 0;\r\n }\r\n }\r\n else {\r\n if (val >= date.day) {\r\n val -= date.day;\r\n date.month--;\r\n if (date.month === 0) {\r\n date.year--;\r\n date.month = getHebrewMonths(date.year);\r\n }\r\n date.day = getDaysInHebrewMonth(date.month, date.year);\r\n }\r\n else {\r\n date.day -= val;\r\n val = 0;\r\n }\r\n }\r\n }\r\n return date;\r\n}\r\n/**\r\n * Returns the equivalent Hebrew date value for a give input Gregorian date.\r\n * `gdate` is a JS Date to be converted to Hebrew date.\r\n */\r\nfunction fromGregorian$1(gdate) {\r\n const date = new Date(gdate);\r\n const gYear = date.getFullYear(), gMonth = date.getMonth(), gDay = date.getDate();\r\n let julianDay = GREGORIAN_EPOCH$1 - 1 + 365 * (gYear - 1) + Math.floor((gYear - 1) / 4) -\r\n Math.floor((gYear - 1) / 100) + Math.floor((gYear - 1) / 400) +\r\n Math.floor((367 * (gMonth + 1) - 362) / 12 + (gMonth + 1 <= 2 ? 0 : isGregorianLeapYear$1(gYear) ? -1 : -2) + gDay);\r\n julianDay = Math.floor(julianDay + 0.5);\r\n let daysSinceHebEpoch = julianDay - 347997;\r\n let monthsSinceHebEpoch = Math.floor(daysSinceHebEpoch * PARTS_PER_DAY / PARTS_PER_MONTH);\r\n let hYear = Math.floor((monthsSinceHebEpoch * 19 + 234) / 235) + 1;\r\n let firstDayOfThisYear = numberOfFirstDayInYear(hYear);\r\n let dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\r\n while (dayOfYear < 1) {\r\n hYear--;\r\n firstDayOfThisYear = numberOfFirstDayInYear(hYear);\r\n dayOfYear = daysSinceHebEpoch - firstDayOfThisYear;\r\n }\r\n let hMonth = 1;\r\n let hDay = dayOfYear;\r\n while (hDay > getDaysInHebrewMonth(hMonth, hYear)) {\r\n hDay -= getDaysInHebrewMonth(hMonth, hYear);\r\n hMonth++;\r\n }\r\n return new NgbDate(hYear, hMonth, hDay);\r\n}\r\n/**\r\n * Returns the equivalent JS date value for a given Hebrew date.\r\n * `hebrewDate` is an Hebrew date to be converted to Gregorian.\r\n */\r\nfunction toGregorian$1(hebrewDate) {\r\n const hYear = hebrewDate.year;\r\n const hMonth = hebrewDate.month;\r\n const hDay = hebrewDate.day;\r\n let days = numberOfFirstDayInYear(hYear);\r\n for (let i = 1; i < hMonth; i++) {\r\n days += getDaysInHebrewMonth(i, hYear);\r\n }\r\n days += hDay;\r\n let diffDays = days - HEBREW_DAY_ON_JAN_1_1970;\r\n let after = diffDays >= 0;\r\n if (!after) {\r\n diffDays = -diffDays;\r\n }\r\n let gYear = 1970;\r\n let gMonth = 1;\r\n let gDay = 1;\r\n while (diffDays > 0) {\r\n if (after) {\r\n if (diffDays >= (isGregorianLeapYear$1(gYear) ? 366 : 365)) {\r\n diffDays -= isGregorianLeapYear$1(gYear) ? 366 : 365;\r\n gYear++;\r\n }\r\n else if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\r\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\r\n gMonth++;\r\n }\r\n else {\r\n gDay += diffDays;\r\n diffDays = 0;\r\n }\r\n }\r\n else {\r\n if (diffDays >= (isGregorianLeapYear$1(gYear - 1) ? 366 : 365)) {\r\n diffDays -= isGregorianLeapYear$1(gYear - 1) ? 366 : 365;\r\n gYear--;\r\n }\r\n else {\r\n if (gMonth > 1) {\r\n gMonth--;\r\n }\r\n else {\r\n gMonth = 12;\r\n gYear--;\r\n }\r\n if (diffDays >= getDaysInGregorianMonth(gMonth, gYear)) {\r\n diffDays -= getDaysInGregorianMonth(gMonth, gYear);\r\n }\r\n else {\r\n gDay = getDaysInGregorianMonth(gMonth, gYear) - diffDays + 1;\r\n diffDays = 0;\r\n }\r\n }\r\n }\r\n }\r\n return new Date(gYear, gMonth - 1, gDay);\r\n}\r\nfunction hebrewNumerals(numerals) {\r\n if (!numerals) {\r\n return '';\r\n }\r\n const hArray0_9 = ['', '\\u05d0', '\\u05d1', '\\u05d2', '\\u05d3', '\\u05d4', '\\u05d5', '\\u05d6', '\\u05d7', '\\u05d8'];\r\n const hArray10_19 = [\r\n '\\u05d9', '\\u05d9\\u05d0', '\\u05d9\\u05d1', '\\u05d9\\u05d2', '\\u05d9\\u05d3', '\\u05d8\\u05d5', '\\u05d8\\u05d6',\r\n '\\u05d9\\u05d6', '\\u05d9\\u05d7', '\\u05d9\\u05d8'\r\n ];\r\n const hArray20_90 = ['', '', '\\u05db', '\\u05dc', '\\u05de', '\\u05e0', '\\u05e1', '\\u05e2', '\\u05e4', '\\u05e6'];\r\n const hArray100_900 = [\r\n '', '\\u05e7', '\\u05e8', '\\u05e9', '\\u05ea', '\\u05ea\\u05e7', '\\u05ea\\u05e8', '\\u05ea\\u05e9', '\\u05ea\\u05ea',\r\n '\\u05ea\\u05ea\\u05e7'\r\n ];\r\n const hArray1000_9000 = [\r\n '', '\\u05d0', '\\u05d1', '\\u05d1\\u05d0', '\\u05d1\\u05d1', '\\u05d4', '\\u05d4\\u05d0', '\\u05d4\\u05d1',\r\n '\\u05d4\\u05d1\\u05d0', '\\u05d4\\u05d1\\u05d1'\r\n ];\r\n const geresh = '\\u05f3', gershaim = '\\u05f4';\r\n let mem = 0;\r\n let result = [];\r\n let step = 0;\r\n while (numerals > 0) {\r\n let m = numerals % 10;\r\n if (step === 0) {\r\n mem = m;\r\n }\r\n else if (step === 1) {\r\n if (m !== 1) {\r\n result.unshift(hArray20_90[m], hArray0_9[mem]);\r\n }\r\n else {\r\n result.unshift(hArray10_19[mem]);\r\n }\r\n }\r\n else if (step === 2) {\r\n result.unshift(hArray100_900[m]);\r\n }\r\n else {\r\n if (m !== 5) {\r\n result.unshift(hArray1000_9000[m], geresh, ' ');\r\n }\r\n break;\r\n }\r\n numerals = Math.floor(numerals / 10);\r\n if (step === 0 && numerals === 0) {\r\n result.unshift(hArray0_9[m]);\r\n }\r\n step++;\r\n }\r\n result = result.join('').split('');\r\n if (result.length === 1) {\r\n result.push(geresh);\r\n }\r\n else if (result.length > 1) {\r\n result.splice(result.length - 1, 0, gershaim);\r\n }\r\n return result.join('');\r\n}\n\n/**\r\n * @since 3.2.0\r\n */\r\nclass NgbCalendarHebrew extends NgbCalendar {\r\n getDaysPerWeek() { return 7; }\r\n getMonths(year) {\r\n if (year && isHebrewLeapYear(year)) {\r\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13];\r\n }\r\n else {\r\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];\r\n }\r\n }\r\n getWeeksPerMonth() { return 6; }\r\n isValid(date) {\r\n if (date != null) {\r\n let b = isNumber(date.year) && isNumber(date.month) && isNumber(date.day);\r\n b = b && date.month > 0 && date.month <= (isHebrewLeapYear(date.year) ? 13 : 12);\r\n b = b && date.day > 0 && date.day <= getDaysInHebrewMonth(date.month, date.year);\r\n return b && !isNaN(toGregorian$1(date).getTime());\r\n }\r\n return false;\r\n }\r\n getNext(date, period = 'd', number = 1) {\r\n date = new NgbDate(date.year, date.month, date.day);\r\n switch (period) {\r\n case 'y':\r\n date.year += number;\r\n date.month = 1;\r\n date.day = 1;\r\n return date;\r\n case 'm':\r\n date = setHebrewMonth(date, number);\r\n date.day = 1;\r\n return date;\r\n case 'd':\r\n return setHebrewDay(date, number);\r\n default:\r\n return date;\r\n }\r\n }\r\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\r\n getWeekday(date) {\r\n const day = toGregorian$1(date).getDay();\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n return day === 0 ? 7 : day;\r\n }\r\n getWeekNumber(week, firstDayOfWeek) {\r\n const date = week[week.length - 1];\r\n return Math.ceil(getDayNumberInHebrewYear(date) / 7);\r\n }\r\n getToday() { return fromGregorian$1(new Date()); }\r\n /**\r\n * @since 3.4.0\r\n */\r\n toGregorian(date) { return fromJSDate(toGregorian$1(date)); }\r\n /**\r\n * @since 3.4.0\r\n */\r\n fromGregorian(date) { return fromGregorian$1(toJSDate(date)); }\r\n}\nNgbCalendarHebrew.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarHebrew_BaseFactory; return function NgbCalendarHebrew_Factory(t) { return (ɵNgbCalendarHebrew_BaseFactory || (ɵNgbCalendarHebrew_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarHebrew)))(t || NgbCalendarHebrew); }; }();\nNgbCalendarHebrew.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarHebrew, factory: NgbCalendarHebrew.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarHebrew, [{\n type: Injectable\n }], null, null); })();\n\nconst WEEKDAYS = ['שני', 'שלישי', 'רביעי', 'חמישי', 'שישי', 'שבת', 'ראשון'];\r\nconst MONTHS = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\r\nconst MONTHS_LEAP = ['תשרי', 'חשון', 'כסלו', 'טבת', 'שבט', 'אדר א׳', 'אדר ב׳', 'ניסן', 'אייר', 'סיון', 'תמוז', 'אב', 'אלול'];\r\n/**\r\n * @since 3.2.0\r\n */\r\nclass NgbDatepickerI18nHebrew extends NgbDatepickerI18n {\r\n getMonthShortName(month, year) { return this.getMonthFullName(month, year); }\r\n getMonthFullName(month, year) {\r\n return isHebrewLeapYear(year) ? MONTHS_LEAP[month - 1] || '' : MONTHS[month - 1] || '';\r\n }\r\n getWeekdayShortName(weekday) { return WEEKDAYS[weekday - 1] || ''; }\r\n getDayAriaLabel(date) {\r\n return `${hebrewNumerals(date.day)} ${this.getMonthFullName(date.month, date.year)} ${hebrewNumerals(date.year)}`;\r\n }\r\n getDayNumerals(date) { return hebrewNumerals(date.day); }\r\n getWeekNumerals(weekNumber) { return hebrewNumerals(weekNumber); }\r\n getYearNumerals(year) { return hebrewNumerals(year); }\r\n}\nNgbDatepickerI18nHebrew.ɵfac = /*@__PURE__*/ function () { let ɵNgbDatepickerI18nHebrew_BaseFactory; return function NgbDatepickerI18nHebrew_Factory(t) { return (ɵNgbDatepickerI18nHebrew_BaseFactory || (ɵNgbDatepickerI18nHebrew_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDatepickerI18nHebrew)))(t || NgbDatepickerI18nHebrew); }; }();\nNgbDatepickerI18nHebrew.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDatepickerI18nHebrew, factory: NgbDatepickerI18nHebrew.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerI18nHebrew, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * Returns the equivalent JS date value for a give input Buddhist date.\r\n * `date` is an Buddhist date to be converted to Gregorian.\r\n */\r\nfunction toGregorian$2(date) {\r\n return new Date(date.year - 543, date.month - 1, date.day);\r\n}\r\n/**\r\n * Returns the equivalent Buddhist date value for a give input Gregorian date.\r\n * `gdate` is a JS Date to be converted to Buddhist.\r\n * utc to local\r\n */\r\nfunction fromGregorian$2(gdate) {\r\n return new NgbDate(gdate.getFullYear() + 543, gdate.getMonth() + 1, gdate.getDate());\r\n}\n\n/**\r\n * @since 9.1.0\r\n */\r\nclass NgbCalendarBuddhist extends NgbCalendarGregorian {\r\n getToday() { return fromGregorian$2(new Date()); }\r\n getNext(date, period = 'd', number = 1) {\r\n let jsDate = toGregorian$2(date);\r\n let checkMonth = true;\r\n let expectedMonth = jsDate.getMonth();\r\n switch (period) {\r\n case 'y':\r\n jsDate.setFullYear(jsDate.getFullYear() + number);\r\n break;\r\n case 'm':\r\n expectedMonth += number;\r\n jsDate.setMonth(expectedMonth);\r\n expectedMonth = expectedMonth % 12;\r\n if (expectedMonth < 0) {\r\n expectedMonth = expectedMonth + 12;\r\n }\r\n break;\r\n case 'd':\r\n jsDate.setDate(jsDate.getDate() + number);\r\n checkMonth = false;\r\n break;\r\n default:\r\n return date;\r\n }\r\n if (checkMonth && jsDate.getMonth() !== expectedMonth) {\r\n // this means the destination month has less days than the initial month\r\n // let's go back to the end of the previous month:\r\n jsDate.setDate(0);\r\n }\r\n return fromGregorian$2(jsDate);\r\n }\r\n getPrev(date, period = 'd', number = 1) { return this.getNext(date, period, -number); }\r\n getWeekday(date) {\r\n let jsDate = toGregorian$2(date);\r\n let day = jsDate.getDay();\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n return day === 0 ? 7 : day;\r\n }\r\n getWeekNumber(week, firstDayOfWeek) {\r\n // in JS Date Sun=0, in ISO 8601 Sun=7\r\n if (firstDayOfWeek === 7) {\r\n firstDayOfWeek = 0;\r\n }\r\n const thursdayIndex = (4 + 7 - firstDayOfWeek) % 7;\r\n let date = week[thursdayIndex];\r\n const jsDate = toGregorian$2(date);\r\n jsDate.setDate(jsDate.getDate() + 4 - (jsDate.getDay() || 7)); // Thursday\r\n const time = jsDate.getTime();\r\n jsDate.setMonth(0); // Compare with Jan 1\r\n jsDate.setDate(1);\r\n return Math.floor(Math.round((time - jsDate.getTime()) / 86400000) / 7) + 1;\r\n }\r\n isValid(date) {\r\n if (!date || !isInteger(date.year) || !isInteger(date.month) || !isInteger(date.day)) {\r\n return false;\r\n }\r\n // year 0 doesn't exist in Gregorian calendar\r\n if (date.year === 0) {\r\n return false;\r\n }\r\n const jsDate = toGregorian$2(date);\r\n return !isNaN(jsDate.getTime()) && jsDate.getFullYear() === date.year - 543 &&\r\n jsDate.getMonth() + 1 === date.month && jsDate.getDate() === date.day;\r\n }\r\n}\nNgbCalendarBuddhist.ɵfac = /*@__PURE__*/ function () { let ɵNgbCalendarBuddhist_BaseFactory; return function NgbCalendarBuddhist_Factory(t) { return (ɵNgbCalendarBuddhist_BaseFactory || (ɵNgbCalendarBuddhist_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbCalendarBuddhist)))(t || NgbCalendarBuddhist); }; }();\nNgbCalendarBuddhist.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbCalendarBuddhist, factory: NgbCalendarBuddhist.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbCalendarBuddhist, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * [`NgbDateAdapter`](#/components/datepicker/api#NgbDateAdapter) implementation that uses\r\n * native javascript dates as a user date model.\r\n */\r\nclass NgbDateNativeAdapter extends NgbDateAdapter {\r\n /**\r\n * Converts a native `Date` to a `NgbDateStruct`.\r\n */\r\n fromModel(date) {\r\n return (date instanceof Date && !isNaN(date.getTime())) ? this._fromNativeDate(date) : null;\r\n }\r\n /**\r\n * Converts a `NgbDateStruct` to a native `Date`.\r\n */\r\n toModel(date) {\r\n return date && isInteger(date.year) && isInteger(date.month) && isInteger(date.day) ? this._toNativeDate(date) :\r\n null;\r\n }\r\n _fromNativeDate(date) {\r\n return { year: date.getFullYear(), month: date.getMonth() + 1, day: date.getDate() };\r\n }\r\n _toNativeDate(date) {\r\n const jsDate = new Date(date.year, date.month - 1, date.day, 12);\r\n // avoid 30 -> 1930 conversion\r\n jsDate.setFullYear(date.year);\r\n return jsDate;\r\n }\r\n}\nNgbDateNativeAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateNativeAdapter_BaseFactory; return function NgbDateNativeAdapter_Factory(t) { return (ɵNgbDateNativeAdapter_BaseFactory || (ɵNgbDateNativeAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateNativeAdapter)))(t || NgbDateNativeAdapter); }; }();\nNgbDateNativeAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateNativeAdapter, factory: NgbDateNativeAdapter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateNativeAdapter, [{\n type: Injectable\n }], null, null); })();\n\n/**\r\n * Same as [`NgbDateNativeAdapter`](#/components/datepicker/api#NgbDateNativeAdapter), but with UTC dates.\r\n *\r\n * @since 3.2.0\r\n */\r\nclass NgbDateNativeUTCAdapter extends NgbDateNativeAdapter {\r\n _fromNativeDate(date) {\r\n return { year: date.getUTCFullYear(), month: date.getUTCMonth() + 1, day: date.getUTCDate() };\r\n }\r\n _toNativeDate(date) {\r\n const jsDate = new Date(Date.UTC(date.year, date.month - 1, date.day));\r\n // avoid 30 -> 1930 conversion\r\n jsDate.setUTCFullYear(date.year);\r\n return jsDate;\r\n }\r\n}\nNgbDateNativeUTCAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbDateNativeUTCAdapter_BaseFactory; return function NgbDateNativeUTCAdapter_Factory(t) { return (ɵNgbDateNativeUTCAdapter_BaseFactory || (ɵNgbDateNativeUTCAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbDateNativeUTCAdapter)))(t || NgbDateNativeUTCAdapter); }; }();\nNgbDateNativeUTCAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbDateNativeUTCAdapter, factory: NgbDateNativeUTCAdapter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDateNativeUTCAdapter, [{\n type: Injectable\n }], null, null); })();\n\nclass NgbDatepickerModule {\r\n}\nNgbDatepickerModule.ɵfac = function NgbDatepickerModule_Factory(t) { return new (t || NgbDatepickerModule)(); };\nNgbDatepickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbDatepickerModule });\nNgbDatepickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, FormsModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDatepickerModule, [{\n type: NgModule,\n args: [{\n declarations: [\n NgbDatepicker, NgbDatepickerContent, NgbDatepickerMonth, NgbDatepickerNavigation, NgbDatepickerNavigationSelect,\n NgbDatepickerDayView, NgbInputDatepicker\n ],\n exports: [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth],\n imports: [CommonModule, FormsModule],\n entryComponents: [NgbDatepicker]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbDatepickerModule, { declarations: function () { return [NgbDatepicker, NgbDatepickerContent, NgbDatepickerMonth, NgbDatepickerNavigation, NgbDatepickerNavigationSelect, NgbDatepickerDayView, NgbInputDatepicker]; }, imports: function () { return [CommonModule, FormsModule]; }, exports: function () { return [NgbDatepicker, NgbDatepickerContent, NgbInputDatepicker, NgbDatepickerMonth]; } }); })();\n\n/**\r\n * A configuration service for the [`NgbDropdown`](#/components/dropdown/api#NgbDropdown) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the dropdowns used in the application.\r\n */\r\nclass NgbDropdownConfig {\r\n constructor() {\r\n this.autoClose = true;\r\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\r\n }\r\n}\nNgbDropdownConfig.ɵfac = function NgbDropdownConfig_Factory(t) { return new (t || NgbDropdownConfig)(); };\r\nNgbDropdownConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbDropdownConfig_Factory() { return new NgbDropdownConfig(); }, token: NgbDropdownConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nclass NgbNavbar {\r\n}\nNgbNavbar.ɵfac = function NgbNavbar_Factory(t) { return new (t || NgbNavbar)(); };\nNgbNavbar.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavbar, selectors: [[\"\", 8, \"navbar\"]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavbar, [{\n type: Directive,\n args: [{ selector: '.navbar' }]\n }], null, null); })();\r\n/**\r\n * A directive you should put on a dropdown item to enable keyboard navigation.\r\n * Arrow keys will move focus between items marked with this directive.\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbDropdownItem {\r\n constructor(elementRef) {\r\n this.elementRef = elementRef;\r\n this._disabled = false;\r\n }\r\n set disabled(value) {\r\n this._disabled = value === '' || value === true; // accept an empty attribute as true\r\n }\r\n get disabled() { return this._disabled; }\r\n}\nNgbDropdownItem.ɵfac = function NgbDropdownItem_Factory(t) { return new (t || NgbDropdownItem)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownItem.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownItem, selectors: [[\"\", \"ngbDropdownItem\", \"\"]], hostAttrs: [1, \"dropdown-item\"], hostVars: 2, hostBindings: function NgbDropdownItem_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx.disabled);\n } }, inputs: { disabled: \"disabled\" } });\r\nNgbDropdownItem.ctorParameters = () => [\r\n { type: ElementRef }\r\n];\r\nNgbDropdownItem.propDecorators = {\r\n disabled: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownItem, [{\n type: Directive,\n args: [{ selector: '[ngbDropdownItem]', host: { 'class': 'dropdown-item', '[class.disabled]': 'disabled' } }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { disabled: [{\n type: Input\n }] }); })();\r\n/**\r\n * A directive that wraps dropdown menu content and dropdown items.\r\n */\r\nclass NgbDropdownMenu {\r\n constructor(dropdown, _elementRef) {\r\n this.dropdown = dropdown;\r\n this.placement = 'bottom';\r\n this.isOpen = false;\r\n this.nativeElement = _elementRef.nativeElement;\r\n }\r\n}\nNgbDropdownMenu.ɵfac = function NgbDropdownMenu_Factory(t) { return new (t || NgbDropdownMenu)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownMenu.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownMenu, selectors: [[\"\", \"ngbDropdownMenu\", \"\"]], contentQueries: function NgbDropdownMenu_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownItem, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.menuItems = _t);\n } }, hostVars: 5, hostBindings: function NgbDropdownMenu_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown.ArrowUp\", function NgbDropdownMenu_keydown_ArrowUp_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.ArrowDown\", function NgbDropdownMenu_keydown_ArrowDown_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Home\", function NgbDropdownMenu_keydown_Home_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.End\", function NgbDropdownMenu_keydown_End_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Enter\", function NgbDropdownMenu_keydown_Enter_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Space\", function NgbDropdownMenu_keydown_Space_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Tab\", function NgbDropdownMenu_keydown_Tab_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Shift.Tab\", function NgbDropdownMenu_keydown_Shift_Tab_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"x-placement\", ctx.placement);\n ɵngcc0.ɵɵclassProp(\"dropdown-menu\", true)(\"show\", ctx.dropdown.isOpen());\n } } });\r\nNgbDropdownMenu.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] },\r\n { type: ElementRef }\r\n];\r\nNgbDropdownMenu.propDecorators = {\r\n menuItems: [{ type: ContentChildren, args: [NgbDropdownItem,] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownMenu, [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownMenu]',\n host: {\n '[class.dropdown-menu]': 'true',\n '[class.show]': 'dropdown.isOpen()',\n '[attr.x-placement]': 'placement',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)',\n '(keydown.Enter)': 'dropdown.onKeyDown($event)',\n '(keydown.Space)': 'dropdown.onKeyDown($event)',\n '(keydown.Tab)': 'dropdown.onKeyDown($event)',\n '(keydown.Shift.Tab)': 'dropdown.onKeyDown($event)'\n }\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: ɵngcc0.ElementRef }]; }, { menuItems: [{\n type: ContentChildren,\n args: [NgbDropdownItem]\n }] }); })();\r\n/**\r\n * A directive to mark an element to which dropdown menu will be anchored.\r\n *\r\n * This is a simple version of the `NgbDropdownToggle` directive.\r\n * It plays the same role, but doesn't listen to click events to toggle dropdown menu thus enabling support\r\n * for events other than click.\r\n *\r\n * @since 1.1.0\r\n */\r\nclass NgbDropdownAnchor {\r\n constructor(dropdown, _elementRef) {\r\n this.dropdown = dropdown;\r\n this.nativeElement = _elementRef.nativeElement;\r\n }\r\n}\nNgbDropdownAnchor.ɵfac = function NgbDropdownAnchor_Factory(t) { return new (t || NgbDropdownAnchor)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownAnchor.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownAnchor, selectors: [[\"\", \"ngbDropdownAnchor\", \"\"]], hostAttrs: [1, \"dropdown-toggle\"], hostVars: 1, hostBindings: function NgbDropdownAnchor_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.dropdown.isOpen());\n } } });\r\nNgbDropdownAnchor.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] },\r\n { type: ElementRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownAnchor, [{\n type: Directive,\n args: [{ selector: '[ngbDropdownAnchor]', host: { 'class': 'dropdown-toggle', '[attr.aria-expanded]': 'dropdown.isOpen()' } }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: ɵngcc0.ElementRef }]; }, null); })();\r\n/**\r\n * A directive to mark an element that will toggle dropdown via the `click` event.\r\n *\r\n * You can also use `NgbDropdownAnchor` as an alternative.\r\n */\r\nclass NgbDropdownToggle extends NgbDropdownAnchor {\r\n constructor(dropdown, elementRef) {\r\n super(dropdown, elementRef);\r\n }\r\n}\nNgbDropdownToggle.ɵfac = function NgbDropdownToggle_Factory(t) { return new (t || NgbDropdownToggle)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbDropdown)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbDropdownToggle.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdownToggle, selectors: [[\"\", \"ngbDropdownToggle\", \"\"]], hostAttrs: [1, \"dropdown-toggle\"], hostVars: 1, hostBindings: function NgbDropdownToggle_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgbDropdownToggle_click_HostBindingHandler() { return ctx.dropdown.toggle(); })(\"keydown.ArrowUp\", function NgbDropdownToggle_keydown_ArrowUp_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.ArrowDown\", function NgbDropdownToggle_keydown_ArrowDown_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Home\", function NgbDropdownToggle_keydown_Home_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.End\", function NgbDropdownToggle_keydown_End_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Tab\", function NgbDropdownToggle_keydown_Tab_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); })(\"keydown.Shift.Tab\", function NgbDropdownToggle_keydown_Shift_Tab_HostBindingHandler($event) { return ctx.dropdown.onKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.dropdown.isOpen());\n } }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle) }]), ɵngcc0.ɵɵInheritDefinitionFeature] });\r\nNgbDropdownToggle.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbDropdown),] }] },\r\n { type: ElementRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownToggle, [{\n type: Directive,\n args: [{\n selector: '[ngbDropdownToggle]',\n host: {\n 'class': 'dropdown-toggle',\n '[attr.aria-expanded]': 'dropdown.isOpen()',\n '(click)': 'dropdown.toggle()',\n '(keydown.ArrowUp)': 'dropdown.onKeyDown($event)',\n '(keydown.ArrowDown)': 'dropdown.onKeyDown($event)',\n '(keydown.Home)': 'dropdown.onKeyDown($event)',\n '(keydown.End)': 'dropdown.onKeyDown($event)',\n '(keydown.Tab)': 'dropdown.onKeyDown($event)',\n '(keydown.Shift.Tab)': 'dropdown.onKeyDown($event)'\n },\n providers: [{ provide: NgbDropdownAnchor, useExisting: forwardRef(() => NgbDropdownToggle) }]\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbDropdown)]\n }] }, { type: ɵngcc0.ElementRef }]; }, null); })();\r\n/**\r\n * A directive that provides contextual overlays for displaying lists of links and more.\r\n */\r\nclass NgbDropdown {\r\n constructor(_changeDetector, config, _document, _ngZone, _elementRef, _renderer, ngbNavbar) {\r\n this._changeDetector = _changeDetector;\r\n this._document = _document;\r\n this._ngZone = _ngZone;\r\n this._elementRef = _elementRef;\r\n this._renderer = _renderer;\r\n this._closed$ = new Subject();\r\n this._bodyContainer = null;\r\n /**\r\n * Defines whether or not the dropdown menu is opened initially.\r\n */\r\n this._open = false;\r\n /**\r\n * An event fired when the dropdown is opened or closed.\r\n *\r\n * The event payload is a `boolean`:\r\n * * `true` - the dropdown was opened\r\n * * `false` - the dropdown was closed\r\n */\r\n this.openChange = new EventEmitter();\r\n this.placement = config.placement;\r\n this.container = config.container;\r\n this.autoClose = config.autoClose;\r\n this.display = ngbNavbar ? 'static' : 'dynamic';\r\n this._zoneSubscription = _ngZone.onStable.subscribe(() => { this._positionMenu(); });\r\n }\r\n ngAfterContentInit() {\r\n this._ngZone.onStable.pipe(take(1)).subscribe(() => {\r\n this._applyPlacementClasses();\r\n if (this._open) {\r\n this._setCloseHandlers();\r\n }\r\n });\r\n }\r\n ngOnChanges(changes) {\r\n if (changes.container && this._open) {\r\n this._applyContainer(this.container);\r\n }\r\n if (changes.placement && !changes.placement.isFirstChange) {\r\n this._applyPlacementClasses();\r\n }\r\n if (changes.dropdownClass) {\r\n const { currentValue, previousValue } = changes.dropdownClass;\r\n this._applyCustomDropdownClass(currentValue, previousValue);\r\n }\r\n }\r\n /**\r\n * Checks if the dropdown menu is open.\r\n */\r\n isOpen() { return this._open; }\r\n /**\r\n * Opens the dropdown menu.\r\n */\r\n open() {\r\n if (!this._open) {\r\n this._open = true;\r\n this._applyContainer(this.container);\r\n this.openChange.emit(true);\r\n this._setCloseHandlers();\r\n if (this._anchor) {\r\n this._anchor.nativeElement.focus();\r\n }\r\n }\r\n }\r\n _setCloseHandlers() {\r\n ngbAutoClose(this._ngZone, this._document, this.autoClose, (source) => {\r\n this.close();\r\n if (source === 0 /* ESCAPE */) {\r\n this._anchor.nativeElement.focus();\r\n }\r\n }, this._closed$, this._menu ? [this._menu.nativeElement] : [], this._anchor ? [this._anchor.nativeElement] : [], '.dropdown-item,.dropdown-divider');\r\n }\r\n /**\r\n * Closes the dropdown menu.\r\n */\r\n close() {\r\n if (this._open) {\r\n this._open = false;\r\n this._resetContainer();\r\n this._closed$.next();\r\n this.openChange.emit(false);\r\n this._changeDetector.markForCheck();\r\n }\r\n }\r\n /**\r\n * Toggles the dropdown menu.\r\n */\r\n toggle() {\r\n if (this.isOpen()) {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n ngOnDestroy() {\r\n this._resetContainer();\r\n this._closed$.next();\r\n this._zoneSubscription.unsubscribe();\r\n }\r\n onKeyDown(event) {\r\n // tslint:disable-next-line:deprecation\r\n const key = event.which;\r\n const itemElements = this._getMenuElements();\r\n let position = -1;\r\n let itemElement = null;\r\n const isEventFromToggle = this._isEventFromToggle(event);\r\n if (!isEventFromToggle && itemElements.length) {\r\n itemElements.forEach((item, index) => {\r\n if (item.contains(event.target)) {\r\n itemElement = item;\r\n }\r\n if (item === this._document.activeElement) {\r\n position = index;\r\n }\r\n });\r\n }\r\n // closing on Enter / Space\r\n if (key === Key.Space || key === Key.Enter) {\r\n if (itemElement && (this.autoClose === true || this.autoClose === 'inside')) {\r\n // Item is either a button or a link, so click will be triggered by the browser on Enter or Space.\r\n // So we have to register a one-time click handler that will fire after any user defined click handlers\r\n // to close the dropdown\r\n fromEvent(itemElement, 'click').pipe(take(1)).subscribe(() => this.close());\r\n }\r\n return;\r\n }\r\n if (key === Key.Tab) {\r\n if (event.target && this.isOpen() && this.autoClose) {\r\n if (this._anchor.nativeElement === event.target) {\r\n if (this.container === 'body' && !event.shiftKey) {\r\n /* This case is special: user is using [Tab] from the anchor/toggle.\r\n User expects the next focusable element in the dropdown menu to get focus.\r\n But the menu is not a sibling to anchor/toggle, it is at the end of the body.\r\n Trick is to synchronously focus the menu element, and let the [keydown.Tab] go\r\n so that browser will focus the proper element (first one focusable in the menu) */\r\n this._renderer.setAttribute(this._menu.nativeElement, 'tabindex', '0');\r\n this._menu.nativeElement.focus();\r\n this._renderer.removeAttribute(this._menu.nativeElement, 'tabindex');\r\n }\r\n else if (event.shiftKey) {\r\n this.close();\r\n }\r\n return;\r\n }\r\n else if (this.container === 'body') {\r\n const focusableElements = this._menu.nativeElement.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR);\r\n if (event.shiftKey && event.target === focusableElements[0]) {\r\n this._anchor.nativeElement.focus();\r\n event.preventDefault();\r\n }\r\n else if (!event.shiftKey && event.target === focusableElements[focusableElements.length - 1]) {\r\n this._anchor.nativeElement.focus();\r\n this.close();\r\n }\r\n }\r\n else {\r\n fromEvent(event.target, 'focusout').pipe(take(1)).subscribe(({ relatedTarget }) => {\r\n if (!this._elementRef.nativeElement.contains(relatedTarget)) {\r\n this.close();\r\n }\r\n });\r\n }\r\n }\r\n return;\r\n }\r\n // opening / navigating\r\n if (isEventFromToggle || itemElement) {\r\n this.open();\r\n if (itemElements.length) {\r\n switch (key) {\r\n case Key.ArrowDown:\r\n position = Math.min(position + 1, itemElements.length - 1);\r\n break;\r\n case Key.ArrowUp:\r\n if (this._isDropup() && position === -1) {\r\n position = itemElements.length - 1;\r\n break;\r\n }\r\n position = Math.max(position - 1, 0);\r\n break;\r\n case Key.Home:\r\n position = 0;\r\n break;\r\n case Key.End:\r\n position = itemElements.length - 1;\r\n break;\r\n }\r\n itemElements[position].focus();\r\n }\r\n event.preventDefault();\r\n }\r\n }\r\n _isDropup() { return this._elementRef.nativeElement.classList.contains('dropup'); }\r\n _isEventFromToggle(event) {\r\n return this._anchor.nativeElement.contains(event.target);\r\n }\r\n _getMenuElements() {\r\n const menu = this._menu;\r\n if (menu == null) {\r\n return [];\r\n }\r\n return menu.menuItems.filter(item => !item.disabled).map(item => item.elementRef.nativeElement);\r\n }\r\n _positionMenu() {\r\n const menu = this._menu;\r\n if (this.isOpen() && menu) {\r\n this._applyPlacementClasses(this.display === 'dynamic' ? positionElements(this._anchor.nativeElement, this._bodyContainer || this._menu.nativeElement, this.placement, this.container === 'body') :\r\n this._getFirstPlacement(this.placement));\r\n }\r\n }\r\n _getFirstPlacement(placement) {\r\n return Array.isArray(placement) ? placement[0] : placement.split(' ')[0];\r\n }\r\n _resetContainer() {\r\n const renderer = this._renderer;\r\n if (this._menu) {\r\n const dropdownElement = this._elementRef.nativeElement;\r\n const dropdownMenuElement = this._menu.nativeElement;\r\n renderer.appendChild(dropdownElement, dropdownMenuElement);\r\n renderer.removeStyle(dropdownMenuElement, 'position');\r\n renderer.removeStyle(dropdownMenuElement, 'transform');\r\n }\r\n if (this._bodyContainer) {\r\n renderer.removeChild(this._document.body, this._bodyContainer);\r\n this._bodyContainer = null;\r\n }\r\n }\r\n _applyContainer(container = null) {\r\n this._resetContainer();\r\n if (container === 'body') {\r\n const renderer = this._renderer;\r\n const dropdownMenuElement = this._menu.nativeElement;\r\n const bodyContainer = this._bodyContainer = this._bodyContainer || renderer.createElement('div');\r\n // Override some styles to have the positioning working\r\n renderer.setStyle(bodyContainer, 'position', 'absolute');\r\n renderer.setStyle(dropdownMenuElement, 'position', 'static');\r\n renderer.setStyle(bodyContainer, 'z-index', '1050');\r\n renderer.appendChild(bodyContainer, dropdownMenuElement);\r\n renderer.appendChild(this._document.body, bodyContainer);\r\n }\r\n this._applyCustomDropdownClass(this.dropdownClass);\r\n }\r\n _applyCustomDropdownClass(newClass, oldClass) {\r\n const targetElement = this.container === 'body' ? this._bodyContainer : this._elementRef.nativeElement;\r\n if (targetElement) {\r\n if (oldClass) {\r\n this._renderer.removeClass(targetElement, oldClass);\r\n }\r\n if (newClass) {\r\n this._renderer.addClass(targetElement, newClass);\r\n }\r\n }\r\n }\r\n _applyPlacementClasses(placement) {\r\n const menu = this._menu;\r\n if (menu) {\r\n if (!placement) {\r\n placement = this._getFirstPlacement(this.placement);\r\n }\r\n const renderer = this._renderer;\r\n const dropdownElement = this._elementRef.nativeElement;\r\n // remove the current placement classes\r\n renderer.removeClass(dropdownElement, 'dropup');\r\n renderer.removeClass(dropdownElement, 'dropdown');\r\n menu.placement = this.display === 'static' ? null : placement;\r\n /*\r\n * apply the new placement\r\n * in case of top use up-arrow or down-arrow otherwise\r\n */\r\n const dropdownClass = placement.search('^top') !== -1 ? 'dropup' : 'dropdown';\r\n renderer.addClass(dropdownElement, dropdownClass);\r\n const bodyContainer = this._bodyContainer;\r\n if (bodyContainer) {\r\n renderer.removeClass(bodyContainer, 'dropup');\r\n renderer.removeClass(bodyContainer, 'dropdown');\r\n renderer.addClass(bodyContainer, dropdownClass);\r\n }\r\n }\r\n }\r\n}\nNgbDropdown.ɵfac = function NgbDropdown_Factory(t) { return new (t || NgbDropdown)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbDropdownConfig), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(NgbNavbar, 8)); };\nNgbDropdown.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbDropdown, selectors: [[\"\", \"ngbDropdown\", \"\"]], contentQueries: function NgbDropdown_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownMenu, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbDropdownAnchor, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._menu = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._anchor = _t.first);\n } }, hostVars: 2, hostBindings: function NgbDropdown_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"show\", ctx.isOpen());\n } }, inputs: { _open: [\"open\", \"_open\"], placement: \"placement\", container: \"container\", autoClose: \"autoClose\", display: \"display\", dropdownClass: \"dropdownClass\" }, outputs: { openChange: \"openChange\" }, exportAs: [\"ngbDropdown\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\r\nNgbDropdown.ctorParameters = () => [\r\n { type: ChangeDetectorRef },\r\n { type: NgbDropdownConfig },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: NgZone },\r\n { type: ElementRef },\r\n { type: Renderer2 },\r\n { type: NgbNavbar, decorators: [{ type: Optional }] }\r\n];\r\nNgbDropdown.propDecorators = {\r\n _menu: [{ type: ContentChild, args: [NgbDropdownMenu, { static: false },] }],\r\n _anchor: [{ type: ContentChild, args: [NgbDropdownAnchor, { static: false },] }],\r\n autoClose: [{ type: Input }],\r\n dropdownClass: [{ type: Input }],\r\n _open: [{ type: Input, args: ['open',] }],\r\n placement: [{ type: Input }],\r\n container: [{ type: Input }],\r\n display: [{ type: Input }],\r\n openChange: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdown, [{\n type: Directive,\n args: [{ selector: '[ngbDropdown]', exportAs: 'ngbDropdown', host: { '[class.show]': 'isOpen()' } }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: NgbDropdownConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: NgbNavbar, decorators: [{\n type: Optional\n }] }]; }, { _open: [{\n type: Input,\n args: ['open']\n }], openChange: [{\n type: Output\n }], placement: [{\n type: Input\n }], container: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], display: [{\n type: Input\n }], _menu: [{\n type: ContentChild,\n args: [NgbDropdownMenu, { static: false }]\n }], _anchor: [{\n type: ContentChild,\n args: [NgbDropdownAnchor, { static: false }]\n }], dropdownClass: [{\n type: Input\n }] }); })();\n\nconst NGB_DROPDOWN_DIRECTIVES = [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar];\r\nclass NgbDropdownModule {\r\n}\nNgbDropdownModule.ɵfac = function NgbDropdownModule_Factory(t) { return new (t || NgbDropdownModule)(); };\nNgbDropdownModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbDropdownModule });\nNgbDropdownModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbDropdownModule, [{\n type: NgModule,\n args: [{ declarations: NGB_DROPDOWN_DIRECTIVES, exports: NGB_DROPDOWN_DIRECTIVES }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbDropdownModule, { declarations: [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar], exports: [NgbDropdown, NgbDropdownAnchor, NgbDropdownToggle, NgbDropdownMenu, NgbDropdownItem, NgbNavbar] }); })();\n\n/**\r\n * A configuration service for the [`NgbModal`](#/components/modal/api#NgbModal) service.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all modals used in the application.\r\n*\r\n* @since 3.1.0\r\n*/\r\nclass NgbModalConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.backdrop = true;\r\n this.keyboard = true;\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbModalConfig.ɵfac = function NgbModalConfig_Factory(t) { return new (t || NgbModalConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbModalConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbModalConfig_Factory() { return new NgbModalConfig(ɵɵinject(NgbConfig)); }, token: NgbModalConfig, providedIn: \"root\" });\r\nNgbModalConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nclass ContentRef {\r\n constructor(nodes, viewRef, componentRef) {\r\n this.nodes = nodes;\r\n this.viewRef = viewRef;\r\n this.componentRef = componentRef;\r\n }\r\n}\r\nclass PopupService {\r\n constructor(_type, _injector, _viewContainerRef, _renderer, _ngZone, _componentFactoryResolver, _applicationRef) {\r\n this._type = _type;\r\n this._injector = _injector;\r\n this._viewContainerRef = _viewContainerRef;\r\n this._renderer = _renderer;\r\n this._ngZone = _ngZone;\r\n this._componentFactoryResolver = _componentFactoryResolver;\r\n this._applicationRef = _applicationRef;\r\n this._windowRef = null;\r\n this._contentRef = null;\r\n }\r\n open(content, context, animation = false) {\r\n if (!this._windowRef) {\r\n this._contentRef = this._getContentRef(content, context);\r\n this._windowRef = this._viewContainerRef.createComponent(this._componentFactoryResolver.resolveComponentFactory(this._type), this._viewContainerRef.length, this._injector, this._contentRef.nodes);\r\n }\r\n const { nativeElement } = this._windowRef.location;\r\n const transition$ = this._ngZone.onStable.pipe(take(1), mergeMap(() => ngbRunTransition(this._ngZone, nativeElement, ({ classList }) => classList.add('show'), { animation, runningTransition: 'continue' })));\r\n return { windowRef: this._windowRef, transition$ };\r\n }\r\n close(animation = false) {\r\n if (!this._windowRef) {\r\n return of(undefined);\r\n }\r\n return ngbRunTransition(this._ngZone, this._windowRef.location.nativeElement, ({ classList }) => classList.remove('show'), { animation, runningTransition: 'stop' })\r\n .pipe(tap(() => {\r\n var _a;\r\n if (this._windowRef) {\r\n // this is required because of the container='body' option\r\n this._viewContainerRef.remove(this._viewContainerRef.indexOf(this._windowRef.hostView));\r\n this._windowRef = null;\r\n }\r\n if ((_a = this._contentRef) === null || _a === void 0 ? void 0 : _a.viewRef) {\r\n this._applicationRef.detachView(this._contentRef.viewRef);\r\n this._contentRef.viewRef.destroy();\r\n this._contentRef = null;\r\n }\r\n }));\r\n }\r\n _getContentRef(content, context) {\r\n if (!content) {\r\n return new ContentRef([]);\r\n }\r\n else if (content instanceof TemplateRef) {\r\n const viewRef = content.createEmbeddedView(context);\r\n this._applicationRef.attachView(viewRef);\r\n return new ContentRef([viewRef.rootNodes], viewRef);\r\n }\r\n else {\r\n return new ContentRef([[this._renderer.createText(`${content}`)]]);\r\n }\r\n }\r\n}\n\nconst noop = () => { };\r\nconst ɵ0$3 = noop;\r\n/**\r\n * Utility to handle the scrollbar.\r\n *\r\n * It allows to compensate the lack of a vertical scrollbar by adding an\r\n * equivalent padding on the right of the body, and to remove this compensation.\r\n */\r\nclass ScrollBar {\r\n constructor(_document) {\r\n this._document = _document;\r\n }\r\n /**\r\n * To be called right before a potential vertical scrollbar would be removed:\r\n *\r\n * - if there was a scrollbar, adds some compensation padding to the body\r\n * to keep the same layout as when the scrollbar is there\r\n * - if there was none, there is nothing to do\r\n *\r\n * @return a callback used to revert the compensation (noop if there was none,\r\n * otherwise a function removing the padding)\r\n */\r\n compensate() {\r\n const width = this._getWidth();\r\n return !this._isPresent(width) ? noop : this._adjustBody(width);\r\n }\r\n /**\r\n * Adds a padding of the given width on the right of the body.\r\n *\r\n * @return a callback used to revert the padding to its previous value\r\n */\r\n _adjustBody(scrollbarWidth) {\r\n const body = this._document.body;\r\n const userSetPaddingStyle = body.style.paddingRight;\r\n const actualPadding = parseFloat(window.getComputedStyle(body)['padding-right']);\r\n body.style['padding-right'] = `${actualPadding + scrollbarWidth}px`;\r\n return () => body.style['padding-right'] = userSetPaddingStyle;\r\n }\r\n /**\r\n * Tells whether a scrollbar is currently present on the body.\r\n *\r\n * @return true if scrollbar is present, false otherwise\r\n */\r\n _isPresent(scrollbarWidth) {\r\n const rect = this._document.body.getBoundingClientRect();\r\n const bodyToViewportGap = window.innerWidth - (rect.left + rect.right);\r\n const uncertainty = 0.1 * scrollbarWidth;\r\n return bodyToViewportGap >= scrollbarWidth - uncertainty;\r\n }\r\n /**\r\n * Calculates and returns the width of a scrollbar.\r\n *\r\n * @return the width of a scrollbar on this page\r\n */\r\n _getWidth() {\r\n const measurer = this._document.createElement('div');\r\n measurer.className = 'modal-scrollbar-measure';\r\n const body = this._document.body;\r\n body.appendChild(measurer);\r\n const width = measurer.getBoundingClientRect().width - measurer.clientWidth;\r\n body.removeChild(measurer);\r\n return width;\r\n }\r\n}\nScrollBar.ɵfac = function ScrollBar_Factory(t) { return new (t || ScrollBar)(ɵngcc0.ɵɵinject(DOCUMENT)); };\r\nScrollBar.ɵprov = ɵɵdefineInjectable({ factory: function ScrollBar_Factory() { return new ScrollBar(ɵɵinject(DOCUMENT)); }, token: ScrollBar, providedIn: \"root\" });\r\nScrollBar.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ScrollBar, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, null); })();\n\nclass NgbModalBackdrop {\r\n constructor(_el, _zone) {\r\n this._el = _el;\r\n this._zone = _zone;\r\n }\r\n ngOnInit() {\r\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\r\n ngbRunTransition(this._zone, this._el.nativeElement, (element, animation) => {\r\n if (animation) {\r\n reflow(element);\r\n }\r\n element.classList.add('show');\r\n }, { animation: this.animation, runningTransition: 'continue' });\r\n });\r\n }\r\n hide() {\r\n return ngbRunTransition(this._zone, this._el.nativeElement, ({ classList }) => classList.remove('show'), { animation: this.animation, runningTransition: 'stop' });\r\n }\r\n}\nNgbModalBackdrop.ɵfac = function NgbModalBackdrop_Factory(t) { return new (t || NgbModalBackdrop)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbModalBackdrop.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbModalBackdrop, selectors: [[\"ngb-modal-backdrop\"]], hostAttrs: [2, \"z-index\", \"1050\"], hostVars: 6, hostBindings: function NgbModalBackdrop_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassMap(\"modal-backdrop\" + (ctx.backdropClass ? \" \" + ctx.backdropClass : \"\"));\n ɵngcc0.ɵɵclassProp(\"show\", !ctx.animation)(\"fade\", ctx.animation);\n } }, inputs: { animation: \"animation\", backdropClass: \"backdropClass\" }, decls: 0, vars: 0, template: function NgbModalBackdrop_Template(rf, ctx) { }, encapsulation: 2 });\r\nNgbModalBackdrop.ctorParameters = () => [\r\n { type: ElementRef },\r\n { type: NgZone }\r\n];\r\nNgbModalBackdrop.propDecorators = {\r\n animation: [{ type: Input }],\r\n backdropClass: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalBackdrop, [{\n type: Component,\n args: [{\n selector: 'ngb-modal-backdrop',\n encapsulation: ViewEncapsulation.None,\n template: '',\n host: {\n '[class]': '\"modal-backdrop\" + (backdropClass ? \" \" + backdropClass : \"\")',\n '[class.show]': '!animation',\n '[class.fade]': 'animation',\n 'style': 'z-index: 1050'\n }\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { animation: [{\n type: Input\n }], backdropClass: [{\n type: Input\n }] }); })();\n\n/**\r\n * A reference to the currently opened (active) modal.\r\n *\r\n * Instances of this class can be injected into your component passed as modal content.\r\n * So you can `.close()` or `.dismiss()` the modal window from your component.\r\n */\r\nclass NgbActiveModal {\r\n /**\r\n * Closes the modal with an optional `result` value.\r\n *\r\n * The `NgbModalRef.result` promise will be resolved with the provided value.\r\n */\r\n close(result) { }\r\n /**\r\n * Dismisses the modal with an optional `reason` value.\r\n *\r\n * The `NgbModalRef.result` promise will be rejected with the provided value.\r\n */\r\n dismiss(reason) { }\r\n}\r\n/**\r\n * A reference to the newly opened modal returned by the `NgbModal.open()` method.\r\n */\r\nclass NgbModalRef {\r\n constructor(_windowCmptRef, _contentRef, _backdropCmptRef, _beforeDismiss) {\r\n this._windowCmptRef = _windowCmptRef;\r\n this._contentRef = _contentRef;\r\n this._backdropCmptRef = _backdropCmptRef;\r\n this._beforeDismiss = _beforeDismiss;\r\n this._closed = new Subject();\r\n this._dismissed = new Subject();\r\n this._hidden = new Subject();\r\n _windowCmptRef.instance.dismissEvent.subscribe((reason) => { this.dismiss(reason); });\r\n this.result = new Promise((resolve, reject) => {\r\n this._resolve = resolve;\r\n this._reject = reject;\r\n });\r\n this.result.then(null, () => { });\r\n }\r\n /**\r\n * The instance of a component used for the modal content.\r\n *\r\n * When a `TemplateRef` is used as the content or when the modal is closed, will return `undefined`.\r\n */\r\n get componentInstance() {\r\n if (this._contentRef && this._contentRef.componentRef) {\r\n return this._contentRef.componentRef.instance;\r\n }\r\n }\r\n /**\r\n * The observable that emits when the modal is closed via the `.close()` method.\r\n *\r\n * It will emit the result passed to the `.close()` method.\r\n *\r\n * @since 8.0.0\r\n */\r\n get closed() { return this._closed.asObservable().pipe(takeUntil(this._hidden)); }\r\n /**\r\n * The observable that emits when the modal is dismissed via the `.dismiss()` method.\r\n *\r\n * It will emit the reason passed to the `.dismissed()` method by the user, or one of the internal\r\n * reasons like backdrop click or ESC key press.\r\n *\r\n * @since 8.0.0\r\n */\r\n get dismissed() { return this._dismissed.asObservable().pipe(takeUntil(this._hidden)); }\r\n /**\r\n * The observable that emits when both modal window and backdrop are closed and animations were finished.\r\n * At this point modal and backdrop elements will be removed from the DOM tree.\r\n *\r\n * This observable will be completed after emitting.\r\n *\r\n * @since 8.0.0\r\n */\r\n get hidden() { return this._hidden.asObservable(); }\r\n /**\r\n * The observable that emits when modal is fully visible and animation was finished.\r\n * Modal DOM element is always available synchronously after calling 'modal.open()' service.\r\n *\r\n * This observable will be completed after emitting.\r\n * It will not emit, if modal is closed before open animation is finished.\r\n *\r\n * @since 8.0.0\r\n */\r\n get shown() { return this._windowCmptRef.instance.shown.asObservable(); }\r\n /**\r\n * Closes the modal with an optional `result` value.\r\n *\r\n * The `NgbMobalRef.result` promise will be resolved with the provided value.\r\n */\r\n close(result) {\r\n if (this._windowCmptRef) {\r\n this._closed.next(result);\r\n this._resolve(result);\r\n this._removeModalElements();\r\n }\r\n }\r\n _dismiss(reason) {\r\n this._dismissed.next(reason);\r\n this._reject(reason);\r\n this._removeModalElements();\r\n }\r\n /**\r\n * Dismisses the modal with an optional `reason` value.\r\n *\r\n * The `NgbModalRef.result` promise will be rejected with the provided value.\r\n */\r\n dismiss(reason) {\r\n if (this._windowCmptRef) {\r\n if (!this._beforeDismiss) {\r\n this._dismiss(reason);\r\n }\r\n else {\r\n const dismiss = this._beforeDismiss();\r\n if (dismiss && dismiss.then) {\r\n dismiss.then(result => {\r\n if (result !== false) {\r\n this._dismiss(reason);\r\n }\r\n }, () => { });\r\n }\r\n else if (dismiss !== false) {\r\n this._dismiss(reason);\r\n }\r\n }\r\n }\r\n }\r\n _removeModalElements() {\r\n const windowTransition$ = this._windowCmptRef.instance.hide();\r\n const backdropTransition$ = this._backdropCmptRef ? this._backdropCmptRef.instance.hide() : of(undefined);\r\n // hiding window\r\n windowTransition$.subscribe(() => {\r\n const { nativeElement } = this._windowCmptRef.location;\r\n nativeElement.parentNode.removeChild(nativeElement);\r\n this._windowCmptRef.destroy();\r\n if (this._contentRef && this._contentRef.viewRef) {\r\n this._contentRef.viewRef.destroy();\r\n }\r\n this._windowCmptRef = null;\r\n this._contentRef = null;\r\n });\r\n // hiding backdrop\r\n backdropTransition$.subscribe(() => {\r\n if (this._backdropCmptRef) {\r\n const { nativeElement } = this._backdropCmptRef.location;\r\n nativeElement.parentNode.removeChild(nativeElement);\r\n this._backdropCmptRef.destroy();\r\n this._backdropCmptRef = null;\r\n }\r\n });\r\n // all done\r\n zip(windowTransition$, backdropTransition$).subscribe(() => {\r\n this._hidden.next();\r\n this._hidden.complete();\r\n });\r\n }\r\n}\n\nvar ModalDismissReasons;\r\n(function (ModalDismissReasons) {\r\n ModalDismissReasons[ModalDismissReasons[\"BACKDROP_CLICK\"] = 0] = \"BACKDROP_CLICK\";\r\n ModalDismissReasons[ModalDismissReasons[\"ESC\"] = 1] = \"ESC\";\r\n})(ModalDismissReasons || (ModalDismissReasons = {}));\n\nclass NgbModalWindow {\r\n constructor(_document, _elRef, _zone) {\r\n this._document = _document;\r\n this._elRef = _elRef;\r\n this._zone = _zone;\r\n this._closed$ = new Subject();\r\n this._elWithFocus = null; // element that is focused prior to modal opening\r\n this.backdrop = true;\r\n this.keyboard = true;\r\n this.dismissEvent = new EventEmitter();\r\n this.shown = new Subject();\r\n this.hidden = new Subject();\r\n }\r\n dismiss(reason) { this.dismissEvent.emit(reason); }\r\n ngOnInit() {\r\n this._elWithFocus = this._document.activeElement;\r\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => { this._show(); });\r\n }\r\n ngOnDestroy() { this._disableEventHandling(); }\r\n hide() {\r\n const { nativeElement } = this._elRef;\r\n const context = { animation: this.animation, runningTransition: 'stop' };\r\n const windowTransition$ = ngbRunTransition(this._zone, nativeElement, () => nativeElement.classList.remove('show'), context);\r\n const dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, () => { }, context);\r\n const transitions$ = zip(windowTransition$, dialogTransition$);\r\n transitions$.subscribe(() => {\r\n this.hidden.next();\r\n this.hidden.complete();\r\n });\r\n this._disableEventHandling();\r\n this._restoreFocus();\r\n return transitions$;\r\n }\r\n _show() {\r\n const context = { animation: this.animation, runningTransition: 'continue' };\r\n const windowTransition$ = ngbRunTransition(this._zone, this._elRef.nativeElement, (element, animation) => {\r\n if (animation) {\r\n reflow(element);\r\n }\r\n element.classList.add('show');\r\n }, context);\r\n const dialogTransition$ = ngbRunTransition(this._zone, this._dialogEl.nativeElement, () => { }, context);\r\n zip(windowTransition$, dialogTransition$).subscribe(() => {\r\n this.shown.next();\r\n this.shown.complete();\r\n });\r\n this._enableEventHandling();\r\n this._setFocus();\r\n }\r\n _enableEventHandling() {\r\n const { nativeElement } = this._elRef;\r\n this._zone.runOutsideAngular(() => {\r\n fromEvent(nativeElement, 'keydown')\r\n .pipe(takeUntil(this._closed$), \r\n // tslint:disable-next-line:deprecation\r\n filter(e => e.which === Key.Escape))\r\n .subscribe(event => {\r\n if (this.keyboard) {\r\n requestAnimationFrame(() => {\r\n if (!event.defaultPrevented) {\r\n this._zone.run(() => this.dismiss(ModalDismissReasons.ESC));\r\n }\r\n });\r\n }\r\n else if (this.backdrop === 'static') {\r\n this._bumpBackdrop();\r\n }\r\n });\r\n // We're listening to 'mousedown' and 'mouseup' to prevent modal from closing when pressing the mouse\r\n // inside the modal dialog and releasing it outside\r\n let preventClose = false;\r\n fromEvent(this._dialogEl.nativeElement, 'mousedown')\r\n .pipe(takeUntil(this._closed$), tap(() => preventClose = false), switchMap(() => fromEvent(nativeElement, 'mouseup').pipe(takeUntil(this._closed$), take(1))), filter(({ target }) => nativeElement === target))\r\n .subscribe(() => { preventClose = true; });\r\n // We're listening to 'click' to dismiss modal on modal window click, except when:\r\n // 1. clicking on modal dialog itself\r\n // 2. closing was prevented by mousedown/up handlers\r\n // 3. clicking on scrollbar when the viewport is too small and modal doesn't fit (click is not triggered at all)\r\n fromEvent(nativeElement, 'click').pipe(takeUntil(this._closed$)).subscribe(({ target }) => {\r\n if (nativeElement === target) {\r\n if (this.backdrop === 'static') {\r\n this._bumpBackdrop();\r\n }\r\n else if (this.backdrop === true && !preventClose) {\r\n this._zone.run(() => this.dismiss(ModalDismissReasons.BACKDROP_CLICK));\r\n }\r\n }\r\n preventClose = false;\r\n });\r\n });\r\n }\r\n _disableEventHandling() { this._closed$.next(); }\r\n _setFocus() {\r\n const { nativeElement } = this._elRef;\r\n if (!nativeElement.contains(document.activeElement)) {\r\n const autoFocusable = nativeElement.querySelector(`[ngbAutofocus]`);\r\n const firstFocusable = getFocusableBoundaryElements(nativeElement)[0];\r\n const elementToFocus = autoFocusable || firstFocusable || nativeElement;\r\n elementToFocus.focus();\r\n }\r\n }\r\n _restoreFocus() {\r\n const body = this._document.body;\r\n const elWithFocus = this._elWithFocus;\r\n let elementToFocus;\r\n if (elWithFocus && elWithFocus['focus'] && body.contains(elWithFocus)) {\r\n elementToFocus = elWithFocus;\r\n }\r\n else {\r\n elementToFocus = body;\r\n }\r\n this._zone.runOutsideAngular(() => {\r\n setTimeout(() => elementToFocus.focus());\r\n this._elWithFocus = null;\r\n });\r\n }\r\n _bumpBackdrop() {\r\n if (this.backdrop === 'static') {\r\n ngbRunTransition(this._zone, this._elRef.nativeElement, ({ classList }) => {\r\n classList.add('modal-static');\r\n return () => classList.remove('modal-static');\r\n }, { animation: this.animation, runningTransition: 'continue' });\r\n }\r\n }\r\n}\nNgbModalWindow.ɵfac = function NgbModalWindow_Factory(t) { return new (t || NgbModalWindow)(ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbModalWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbModalWindow, selectors: [[\"ngb-modal-window\"]], viewQuery: function NgbModalWindow_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c31, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._dialogEl = _t.first);\n } }, hostAttrs: [\"role\", \"dialog\", \"tabindex\", \"-1\"], hostVars: 7, hostBindings: function NgbModalWindow_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-modal\", true)(\"aria-labelledby\", ctx.ariaLabelledBy)(\"aria-describedby\", ctx.ariaDescribedBy);\n ɵngcc0.ɵɵclassMap(\"modal d-block\" + (ctx.windowClass ? \" \" + ctx.windowClass : \"\"));\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n } }, inputs: { backdrop: \"backdrop\", keyboard: \"keyboard\", animation: \"animation\", ariaLabelledBy: \"ariaLabelledBy\", ariaDescribedBy: \"ariaDescribedBy\", centered: \"centered\", scrollable: \"scrollable\", size: \"size\", windowClass: \"windowClass\", modalDialogClass: \"modalDialogClass\" }, outputs: { dismissEvent: \"dismiss\" }, ngContentSelectors: _c3, decls: 4, vars: 2, consts: [[\"role\", \"document\"], [\"dialog\", \"\"], [1, \"modal-content\"]], template: function NgbModalWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0, 1)(2, \"div\", 2);\n ɵngcc0.ɵɵprojection(3);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMap(\"modal-dialog\" + (ctx.size ? \" modal-\" + ctx.size : \"\") + (ctx.centered ? \" modal-dialog-centered\" : \"\") + (ctx.scrollable ? \" modal-dialog-scrollable\" : \"\") + (ctx.modalDialogClass ? \" \" + ctx.modalDialogClass : \"\"));\n } }, styles: [\"ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}\"], encapsulation: 2 });\r\nNgbModalWindow.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: ElementRef },\r\n { type: NgZone }\r\n];\r\nNgbModalWindow.propDecorators = {\r\n _dialogEl: [{ type: ViewChild, args: ['dialog', { static: true },] }],\r\n animation: [{ type: Input }],\r\n ariaLabelledBy: [{ type: Input }],\r\n ariaDescribedBy: [{ type: Input }],\r\n backdrop: [{ type: Input }],\r\n centered: [{ type: Input }],\r\n keyboard: [{ type: Input }],\r\n scrollable: [{ type: Input }],\r\n size: [{ type: Input }],\r\n windowClass: [{ type: Input }],\r\n modalDialogClass: [{ type: Input }],\r\n dismissEvent: [{ type: Output, args: ['dismiss',] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-modal-window',\n host: {\n '[class]': '\"modal d-block\" + (windowClass ? \" \" + windowClass : \"\")',\n '[class.fade]': 'animation',\n 'role': 'dialog',\n 'tabindex': '-1',\n '[attr.aria-modal]': 'true',\n '[attr.aria-labelledby]': 'ariaLabelledBy',\n '[attr.aria-describedby]': 'ariaDescribedBy'\n },\n template: `\r\n
\r\n
\r\n
\r\n `,\n encapsulation: ViewEncapsulation.None,\n styles: [\"ngb-modal-window .component-host-scrollable{display:flex;flex-direction:column;overflow:hidden}\"]\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { backdrop: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], dismissEvent: [{\n type: Output,\n args: ['dismiss']\n }], _dialogEl: [{\n type: ViewChild,\n args: ['dialog', { static: true }]\n }], animation: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], ariaDescribedBy: [{\n type: Input\n }], centered: [{\n type: Input\n }], scrollable: [{\n type: Input\n }], size: [{\n type: Input\n }], windowClass: [{\n type: Input\n }], modalDialogClass: [{\n type: Input\n }] }); })();\n\nclass NgbModalStack {\r\n constructor(_applicationRef, _injector, _document, _scrollBar, _rendererFactory, _ngZone) {\r\n this._applicationRef = _applicationRef;\r\n this._injector = _injector;\r\n this._document = _document;\r\n this._scrollBar = _scrollBar;\r\n this._rendererFactory = _rendererFactory;\r\n this._ngZone = _ngZone;\r\n this._activeWindowCmptHasChanged = new Subject();\r\n this._ariaHiddenValues = new Map();\r\n this._backdropAttributes = ['animation', 'backdropClass'];\r\n this._modalRefs = [];\r\n this._windowAttributes = [\r\n 'animation', 'ariaLabelledBy', 'ariaDescribedBy', 'backdrop', 'centered', 'keyboard', 'scrollable', 'size',\r\n 'windowClass', 'modalDialogClass'\r\n ];\r\n this._windowCmpts = [];\r\n this._activeInstances = new EventEmitter();\r\n // Trap focus on active WindowCmpt\r\n this._activeWindowCmptHasChanged.subscribe(() => {\r\n if (this._windowCmpts.length) {\r\n const activeWindowCmpt = this._windowCmpts[this._windowCmpts.length - 1];\r\n ngbFocusTrap(this._ngZone, activeWindowCmpt.location.nativeElement, this._activeWindowCmptHasChanged);\r\n this._revertAriaHidden();\r\n this._setAriaHidden(activeWindowCmpt.location.nativeElement);\r\n }\r\n });\r\n }\r\n open(moduleCFR, contentInjector, content, options) {\r\n const containerEl = options.container instanceof HTMLElement ? options.container : isDefined(options.container) ?\r\n this._document.querySelector(options.container) :\r\n this._document.body;\r\n const renderer = this._rendererFactory.createRenderer(null, null);\r\n const revertPaddingForScrollBar = this._scrollBar.compensate();\r\n const removeBodyClass = () => {\r\n if (!this._modalRefs.length) {\r\n renderer.removeClass(this._document.body, 'modal-open');\r\n this._revertAriaHidden();\r\n }\r\n };\r\n if (!containerEl) {\r\n throw new Error(`The specified modal container \"${options.container || 'body'}\" was not found in the DOM.`);\r\n }\r\n const activeModal = new NgbActiveModal();\r\n const contentRef = this._getContentRef(moduleCFR, options.injector || contentInjector, content, activeModal, options);\r\n let backdropCmptRef = options.backdrop !== false ? this._attachBackdrop(moduleCFR, containerEl) : undefined;\r\n let windowCmptRef = this._attachWindowComponent(moduleCFR, containerEl, contentRef);\r\n let ngbModalRef = new NgbModalRef(windowCmptRef, contentRef, backdropCmptRef, options.beforeDismiss);\r\n this._registerModalRef(ngbModalRef);\r\n this._registerWindowCmpt(windowCmptRef);\r\n ngbModalRef.result.then(revertPaddingForScrollBar, revertPaddingForScrollBar);\r\n ngbModalRef.result.then(removeBodyClass, removeBodyClass);\r\n activeModal.close = (result) => { ngbModalRef.close(result); };\r\n activeModal.dismiss = (reason) => { ngbModalRef.dismiss(reason); };\r\n this._applyWindowOptions(windowCmptRef.instance, options);\r\n if (this._modalRefs.length === 1) {\r\n renderer.addClass(this._document.body, 'modal-open');\r\n }\r\n if (backdropCmptRef && backdropCmptRef.instance) {\r\n this._applyBackdropOptions(backdropCmptRef.instance, options);\r\n backdropCmptRef.changeDetectorRef.detectChanges();\r\n }\r\n windowCmptRef.changeDetectorRef.detectChanges();\r\n return ngbModalRef;\r\n }\r\n get activeInstances() { return this._activeInstances; }\r\n dismissAll(reason) { this._modalRefs.forEach(ngbModalRef => ngbModalRef.dismiss(reason)); }\r\n hasOpenModals() { return this._modalRefs.length > 0; }\r\n _attachBackdrop(moduleCFR, containerEl) {\r\n let backdropFactory = moduleCFR.resolveComponentFactory(NgbModalBackdrop);\r\n let backdropCmptRef = backdropFactory.create(this._injector);\r\n this._applicationRef.attachView(backdropCmptRef.hostView);\r\n containerEl.appendChild(backdropCmptRef.location.nativeElement);\r\n return backdropCmptRef;\r\n }\r\n _attachWindowComponent(moduleCFR, containerEl, contentRef) {\r\n let windowFactory = moduleCFR.resolveComponentFactory(NgbModalWindow);\r\n let windowCmptRef = windowFactory.create(this._injector, contentRef.nodes);\r\n this._applicationRef.attachView(windowCmptRef.hostView);\r\n containerEl.appendChild(windowCmptRef.location.nativeElement);\r\n return windowCmptRef;\r\n }\r\n _applyWindowOptions(windowInstance, options) {\r\n this._windowAttributes.forEach((optionName) => {\r\n if (isDefined(options[optionName])) {\r\n windowInstance[optionName] = options[optionName];\r\n }\r\n });\r\n }\r\n _applyBackdropOptions(backdropInstance, options) {\r\n this._backdropAttributes.forEach((optionName) => {\r\n if (isDefined(options[optionName])) {\r\n backdropInstance[optionName] = options[optionName];\r\n }\r\n });\r\n }\r\n _getContentRef(moduleCFR, contentInjector, content, activeModal, options) {\r\n if (!content) {\r\n return new ContentRef([]);\r\n }\r\n else if (content instanceof TemplateRef) {\r\n return this._createFromTemplateRef(content, activeModal);\r\n }\r\n else if (isString(content)) {\r\n return this._createFromString(content);\r\n }\r\n else {\r\n return this._createFromComponent(moduleCFR, contentInjector, content, activeModal, options);\r\n }\r\n }\r\n _createFromTemplateRef(content, activeModal) {\r\n const context = {\r\n $implicit: activeModal,\r\n close(result) { activeModal.close(result); },\r\n dismiss(reason) { activeModal.dismiss(reason); }\r\n };\r\n const viewRef = content.createEmbeddedView(context);\r\n this._applicationRef.attachView(viewRef);\r\n return new ContentRef([viewRef.rootNodes], viewRef);\r\n }\r\n _createFromString(content) {\r\n const component = this._document.createTextNode(`${content}`);\r\n return new ContentRef([[component]]);\r\n }\r\n _createFromComponent(moduleCFR, contentInjector, content, context, options) {\r\n const contentCmptFactory = moduleCFR.resolveComponentFactory(content);\r\n const modalContentInjector = Injector.create({ providers: [{ provide: NgbActiveModal, useValue: context }], parent: contentInjector });\r\n const componentRef = contentCmptFactory.create(modalContentInjector);\r\n const componentNativeEl = componentRef.location.nativeElement;\r\n if (options.scrollable) {\r\n componentNativeEl.classList.add('component-host-scrollable');\r\n }\r\n this._applicationRef.attachView(componentRef.hostView);\r\n // FIXME: we should here get rid of the component nativeElement\r\n // and use `[Array.from(componentNativeEl.childNodes)]` instead and remove the above CSS class.\r\n return new ContentRef([[componentNativeEl]], componentRef.hostView, componentRef);\r\n }\r\n _setAriaHidden(element) {\r\n const parent = element.parentElement;\r\n if (parent && element !== this._document.body) {\r\n Array.from(parent.children).forEach(sibling => {\r\n if (sibling !== element && sibling.nodeName !== 'SCRIPT') {\r\n this._ariaHiddenValues.set(sibling, sibling.getAttribute('aria-hidden'));\r\n sibling.setAttribute('aria-hidden', 'true');\r\n }\r\n });\r\n this._setAriaHidden(parent);\r\n }\r\n }\r\n _revertAriaHidden() {\r\n this._ariaHiddenValues.forEach((value, element) => {\r\n if (value) {\r\n element.setAttribute('aria-hidden', value);\r\n }\r\n else {\r\n element.removeAttribute('aria-hidden');\r\n }\r\n });\r\n this._ariaHiddenValues.clear();\r\n }\r\n _registerModalRef(ngbModalRef) {\r\n const unregisterModalRef = () => {\r\n const index = this._modalRefs.indexOf(ngbModalRef);\r\n if (index > -1) {\r\n this._modalRefs.splice(index, 1);\r\n this._activeInstances.emit(this._modalRefs);\r\n }\r\n };\r\n this._modalRefs.push(ngbModalRef);\r\n this._activeInstances.emit(this._modalRefs);\r\n ngbModalRef.result.then(unregisterModalRef, unregisterModalRef);\r\n }\r\n _registerWindowCmpt(ngbWindowCmpt) {\r\n this._windowCmpts.push(ngbWindowCmpt);\r\n this._activeWindowCmptHasChanged.next();\r\n ngbWindowCmpt.onDestroy(() => {\r\n const index = this._windowCmpts.indexOf(ngbWindowCmpt);\r\n if (index > -1) {\r\n this._windowCmpts.splice(index, 1);\r\n this._activeWindowCmptHasChanged.next();\r\n }\r\n });\r\n }\r\n}\nNgbModalStack.ɵfac = function NgbModalStack_Factory(t) { return new (t || NgbModalStack)(ɵngcc0.ɵɵinject(ɵngcc0.ApplicationRef), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ScrollBar), ɵngcc0.ɵɵinject(ɵngcc0.RendererFactory2), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\r\nNgbModalStack.ɵprov = ɵɵdefineInjectable({ factory: function NgbModalStack_Factory() { return new NgbModalStack(ɵɵinject(ApplicationRef), ɵɵinject(INJECTOR), ɵɵinject(DOCUMENT), ɵɵinject(ScrollBar), ɵɵinject(RendererFactory2), ɵɵinject(NgZone)); }, token: NgbModalStack, providedIn: \"root\" });\r\nNgbModalStack.ctorParameters = () => [\r\n { type: ApplicationRef },\r\n { type: Injector },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: ScrollBar },\r\n { type: RendererFactory2 },\r\n { type: NgZone }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalStack, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.ApplicationRef }, { type: ɵngcc0.Injector }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ScrollBar }, { type: ɵngcc0.RendererFactory2 }, { type: ɵngcc0.NgZone }]; }, null); })();\n\n/**\r\n * A service for opening modal windows.\r\n *\r\n * Creating a modal is straightforward: create a component or a template and pass it as an argument to\r\n * the `.open()` method.\r\n */\r\nclass NgbModal {\r\n constructor(_moduleCFR, _injector, _modalStack, _config) {\r\n this._moduleCFR = _moduleCFR;\r\n this._injector = _injector;\r\n this._modalStack = _modalStack;\r\n this._config = _config;\r\n }\r\n /**\r\n * Opens a new modal window with the specified content and supplied options.\r\n *\r\n * Content can be provided as a `TemplateRef` or a component type. If you pass a component type as content,\r\n * then instances of those components can be injected with an instance of the `NgbActiveModal` class. You can then\r\n * use `NgbActiveModal` methods to close / dismiss modals from \"inside\" of your component.\r\n *\r\n * Also see the [`NgbModalOptions`](#/components/modal/api#NgbModalOptions) for the list of supported options.\r\n */\r\n open(content, options = {}) {\r\n const combinedOptions = Object.assign(Object.assign(Object.assign({}, this._config), { animation: this._config.animation }), options);\r\n return this._modalStack.open(this._moduleCFR, this._injector, content, combinedOptions);\r\n }\r\n /**\r\n * Returns an observable that holds the active modal instances.\r\n */\r\n get activeInstances() { return this._modalStack.activeInstances; }\r\n /**\r\n * Dismisses all currently displayed modal windows with the supplied reason.\r\n *\r\n * @since 3.1.0\r\n */\r\n dismissAll(reason) { this._modalStack.dismissAll(reason); }\r\n /**\r\n * Indicates if there are currently any open modal windows in the application.\r\n *\r\n * @since 3.3.0\r\n */\r\n hasOpenModals() { return this._modalStack.hasOpenModals(); }\r\n}\nNgbModal.ɵfac = function NgbModal_Factory(t) { return new (t || NgbModal)(ɵngcc0.ɵɵinject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵinject(ɵngcc0.Injector), ɵngcc0.ɵɵinject(NgbModalStack), ɵngcc0.ɵɵinject(NgbModalConfig)); };\r\nNgbModal.ɵprov = ɵɵdefineInjectable({ factory: function NgbModal_Factory() { return new NgbModal(ɵɵinject(ComponentFactoryResolver), ɵɵinject(INJECTOR), ɵɵinject(NgbModalStack), ɵɵinject(NgbModalConfig)); }, token: NgbModal, providedIn: \"root\" });\r\nNgbModal.ctorParameters = () => [\r\n { type: ComponentFactoryResolver },\r\n { type: Injector },\r\n { type: NgbModalStack },\r\n { type: NgbModalConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModal, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.Injector }, { type: NgbModalStack }, { type: NgbModalConfig }]; }, null); })();\n\nclass NgbModalModule {\r\n}\nNgbModalModule.ɵfac = function NgbModalModule_Factory(t) { return new (t || NgbModalModule)(); };\nNgbModalModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbModalModule });\nNgbModalModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [NgbModal] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModalModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbModalBackdrop, NgbModalWindow],\n entryComponents: [NgbModalBackdrop, NgbModalWindow],\n providers: [NgbModal]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbModalModule, { declarations: [NgbModalBackdrop, NgbModalWindow] }); })();\n\n/**\r\n * A configuration service for the [`NgbNav`](#/components/nav/api#NgbNav) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the navs used in the application.\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbNavConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.destroyOnHide = true;\r\n this.orientation = 'horizontal';\r\n this.roles = 'tablist';\r\n this.keyboard = false;\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbNavConfig.ɵfac = function NgbNavConfig_Factory(t) { return new (t || NgbNavConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbNavConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbNavConfig_Factory() { return new NgbNavConfig(ɵɵinject(NgbConfig)); }, token: NgbNavConfig, providedIn: \"root\" });\r\nNgbNavConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nconst isValidNavId = (id) => isDefined(id) && id !== '';\r\nconst ɵ0$4 = isValidNavId;\r\nlet navCounter = 0;\r\n/**\r\n * This directive must be used to wrap content to be displayed in the nav.\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbNavContent {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbNavContent.ɵfac = function NgbNavContent_Factory(t) { return new (t || NgbNavContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbNavContent.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavContent, selectors: [[\"ng-template\", \"ngbNavContent\", \"\"]] });\r\nNgbNavContent.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavContent, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbNavContent]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * The directive used to group nav link and related nav content. As well as set nav identifier and some options.\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbNavItem {\r\n constructor(nav, elementRef) {\r\n this.elementRef = elementRef;\r\n /**\r\n * If `true`, the current nav item is disabled and can't be toggled by user.\r\n *\r\n * Nevertheless disabled nav can be selected programmatically via the `.select()` method and the `[activeId]` binding.\r\n */\r\n this.disabled = false;\r\n /**\r\n * An event emitted when the fade in transition is finished on the related nav content\r\n *\r\n * @since 8.0.0\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event emitted when the fade out transition is finished on the related nav content\r\n *\r\n * @since 8.0.0\r\n */\r\n this.hidden = new EventEmitter();\r\n // TODO: cf https://github.com/angular/angular/issues/30106\r\n this._nav = nav;\r\n }\r\n ngAfterContentChecked() {\r\n // We are using @ContentChildren instead of @ContentChild as in the Angular version being used\r\n // only @ContentChildren allows us to specify the {descendants: false} option.\r\n // Without {descendants: false} we are hitting bugs described in:\r\n // https://github.com/ng-bootstrap/ng-bootstrap/issues/2240\r\n this.contentTpl = this.contentTpls.first;\r\n }\r\n ngOnInit() {\r\n if (!isDefined(this.domId)) {\r\n this.domId = `ngb-nav-${navCounter++}`;\r\n }\r\n }\r\n get active() { return this._nav.activeId === this.id; }\r\n get id() { return isValidNavId(this._id) ? this._id : this.domId; }\r\n get panelDomId() { return `${this.domId}-panel`; }\r\n isPanelInDom() {\r\n return (isDefined(this.destroyOnHide) ? !this.destroyOnHide : !this._nav.destroyOnHide) || this.active;\r\n }\r\n}\nNgbNavItem.ɵfac = function NgbNavItem_Factory(t) { return new (t || NgbNavItem)(ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgbNav)), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbNavItem.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavItem, selectors: [[\"\", \"ngbNavItem\", \"\"]], contentQueries: function NgbNavItem_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbNavContent, 4);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentTpls = _t);\n } }, hostVars: 2, hostBindings: function NgbNavItem_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"nav-item\", true);\n } }, inputs: { disabled: \"disabled\", domId: \"domId\", destroyOnHide: \"destroyOnHide\", _id: [\"ngbNavItem\", \"_id\"] }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbNavItem\"] });\r\nNgbNavItem.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => NgbNav),] }] },\r\n { type: ElementRef }\r\n];\r\nNgbNavItem.propDecorators = {\r\n destroyOnHide: [{ type: Input }],\r\n disabled: [{ type: Input }],\r\n domId: [{ type: Input }],\r\n _id: [{ type: Input, args: ['ngbNavItem',] }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }],\r\n contentTpls: [{ type: ContentChildren, args: [NgbNavContent, { descendants: false },] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavItem, [{\n type: Directive,\n args: [{ selector: '[ngbNavItem]', exportAs: 'ngbNavItem', host: { '[class.nav-item]': 'true' } }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgbNav)]\n }] }, { type: ɵngcc0.ElementRef }]; }, { disabled: [{\n type: Input\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], domId: [{\n type: Input\n }], destroyOnHide: [{\n type: Input\n }], _id: [{\n type: Input,\n args: ['ngbNavItem']\n }], contentTpls: [{\n type: ContentChildren,\n args: [NgbNavContent, { descendants: false }]\n }] }); })();\r\n/**\r\n * A nav directive that helps with implementing tabbed navigation components.\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbNav {\r\n constructor(role, config, _cd, _document) {\r\n this.role = role;\r\n this._cd = _cd;\r\n this._document = _document;\r\n /**\r\n * The event emitted after the active nav changes\r\n * The payload of the event is the newly active nav id\r\n *\r\n * If you want to prevent nav change, you should use `(navChange)` event\r\n */\r\n this.activeIdChange = new EventEmitter();\r\n /**\r\n * An event emitted when the fade in transition is finished for one of the items.\r\n *\r\n * Payload of the event is the nav id that was just shown.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event emitted when the fade out transition is finished for one of the items.\r\n *\r\n * Payload of the event is the nav id that was just hidden.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.hidden = new EventEmitter();\r\n this.destroy$ = new Subject();\r\n this.navItemChange$ = new Subject();\r\n /**\r\n * The nav change event emitted right before the nav change happens on user click.\r\n *\r\n * This event won't be emitted if nav is changed programmatically via `[activeId]` or `.select()`.\r\n *\r\n * See [`NgbNavChangeEvent`](#/components/nav/api#NgbNavChangeEvent) for payload details.\r\n */\r\n this.navChange = new EventEmitter();\r\n this.animation = config.animation;\r\n this.destroyOnHide = config.destroyOnHide;\r\n this.orientation = config.orientation;\r\n this.roles = config.roles;\r\n this.keyboard = config.keyboard;\r\n }\r\n click(item) {\r\n if (!item.disabled) {\r\n this._updateActiveId(item.id);\r\n }\r\n }\r\n onKeyDown(event) {\r\n if (this.roles !== 'tablist' || !this.keyboard) {\r\n return;\r\n }\r\n // tslint:disable-next-line: deprecation\r\n const key = event.which;\r\n const enabledLinks = this.links.filter(link => !link.navItem.disabled);\r\n const { length } = enabledLinks;\r\n let position = -1;\r\n enabledLinks.forEach((link, index) => {\r\n if (link.elRef.nativeElement === this._document.activeElement) {\r\n position = index;\r\n }\r\n });\r\n if (length) {\r\n switch (key) {\r\n case Key.ArrowLeft:\r\n if (this.orientation === 'vertical') {\r\n return;\r\n }\r\n position = (position - 1 + length) % length;\r\n break;\r\n case Key.ArrowRight:\r\n if (this.orientation === 'vertical') {\r\n return;\r\n }\r\n position = (position + 1) % length;\r\n break;\r\n case Key.ArrowDown:\r\n if (this.orientation === 'horizontal') {\r\n return;\r\n }\r\n position = (position + 1) % length;\r\n break;\r\n case Key.ArrowUp:\r\n if (this.orientation === 'horizontal') {\r\n return;\r\n }\r\n position = (position - 1 + length) % length;\r\n break;\r\n case Key.Home:\r\n position = 0;\r\n break;\r\n case Key.End:\r\n position = length - 1;\r\n break;\r\n }\r\n if (this.keyboard === 'changeWithArrows') {\r\n this.select(enabledLinks[position].navItem.id);\r\n }\r\n enabledLinks[position].elRef.nativeElement.focus();\r\n event.preventDefault();\r\n }\r\n }\r\n /**\r\n * Selects the nav with the given id and shows its associated pane.\r\n * Any other nav that was previously selected becomes unselected and its associated pane is hidden.\r\n */\r\n select(id) { this._updateActiveId(id, false); }\r\n ngAfterContentInit() {\r\n if (!isDefined(this.activeId)) {\r\n const nextId = this.items.first ? this.items.first.id : null;\r\n if (isValidNavId(nextId)) {\r\n this._updateActiveId(nextId, false);\r\n this._cd.detectChanges();\r\n }\r\n }\r\n this.items.changes.pipe(takeUntil(this.destroy$)).subscribe(() => this._notifyItemChanged(this.activeId));\r\n }\r\n ngOnChanges({ activeId }) {\r\n if (activeId && !activeId.firstChange) {\r\n this._notifyItemChanged(activeId.currentValue);\r\n }\r\n }\r\n ngOnDestroy() { this.destroy$.next(); }\r\n _updateActiveId(nextId, emitNavChange = true) {\r\n if (this.activeId !== nextId) {\r\n let defaultPrevented = false;\r\n if (emitNavChange) {\r\n this.navChange.emit({ activeId: this.activeId, nextId, preventDefault: () => { defaultPrevented = true; } });\r\n }\r\n if (!defaultPrevented) {\r\n this.activeId = nextId;\r\n this.activeIdChange.emit(nextId);\r\n this._notifyItemChanged(nextId);\r\n }\r\n }\r\n }\r\n _notifyItemChanged(nextItemId) { this.navItemChange$.next(this._getItemById(nextItemId)); }\r\n _getItemById(itemId) {\r\n return this.items && this.items.find(item => item.id === itemId) || null;\r\n }\r\n}\nNgbNav.ɵfac = function NgbNav_Factory(t) { return new (t || NgbNav)(ɵngcc0.ɵɵinjectAttribute('role'), ɵngcc0.ɵɵdirectiveInject(NgbNavConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nNgbNav.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNav, selectors: [[\"\", \"ngbNav\", \"\"]], contentQueries: function NgbNav_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbNavItem, 4);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbNavLink, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.items = _t);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.links = _t);\n } }, hostVars: 6, hostBindings: function NgbNav_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown.arrowLeft\", function NgbNav_keydown_arrowLeft_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.arrowRight\", function NgbNav_keydown_arrowRight_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.arrowDown\", function NgbNav_keydown_arrowDown_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.arrowUp\", function NgbNav_keydown_arrowUp_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.Home\", function NgbNav_keydown_Home_HostBindingHandler($event) { return ctx.onKeyDown($event); })(\"keydown.End\", function NgbNav_keydown_End_HostBindingHandler($event) { return ctx.onKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-orientation\", ctx.orientation === \"vertical\" && ctx.roles === \"tablist\" ? \"vertical\" : undefined)(\"role\", ctx.role ? ctx.role : ctx.roles ? \"tablist\" : undefined);\n ɵngcc0.ɵɵclassProp(\"nav\", true)(\"flex-column\", ctx.orientation === \"vertical\");\n } }, inputs: { animation: \"animation\", destroyOnHide: \"destroyOnHide\", orientation: \"orientation\", roles: \"roles\", keyboard: \"keyboard\", activeId: \"activeId\" }, outputs: { activeIdChange: \"activeIdChange\", shown: \"shown\", hidden: \"hidden\", navChange: \"navChange\" }, exportAs: [\"ngbNav\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\r\nNgbNav.ctorParameters = () => [\r\n { type: String, decorators: [{ type: Attribute, args: ['role',] }] },\r\n { type: NgbNavConfig },\r\n { type: ChangeDetectorRef },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\r\n];\r\nNgbNav.propDecorators = {\r\n activeId: [{ type: Input }],\r\n activeIdChange: [{ type: Output }],\r\n animation: [{ type: Input }],\r\n destroyOnHide: [{ type: Input }],\r\n orientation: [{ type: Input }],\r\n roles: [{ type: Input }],\r\n keyboard: [{ type: Input }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }],\r\n items: [{ type: ContentChildren, args: [NgbNavItem,] }],\r\n links: [{ type: ContentChildren, args: [forwardRef(() => NgbNavLink), { descendants: true },] }],\r\n navChange: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNav, [{\n type: Directive,\n args: [{\n selector: '[ngbNav]',\n exportAs: 'ngbNav',\n host: {\n '[class.nav]': 'true',\n '[class.flex-column]': `orientation === 'vertical'`,\n '[attr.aria-orientation]': `orientation === 'vertical' && roles === 'tablist' ? 'vertical' : undefined`,\n '[attr.role]': `role ? role : roles ? 'tablist' : undefined`,\n '(keydown.arrowLeft)': 'onKeyDown($event)',\n '(keydown.arrowRight)': 'onKeyDown($event)',\n '(keydown.arrowDown)': 'onKeyDown($event)',\n '(keydown.arrowUp)': 'onKeyDown($event)',\n '(keydown.Home)': 'onKeyDown($event)',\n '(keydown.End)': 'onKeyDown($event)'\n }\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: NgbNavConfig }, { type: ɵngcc0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { activeIdChange: [{\n type: Output\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], navChange: [{\n type: Output\n }], animation: [{\n type: Input\n }], destroyOnHide: [{\n type: Input\n }], orientation: [{\n type: Input\n }], roles: [{\n type: Input\n }], keyboard: [{\n type: Input\n }], activeId: [{\n type: Input\n }], items: [{\n type: ContentChildren,\n args: [NgbNavItem]\n }], links: [{\n type: ContentChildren,\n args: [forwardRef(() => NgbNavLink), { descendants: true }]\n }] }); })();\r\n/**\r\n * A directive to put on the nav link.\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbNavLink {\r\n constructor(role, navItem, nav, elRef) {\r\n this.role = role;\r\n this.navItem = navItem;\r\n this.nav = nav;\r\n this.elRef = elRef;\r\n }\r\n hasNavItemClass() {\r\n // with alternative markup we have to add `.nav-item` class, because `ngbNavItem` is on the ng-container\r\n return this.navItem.elementRef.nativeElement.nodeType === Node.COMMENT_NODE;\r\n }\r\n}\nNgbNavLink.ɵfac = function NgbNavLink_Factory(t) { return new (t || NgbNavLink)(ɵngcc0.ɵɵinjectAttribute('role'), ɵngcc0.ɵɵdirectiveInject(NgbNavItem), ɵngcc0.ɵɵdirectiveInject(NgbNav), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbNavLink.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavLink, selectors: [[\"a\", \"ngbNavLink\", \"\"]], hostAttrs: [\"href\", \"\"], hostVars: 14, hostBindings: function NgbNavLink_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function NgbNavLink_click_HostBindingHandler($event) { ctx.nav.click(ctx.navItem); return $event.preventDefault(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.navItem.domId);\n ɵngcc0.ɵɵattribute(\"role\", ctx.role ? ctx.role : ctx.nav.roles ? \"tab\" : undefined)(\"tabindex\", ctx.navItem.disabled ? -1 : undefined)(\"aria-controls\", ctx.navItem.isPanelInDom() ? ctx.navItem.panelDomId : null)(\"aria-selected\", ctx.navItem.active)(\"aria-disabled\", ctx.navItem.disabled);\n ɵngcc0.ɵɵclassProp(\"nav-link\", true)(\"nav-item\", ctx.hasNavItemClass())(\"active\", ctx.navItem.active)(\"disabled\", ctx.navItem.disabled);\n } } });\r\nNgbNavLink.ctorParameters = () => [\r\n { type: String, decorators: [{ type: Attribute, args: ['role',] }] },\r\n { type: NgbNavItem },\r\n { type: NgbNav },\r\n { type: ElementRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavLink, [{\n type: Directive,\n args: [{\n selector: 'a[ngbNavLink]',\n host: {\n '[id]': 'navItem.domId',\n '[class.nav-link]': 'true',\n '[class.nav-item]': 'hasNavItemClass()',\n '[attr.role]': `role ? role : nav.roles ? 'tab' : undefined`,\n 'href': '',\n '[class.active]': 'navItem.active',\n '[class.disabled]': 'navItem.disabled',\n '[attr.tabindex]': 'navItem.disabled ? -1 : undefined',\n '[attr.aria-controls]': 'navItem.isPanelInDom() ? navItem.panelDomId : null',\n '[attr.aria-selected]': 'navItem.active',\n '[attr.aria-disabled]': 'navItem.disabled',\n '(click)': 'nav.click(navItem); $event.preventDefault()'\n }\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['role']\n }] }, { type: NgbNavItem }, { type: NgbNav }, { type: ɵngcc0.ElementRef }]; }, null); })();\n\nconst ngbNavFadeOutTransition = ({ classList }) => {\r\n classList.remove('show');\r\n return () => classList.remove('active');\r\n};\r\nconst ngbNavFadeInTransition = (element, animation) => {\r\n if (animation) {\r\n reflow(element);\r\n }\r\n element.classList.add('show');\r\n};\n\nclass NgbNavPane {\r\n constructor(elRef) {\r\n this.elRef = elRef;\r\n }\r\n}\nNgbNavPane.ɵfac = function NgbNavPane_Factory(t) { return new (t || NgbNavPane)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbNavPane.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbNavPane, selectors: [[\"\", \"ngbNavPane\", \"\"]], hostAttrs: [1, \"tab-pane\"], hostVars: 5, hostBindings: function NgbNavPane_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.item.panelDomId);\n ɵngcc0.ɵɵattribute(\"role\", ctx.role ? ctx.role : ctx.nav.roles ? \"tabpanel\" : undefined)(\"aria-labelledby\", ctx.item.domId);\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.nav.animation);\n } }, inputs: { item: \"item\", nav: \"nav\", role: \"role\" } });\r\nNgbNavPane.ctorParameters = () => [\r\n { type: ElementRef }\r\n];\r\nNgbNavPane.propDecorators = {\r\n item: [{ type: Input }],\r\n nav: [{ type: Input }],\r\n role: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavPane, [{\n type: Directive,\n args: [{\n selector: '[ngbNavPane]',\n host: {\n '[id]': 'item.panelDomId',\n 'class': 'tab-pane',\n '[class.fade]': 'nav.animation',\n '[attr.role]': 'role ? role : nav.roles ? \"tabpanel\" : undefined',\n '[attr.aria-labelledby]': 'item.domId'\n }\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { item: [{\n type: Input\n }], nav: [{\n type: Input\n }], role: [{\n type: Input\n }] }); })();\r\n/**\r\n * The outlet where currently active nav content will be displayed.\r\n *\r\n * @since 5.2.0\r\n */\r\nclass NgbNavOutlet {\r\n constructor(_cd, _ngZone) {\r\n this._cd = _cd;\r\n this._ngZone = _ngZone;\r\n this._activePane = null;\r\n }\r\n isPanelTransitioning(item) { var _a; return ((_a = this._activePane) === null || _a === void 0 ? void 0 : _a.item) === item; }\r\n ngAfterViewInit() {\r\n var _a;\r\n // initial display\r\n this._updateActivePane();\r\n // this will be emitted for all 3 types of nav changes: .select(), [activeId] or (click)\r\n this.nav.navItemChange$\r\n .pipe(takeUntil(this.nav.destroy$), startWith(((_a = this._activePane) === null || _a === void 0 ? void 0 : _a.item) || null), distinctUntilChanged(), skip(1))\r\n .subscribe(nextItem => {\r\n const options = { animation: this.nav.animation, runningTransition: 'stop' };\r\n // next panel we're switching to will only appear in DOM after the change detection is done\r\n // and `this._panes` will be updated\r\n this._cd.detectChanges();\r\n // fading out\r\n if (this._activePane) {\r\n ngbRunTransition(this._ngZone, this._activePane.elRef.nativeElement, ngbNavFadeOutTransition, options)\r\n .subscribe(() => {\r\n var _a;\r\n const activeItem = (_a = this._activePane) === null || _a === void 0 ? void 0 : _a.item;\r\n this._activePane = this._getPaneForItem(nextItem);\r\n // mark for check when transition finishes as outlet or parent containers might be OnPush\r\n // without this the panes that have \"faded out\" will stay in DOM\r\n this._cd.markForCheck();\r\n // fading in\r\n if (this._activePane) {\r\n // we have to add the '.active' class before running the transition,\r\n // because it should be in place before `ngbRunTransition` does `reflow()`\r\n this._activePane.elRef.nativeElement.classList.add('active');\r\n ngbRunTransition(this._ngZone, this._activePane.elRef.nativeElement, ngbNavFadeInTransition, options)\r\n .subscribe(() => {\r\n if (nextItem) {\r\n nextItem.shown.emit();\r\n this.nav.shown.emit(nextItem.id);\r\n }\r\n });\r\n }\r\n if (activeItem) {\r\n activeItem.hidden.emit();\r\n this.nav.hidden.emit(activeItem.id);\r\n }\r\n });\r\n }\r\n else {\r\n this._updateActivePane();\r\n }\r\n });\r\n }\r\n _updateActivePane() {\r\n var _a, _b;\r\n this._activePane = this._getActivePane();\r\n (_a = this._activePane) === null || _a === void 0 ? void 0 : _a.elRef.nativeElement.classList.add('show');\r\n (_b = this._activePane) === null || _b === void 0 ? void 0 : _b.elRef.nativeElement.classList.add('active');\r\n }\r\n _getPaneForItem(item) {\r\n return this._panes && this._panes.find(pane => pane.item === item) || null;\r\n }\r\n _getActivePane() {\r\n return this._panes && this._panes.find(pane => pane.item.active) || null;\r\n }\r\n}\nNgbNavOutlet.ɵfac = function NgbNavOutlet_Factory(t) { return new (t || NgbNavOutlet)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgbNavOutlet.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbNavOutlet, selectors: [[\"\", \"ngbNavOutlet\", \"\"]], viewQuery: function NgbNavOutlet_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgbNavPane, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._panes = _t);\n } }, hostVars: 2, hostBindings: function NgbNavOutlet_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"tab-content\", true);\n } }, inputs: { paneRole: \"paneRole\", nav: [\"ngbNavOutlet\", \"nav\"] }, attrs: _c32, decls: 1, vars: 1, consts: [[\"ngFor\", \"\", 3, \"ngForOf\"], [\"ngbNavPane\", \"\", 3, \"item\", \"nav\", \"role\", 4, \"ngIf\"], [\"ngbNavPane\", \"\", 3, \"item\", \"nav\", \"role\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbNavOutlet_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbNavOutlet_ng_template_0_Template, 1, 1, \"ng-template\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.nav.items);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf, NgbNavPane, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\r\nNgbNavOutlet.ctorParameters = () => [\r\n { type: ChangeDetectorRef },\r\n { type: NgZone }\r\n];\r\nNgbNavOutlet.propDecorators = {\r\n _panes: [{ type: ViewChildren, args: [NgbNavPane,] }],\r\n paneRole: [{ type: Input }],\r\n nav: [{ type: Input, args: ['ngbNavOutlet',] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavOutlet, [{\n type: Component,\n args: [{\n selector: '[ngbNavOutlet]',\n host: { '[class.tab-content]': 'true' },\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: `\r\n \r\n
\r\n \r\n
\r\n
\r\n `\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.NgZone }]; }, { _panes: [{\n type: ViewChildren,\n args: [NgbNavPane]\n }], paneRole: [{\n type: Input\n }], nav: [{\n type: Input,\n args: ['ngbNavOutlet']\n }] }); })();\n\nconst NGB_NAV_DIRECTIVES = [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane];\r\nclass NgbNavModule {\r\n}\nNgbNavModule.ɵfac = function NgbNavModule_Factory(t) { return new (t || NgbNavModule)(); };\nNgbNavModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbNavModule });\nNgbNavModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbNavModule, [{\n type: NgModule,\n args: [{ declarations: NGB_NAV_DIRECTIVES, exports: NGB_NAV_DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbNavModule, { declarations: function () { return [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbNavContent, NgbNav, NgbNavItem, NgbNavLink, NgbNavOutlet, NgbNavPane]; } }); })();\n\n/**\r\n * A configuration service for the [`NgbPagination`](#/components/pagination/api#NgbPagination) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the paginations used in the application.\r\n */\r\nclass NgbPaginationConfig {\r\n constructor() {\r\n this.disabled = false;\r\n this.boundaryLinks = false;\r\n this.directionLinks = true;\r\n this.ellipses = true;\r\n this.maxSize = 0;\r\n this.pageSize = 10;\r\n this.rotate = false;\r\n }\r\n}\nNgbPaginationConfig.ɵfac = function NgbPaginationConfig_Factory(t) { return new (t || NgbPaginationConfig)(); };\r\nNgbPaginationConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbPaginationConfig_Factory() { return new NgbPaginationConfig(); }, token: NgbPaginationConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\r\n * A directive to match the 'ellipsis' link template\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPaginationEllipsis {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPaginationEllipsis.ɵfac = function NgbPaginationEllipsis_Factory(t) { return new (t || NgbPaginationEllipsis)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationEllipsis.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationEllipsis, selectors: [[\"ng-template\", \"ngbPaginationEllipsis\", \"\"]] });\r\nNgbPaginationEllipsis.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationEllipsis, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationEllipsis]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive to match the 'first' link template\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPaginationFirst {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPaginationFirst.ɵfac = function NgbPaginationFirst_Factory(t) { return new (t || NgbPaginationFirst)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationFirst.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationFirst, selectors: [[\"ng-template\", \"ngbPaginationFirst\", \"\"]] });\r\nNgbPaginationFirst.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationFirst, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationFirst]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive to match the 'last' link template\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPaginationLast {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPaginationLast.ɵfac = function NgbPaginationLast_Factory(t) { return new (t || NgbPaginationLast)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationLast.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationLast, selectors: [[\"ng-template\", \"ngbPaginationLast\", \"\"]] });\r\nNgbPaginationLast.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationLast, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationLast]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive to match the 'next' link template\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPaginationNext {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPaginationNext.ɵfac = function NgbPaginationNext_Factory(t) { return new (t || NgbPaginationNext)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationNext.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationNext, selectors: [[\"ng-template\", \"ngbPaginationNext\", \"\"]] });\r\nNgbPaginationNext.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationNext, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationNext]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive to match the page 'number' link template\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPaginationNumber {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPaginationNumber.ɵfac = function NgbPaginationNumber_Factory(t) { return new (t || NgbPaginationNumber)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationNumber.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationNumber, selectors: [[\"ng-template\", \"ngbPaginationNumber\", \"\"]] });\r\nNgbPaginationNumber.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationNumber, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationNumber]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive to match the 'previous' link template\r\n *\r\n * @since 4.1.0\r\n */\r\nclass NgbPaginationPrevious {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPaginationPrevious.ɵfac = function NgbPaginationPrevious_Factory(t) { return new (t || NgbPaginationPrevious)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationPrevious.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationPrevious, selectors: [[\"ng-template\", \"ngbPaginationPrevious\", \"\"]] });\r\nNgbPaginationPrevious.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationPrevious, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationPrevious]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A directive to match the 'pages' whole content\r\n *\r\n * @since 9.1.0\r\n */\r\nclass NgbPaginationPages {\r\n constructor(templateRef) {\r\n this.templateRef = templateRef;\r\n }\r\n}\nNgbPaginationPages.ɵfac = function NgbPaginationPages_Factory(t) { return new (t || NgbPaginationPages)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgbPaginationPages.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPaginationPages, selectors: [[\"ng-template\", \"ngbPaginationPages\", \"\"]] });\r\nNgbPaginationPages.ctorParameters = () => [\r\n { type: TemplateRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationPages, [{\n type: Directive,\n args: [{ selector: 'ng-template[ngbPaginationPages]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\r\n/**\r\n * A component that displays page numbers and allows to customize them in several ways.\r\n */\r\nclass NgbPagination {\r\n constructor(config) {\r\n this.pageCount = 0;\r\n this.pages = [];\r\n /**\r\n * The current page.\r\n *\r\n * Page numbers start with `1`.\r\n */\r\n this.page = 1;\r\n /**\r\n * An event fired when the page is changed. Will fire only if collection size is set and all values are valid.\r\n *\r\n * Event payload is the number of the newly selected page.\r\n *\r\n * Page numbers start with `1`.\r\n */\r\n this.pageChange = new EventEmitter(true);\r\n this.disabled = config.disabled;\r\n this.boundaryLinks = config.boundaryLinks;\r\n this.directionLinks = config.directionLinks;\r\n this.ellipses = config.ellipses;\r\n this.maxSize = config.maxSize;\r\n this.pageSize = config.pageSize;\r\n this.rotate = config.rotate;\r\n this.size = config.size;\r\n }\r\n hasPrevious() { return this.page > 1; }\r\n hasNext() { return this.page < this.pageCount; }\r\n nextDisabled() { return !this.hasNext() || this.disabled; }\r\n previousDisabled() { return !this.hasPrevious() || this.disabled; }\r\n selectPage(pageNumber) { this._updatePages(pageNumber); }\r\n ngOnChanges(changes) { this._updatePages(this.page); }\r\n isEllipsis(pageNumber) { return pageNumber === -1; }\r\n /**\r\n * Appends ellipses and first/last page number to the displayed pages\r\n */\r\n _applyEllipses(start, end) {\r\n if (this.ellipses) {\r\n if (start > 0) {\r\n // The first page will always be included. If the displayed range\r\n // starts after the third page, then add ellipsis. But if the range\r\n // starts on the third page, then add the second page instead of\r\n // an ellipsis, because the ellipsis would only hide a single page.\r\n if (start > 2) {\r\n this.pages.unshift(-1);\r\n }\r\n else if (start === 2) {\r\n this.pages.unshift(2);\r\n }\r\n this.pages.unshift(1);\r\n }\r\n if (end < this.pageCount) {\r\n // The last page will always be included. If the displayed range\r\n // ends before the third-last page, then add ellipsis. But if the range\r\n // ends on third-last page, then add the second-last page instead of\r\n // an ellipsis, because the ellipsis would only hide a single page.\r\n if (end < (this.pageCount - 2)) {\r\n this.pages.push(-1);\r\n }\r\n else if (end === (this.pageCount - 2)) {\r\n this.pages.push(this.pageCount - 1);\r\n }\r\n this.pages.push(this.pageCount);\r\n }\r\n }\r\n }\r\n /**\r\n * Rotates page numbers based on maxSize items visible.\r\n * Currently selected page stays in the middle:\r\n *\r\n * Ex. for selected page = 6:\r\n * [5,*6*,7] for maxSize = 3\r\n * [4,5,*6*,7] for maxSize = 4\r\n */\r\n _applyRotation() {\r\n let start = 0;\r\n let end = this.pageCount;\r\n let leftOffset = Math.floor(this.maxSize / 2);\r\n let rightOffset = this.maxSize % 2 === 0 ? leftOffset - 1 : leftOffset;\r\n if (this.page <= leftOffset) {\r\n // very beginning, no rotation -> [0..maxSize]\r\n end = this.maxSize;\r\n }\r\n else if (this.pageCount - this.page < leftOffset) {\r\n // very end, no rotation -> [len-maxSize..len]\r\n start = this.pageCount - this.maxSize;\r\n }\r\n else {\r\n // rotate\r\n start = this.page - leftOffset - 1;\r\n end = this.page + rightOffset;\r\n }\r\n return [start, end];\r\n }\r\n /**\r\n * Paginates page numbers based on maxSize items per page.\r\n */\r\n _applyPagination() {\r\n let page = Math.ceil(this.page / this.maxSize) - 1;\r\n let start = page * this.maxSize;\r\n let end = start + this.maxSize;\r\n return [start, end];\r\n }\r\n _setPageInRange(newPageNo) {\r\n const prevPageNo = this.page;\r\n this.page = getValueInRange(newPageNo, this.pageCount, 1);\r\n if (this.page !== prevPageNo && isNumber(this.collectionSize)) {\r\n this.pageChange.emit(this.page);\r\n }\r\n }\r\n _updatePages(newPage) {\r\n this.pageCount = Math.ceil(this.collectionSize / this.pageSize);\r\n if (!isNumber(this.pageCount)) {\r\n this.pageCount = 0;\r\n }\r\n // fill-in model needed to render pages\r\n this.pages.length = 0;\r\n for (let i = 1; i <= this.pageCount; i++) {\r\n this.pages.push(i);\r\n }\r\n // set page within 1..max range\r\n this._setPageInRange(newPage);\r\n // apply maxSize if necessary\r\n if (this.maxSize > 0 && this.pageCount > this.maxSize) {\r\n let start = 0;\r\n let end = this.pageCount;\r\n // either paginating or rotating page numbers\r\n if (this.rotate) {\r\n [start, end] = this._applyRotation();\r\n }\r\n else {\r\n [start, end] = this._applyPagination();\r\n }\r\n this.pages = this.pages.slice(start, end);\r\n // adding ellipses\r\n this._applyEllipses(start, end);\r\n }\r\n }\r\n}\nNgbPagination.ɵfac = function NgbPagination_Factory(t) { return new (t || NgbPagination)(ɵngcc0.ɵɵdirectiveInject(NgbPaginationConfig)); };\nNgbPagination.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbPagination, selectors: [[\"ngb-pagination\"]], contentQueries: function NgbPagination_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationEllipsis, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationFirst, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationLast, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationNext, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationNumber, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationPrevious, 5);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbPaginationPages, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplEllipsis = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplFirst = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplLast = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplNext = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplNumber = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplPrevious = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tplPages = _t.first);\n } }, hostAttrs: [\"role\", \"navigation\"], inputs: { page: \"page\", disabled: \"disabled\", boundaryLinks: \"boundaryLinks\", directionLinks: \"directionLinks\", ellipses: \"ellipses\", maxSize: \"maxSize\", pageSize: \"pageSize\", rotate: \"rotate\", size: \"size\", collectionSize: \"collectionSize\" }, outputs: { pageChange: \"pageChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 20, vars: 12, consts: function () { let i18n_34; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_first$$FESM2015_NG_BOOTSTRAP_JS__35 = goog.getMsg(\"\\u00AB\\u00AB\");\n i18n_34 = MSG_EXTERNAL_ngb_pagination_first$$FESM2015_NG_BOOTSTRAP_JS__35;\n }\n else {\n i18n_34 = $localize `:@@ngb.pagination.first␟656506dfd46380956a655f919f1498d018f75ca0␟6867721956102594380:««`;\n } let i18n_36; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_previous$$FESM2015_NG_BOOTSTRAP_JS__37 = goog.getMsg(\"\\u00AB\");\n i18n_36 = MSG_EXTERNAL_ngb_pagination_previous$$FESM2015_NG_BOOTSTRAP_JS__37;\n }\n else {\n i18n_36 = $localize `:@@ngb.pagination.previous␟6e52b6ee77a4848d899dd21b591c6fd499e3aef3␟6479320895410098858:«`;\n } let i18n_38; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_next$$FESM2015_NG_BOOTSTRAP_JS__39 = goog.getMsg(\"\\u00BB\");\n i18n_38 = MSG_EXTERNAL_ngb_pagination_next$$FESM2015_NG_BOOTSTRAP_JS__39;\n }\n else {\n i18n_38 = $localize `:@@ngb.pagination.next␟ba9cbb4ff311464308a3627e4f1c3345d9fe6d7d␟5458177150283468089:»`;\n } let i18n_40; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_last$$FESM2015_NG_BOOTSTRAP_JS__41 = goog.getMsg(\"\\u00BB\\u00BB\");\n i18n_40 = MSG_EXTERNAL_ngb_pagination_last$$FESM2015_NG_BOOTSTRAP_JS__41;\n }\n else {\n i18n_40 = $localize `:@@ngb.pagination.last␟49f27a460bc97e7e00be5b37098bfa79884fc7d9␟5277020320267646988:»»`;\n } let i18n_44; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_first_aria$$FESM2015_NG_BOOTSTRAP_JS__45 = goog.getMsg(\"First\");\n i18n_44 = MSG_EXTERNAL_ngb_pagination_first_aria$$FESM2015_NG_BOOTSTRAP_JS__45;\n }\n else {\n i18n_44 = $localize `:@@ngb.pagination.first-aria␟f2f852318759c6396b5d3d17031d53817d7b38cc␟2241508602425256033:First`;\n } let i18n_47; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_previous_aria$$FESM2015_NG_BOOTSTRAP_JS__48 = goog.getMsg(\"Previous\");\n i18n_47 = MSG_EXTERNAL_ngb_pagination_previous_aria$$FESM2015_NG_BOOTSTRAP_JS__48;\n }\n else {\n i18n_47 = $localize `:@@ngb.pagination.previous-aria␟680d5c75b7fd8d37961083608b9fcdc4167b4c43␟4452427314943113135:Previous`;\n } let i18n_50; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_next_aria$$FESM2015_NG_BOOTSTRAP_JS__51 = goog.getMsg(\"Next\");\n i18n_50 = MSG_EXTERNAL_ngb_pagination_next_aria$$FESM2015_NG_BOOTSTRAP_JS__51;\n }\n else {\n i18n_50 = $localize `:@@ngb.pagination.next-aria␟f732c304c7433e5a83ffcd862c3dce709a0f4982␟3885497195825665706:Next`;\n } let i18n_52; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_pagination_last_aria$$FESM2015_NG_BOOTSTRAP_JS__53 = goog.getMsg(\"Last\");\n i18n_52 = MSG_EXTERNAL_ngb_pagination_last_aria$$FESM2015_NG_BOOTSTRAP_JS__53;\n }\n else {\n i18n_52 = $localize `:@@ngb.pagination.last-aria␟5c729788ba138508aca1bec050b610f7bf81db3e␟4882268002141858767:Last`;\n } return [[\"first\", \"\"], [\"previous\", \"\"], [\"next\", \"\"], [\"last\", \"\"], [\"ellipsis\", \"\"], [\"defaultNumber\", \"\"], [\"defaultPages\", \"\"], [\"class\", \"page-item\", 3, \"disabled\", 4, \"ngIf\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"aria-hidden\", \"true\"], i18n_34, i18n_36, i18n_38, i18n_40, [\"class\", \"sr-only\", 4, \"ngIf\"], [1, \"sr-only\"], [\"class\", \"page-item\", 3, \"active\", \"disabled\", 4, \"ngFor\", \"ngForOf\"], [1, \"page-item\"], [\"class\", \"page-link\", \"tabindex\", \"-1\", \"aria-disabled\", \"true\", 4, \"ngIf\"], [\"class\", \"page-link\", \"href\", \"\", 3, \"click\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"aria-disabled\", \"true\", 1, \"page-link\"], [\"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_44, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_47, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_50, \"href\", \"\", 1, \"page-link\", 3, \"click\"], [\"aria-label\", i18n_52, \"href\", \"\", 1, \"page-link\", 3, \"click\"]]; }, template: function NgbPagination_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbPagination_ng_template_0_Template, 2, 0, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbPagination_ng_template_2_Template, 2, 0, \"ng-template\", null, 1, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(4, NgbPagination_ng_template_4_Template, 2, 0, \"ng-template\", null, 2, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(6, NgbPagination_ng_template_6_Template, 2, 0, \"ng-template\", null, 3, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(8, NgbPagination_ng_template_8_Template, 1, 0, \"ng-template\", null, 4, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(10, NgbPagination_ng_template_10_Template, 2, 2, \"ng-template\", null, 5, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(12, NgbPagination_ng_template_12_Template, 1, 1, \"ng-template\", null, 6, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵelementStart(14, \"ul\");\n ɵngcc0.ɵɵtemplate(15, NgbPagination_li_15_Template, 3, 9, \"li\", 7);\n ɵngcc0.ɵɵtemplate(16, NgbPagination_li_16_Template, 3, 8, \"li\", 7);\n ɵngcc0.ɵɵtemplate(17, NgbPagination_ng_template_17_Template, 0, 0, \"ng-template\", 8);\n ɵngcc0.ɵɵtemplate(18, NgbPagination_li_18_Template, 3, 9, \"li\", 7);\n ɵngcc0.ɵɵtemplate(19, NgbPagination_li_19_Template, 3, 9, \"li\", 7);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n const _r12 = ɵngcc0.ɵɵreference(13);\n ɵngcc0.ɵɵadvance(14);\n ɵngcc0.ɵɵclassMap(\"pagination\" + (ctx.size ? \" pagination-\" + ctx.size : \"\"));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.boundaryLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.directionLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", (ctx.tplPages == null ? null : ctx.tplPages.templateRef) || _r12)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(8, _c54, ctx.page, ctx.pages, ctx.disabled));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.directionLinks);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.boundaryLinks);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\r\nNgbPagination.ctorParameters = () => [\r\n { type: NgbPaginationConfig }\r\n];\r\nNgbPagination.propDecorators = {\r\n tplEllipsis: [{ type: ContentChild, args: [NgbPaginationEllipsis, { static: false },] }],\r\n tplFirst: [{ type: ContentChild, args: [NgbPaginationFirst, { static: false },] }],\r\n tplLast: [{ type: ContentChild, args: [NgbPaginationLast, { static: false },] }],\r\n tplNext: [{ type: ContentChild, args: [NgbPaginationNext, { static: false },] }],\r\n tplNumber: [{ type: ContentChild, args: [NgbPaginationNumber, { static: false },] }],\r\n tplPrevious: [{ type: ContentChild, args: [NgbPaginationPrevious, { static: false },] }],\r\n tplPages: [{ type: ContentChild, args: [NgbPaginationPages, { static: false },] }],\r\n disabled: [{ type: Input }],\r\n boundaryLinks: [{ type: Input }],\r\n directionLinks: [{ type: Input }],\r\n ellipses: [{ type: Input }],\r\n rotate: [{ type: Input }],\r\n collectionSize: [{ type: Input }],\r\n maxSize: [{ type: Input }],\r\n page: [{ type: Input }],\r\n pageSize: [{ type: Input }],\r\n pageChange: [{ type: Output }],\r\n size: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPagination, [{\n type: Component,\n args: [{\n selector: 'ngb-pagination',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'role': 'navigation' },\n template: `\r\n ««\r\n «\r\n »\r\n »»\r\n ...\r\n \r\n {{ page }}\r\n (current)\r\n \r\n \r\n
  • \r\n \r\n \r\n \r\n \r\n \r\n \r\n
  • \r\n
    \r\n \r\n `\n }]\n }], function () { return [{ type: NgbPaginationConfig }]; }, { page: [{\n type: Input\n }], pageChange: [{\n type: Output\n }], disabled: [{\n type: Input\n }], boundaryLinks: [{\n type: Input\n }], directionLinks: [{\n type: Input\n }], ellipses: [{\n type: Input\n }], maxSize: [{\n type: Input\n }], pageSize: [{\n type: Input\n }], rotate: [{\n type: Input\n }], size: [{\n type: Input\n }], tplEllipsis: [{\n type: ContentChild,\n args: [NgbPaginationEllipsis, { static: false }]\n }], tplFirst: [{\n type: ContentChild,\n args: [NgbPaginationFirst, { static: false }]\n }], tplLast: [{\n type: ContentChild,\n args: [NgbPaginationLast, { static: false }]\n }], tplNext: [{\n type: ContentChild,\n args: [NgbPaginationNext, { static: false }]\n }], tplNumber: [{\n type: ContentChild,\n args: [NgbPaginationNumber, { static: false }]\n }], tplPrevious: [{\n type: ContentChild,\n args: [NgbPaginationPrevious, { static: false }]\n }], tplPages: [{\n type: ContentChild,\n args: [NgbPaginationPages, { static: false }]\n }], collectionSize: [{\n type: Input\n }] }); })();\n\nconst DIRECTIVES = [\r\n NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber,\r\n NgbPaginationPrevious, NgbPaginationPages\r\n];\r\nclass NgbPaginationModule {\r\n}\nNgbPaginationModule.ɵfac = function NgbPaginationModule_Factory(t) { return new (t || NgbPaginationModule)(); };\nNgbPaginationModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbPaginationModule });\nNgbPaginationModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPaginationModule, [{\n type: NgModule,\n args: [{ declarations: DIRECTIVES, exports: DIRECTIVES, imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbPaginationModule, { declarations: function () { return [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious, NgbPaginationPages]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbPagination, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPrevious, NgbPaginationPages]; } }); })();\n\nclass Trigger {\r\n constructor(open, close) {\r\n this.open = open;\r\n this.close = close;\r\n if (!close) {\r\n this.close = open;\r\n }\r\n }\r\n isManual() { return this.open === 'manual' || this.close === 'manual'; }\r\n}\r\nconst DEFAULT_ALIASES = {\r\n 'hover': ['mouseenter', 'mouseleave'],\r\n 'focus': ['focusin', 'focusout'],\r\n};\r\nfunction parseTriggers(triggers, aliases = DEFAULT_ALIASES) {\r\n const trimmedTriggers = (triggers || '').trim();\r\n if (trimmedTriggers.length === 0) {\r\n return [];\r\n }\r\n const parsedTriggers = trimmedTriggers.split(/\\s+/).map(trigger => trigger.split(':')).map((triggerPair) => {\r\n let alias = aliases[triggerPair[0]] || triggerPair;\r\n return new Trigger(alias[0], alias[1]);\r\n });\r\n const manualTriggers = parsedTriggers.filter(triggerPair => triggerPair.isManual());\r\n if (manualTriggers.length > 1) {\r\n throw 'Triggers parse error: only one manual trigger is allowed';\r\n }\r\n if (manualTriggers.length === 1 && parsedTriggers.length > 1) {\r\n throw 'Triggers parse error: manual trigger can\\'t be mixed with other triggers';\r\n }\r\n return parsedTriggers;\r\n}\r\nfunction observeTriggers(renderer, nativeElement, triggers, isOpenedFn) {\r\n return new Observable(subscriber => {\r\n const listeners = [];\r\n const openFn = () => subscriber.next(true);\r\n const closeFn = () => subscriber.next(false);\r\n const toggleFn = () => subscriber.next(!isOpenedFn());\r\n triggers.forEach((trigger) => {\r\n if (trigger.open === trigger.close) {\r\n listeners.push(renderer.listen(nativeElement, trigger.open, toggleFn));\r\n }\r\n else {\r\n listeners.push(renderer.listen(nativeElement, trigger.open, openFn), renderer.listen(nativeElement, trigger.close, closeFn));\r\n }\r\n });\r\n return () => { listeners.forEach(unsubscribeFn => unsubscribeFn()); };\r\n });\r\n}\r\nconst delayOrNoop = (time) => time > 0 ? delay(time) : (a) => a;\r\nconst ɵ0$5 = delayOrNoop;\r\nfunction triggerDelay(openDelay, closeDelay, isOpenedFn) {\r\n return (input$) => {\r\n let pending = null;\r\n const filteredInput$ = input$.pipe(map(open => ({ open })), filter(event => {\r\n const currentlyOpen = isOpenedFn();\r\n if (currentlyOpen !== event.open && (!pending || pending.open === currentlyOpen)) {\r\n pending = event;\r\n return true;\r\n }\r\n if (pending && pending.open !== event.open) {\r\n pending = null;\r\n }\r\n return false;\r\n }), share());\r\n const delayedOpen$ = filteredInput$.pipe(filter(event => event.open), delayOrNoop(openDelay));\r\n const delayedClose$ = filteredInput$.pipe(filter(event => !event.open), delayOrNoop(closeDelay));\r\n return merge(delayedOpen$, delayedClose$)\r\n .pipe(filter(event => {\r\n if (event === pending) {\r\n pending = null;\r\n return event.open !== isOpenedFn();\r\n }\r\n return false;\r\n }), map(event => event.open));\r\n };\r\n}\r\nfunction listenToTriggers(renderer, nativeElement, triggers, isOpenedFn, openFn, closeFn, openDelay = 0, closeDelay = 0) {\r\n const parsedTriggers = parseTriggers(triggers);\r\n if (parsedTriggers.length === 1 && parsedTriggers[0].isManual()) {\r\n return () => { };\r\n }\r\n const subscription = observeTriggers(renderer, nativeElement, parsedTriggers, isOpenedFn)\r\n .pipe(triggerDelay(openDelay, closeDelay, isOpenedFn))\r\n .subscribe(open => (open ? openFn() : closeFn()));\r\n return () => subscription.unsubscribe();\r\n}\n\n/**\r\n * A configuration service for the [`NgbPopover`](#/components/popover/api#NgbPopover) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the popovers used in the application.\r\n */\r\nclass NgbPopoverConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.autoClose = true;\r\n this.placement = 'auto';\r\n this.triggers = 'click';\r\n this.disablePopover = false;\r\n this.openDelay = 0;\r\n this.closeDelay = 0;\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbPopoverConfig.ɵfac = function NgbPopoverConfig_Factory(t) { return new (t || NgbPopoverConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbPopoverConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbPopoverConfig_Factory() { return new NgbPopoverConfig(ɵɵinject(NgbConfig)); }, token: NgbPopoverConfig, providedIn: \"root\" });\r\nNgbPopoverConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nlet nextId$3 = 0;\r\nclass NgbPopoverWindow {\r\n isTitleTemplate() { return this.title instanceof TemplateRef; }\r\n}\nNgbPopoverWindow.ɵfac = function NgbPopoverWindow_Factory(t) { return new (t || NgbPopoverWindow)(); };\nNgbPopoverWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbPopoverWindow, selectors: [[\"ngb-popover-window\"]], hostAttrs: [\"role\", \"tooltip\"], hostVars: 5, hostBindings: function NgbPopoverWindow_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n ɵngcc0.ɵɵclassMap(\"popover\" + (ctx.popoverClass ? \" \" + ctx.popoverClass : \"\"));\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n } }, inputs: { animation: \"animation\", title: \"title\", id: \"id\", popoverClass: \"popoverClass\", context: \"context\" }, ngContentSelectors: _c3, decls: 4, vars: 1, consts: [[1, \"arrow\"], [\"class\", \"popover-header\", 4, \"ngIf\"], [1, \"popover-body\"], [1, \"popover-header\"], [\"simpleTitle\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbPopoverWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbPopoverWindow_h3_1_Template, 4, 2, \"h3\", 1);\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵprojection(3);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.title);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], styles: [\"ngb-popover-window.bs-popover-bottom>.arrow,ngb-popover-window.bs-popover-top>.arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left>.arrow,ngb-popover-window.bs-popover-top-left>.arrow{left:2em}ngb-popover-window.bs-popover-bottom-right>.arrow,ngb-popover-window.bs-popover-top-right>.arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left>.arrow,ngb-popover-window.bs-popover-right>.arrow{margin-top:-.5rem;top:50%}ngb-popover-window.bs-popover-left-top>.arrow,ngb-popover-window.bs-popover-right-top>.arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom>.arrow,ngb-popover-window.bs-popover-right-bottom>.arrow{bottom:.7em;top:auto}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbPopoverWindow.propDecorators = {\r\n animation: [{ type: Input }],\r\n title: [{ type: Input }],\r\n id: [{ type: Input }],\r\n popoverClass: [{ type: Input }],\r\n context: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-popover-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"popover\" + (popoverClass ? \" \" + popoverClass : \"\")',\n '[class.fade]': 'animation',\n 'role': 'tooltip',\n '[id]': 'id'\n },\n template: `\r\n
    \r\n

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

    \r\n
    `,\n styles: [\"ngb-popover-window.bs-popover-bottom>.arrow,ngb-popover-window.bs-popover-top>.arrow{left:50%;margin-left:-.5rem}ngb-popover-window.bs-popover-bottom-left>.arrow,ngb-popover-window.bs-popover-top-left>.arrow{left:2em}ngb-popover-window.bs-popover-bottom-right>.arrow,ngb-popover-window.bs-popover-top-right>.arrow{left:auto;right:2em}ngb-popover-window.bs-popover-left>.arrow,ngb-popover-window.bs-popover-right>.arrow{margin-top:-.5rem;top:50%}ngb-popover-window.bs-popover-left-top>.arrow,ngb-popover-window.bs-popover-right-top>.arrow{top:.7em}ngb-popover-window.bs-popover-left-bottom>.arrow,ngb-popover-window.bs-popover-right-bottom>.arrow{bottom:.7em;top:auto}\"]\n }]\n }], null, { animation: [{\n type: Input\n }], title: [{\n type: Input\n }], id: [{\n type: Input\n }], popoverClass: [{\n type: Input\n }], context: [{\n type: Input\n }] }); })();\r\n/**\r\n * A lightweight and extensible directive for fancy popover creation.\r\n */\r\nclass NgbPopover {\r\n constructor(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\r\n this._elementRef = _elementRef;\r\n this._renderer = _renderer;\r\n this._ngZone = _ngZone;\r\n this._document = _document;\r\n this._changeDetector = _changeDetector;\r\n /**\r\n * An event emitted when the popover opening animation has finished. Contains no payload.\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event emitted when the popover closing animation has finished. Contains no payload.\r\n *\r\n * At this point popover is not in the DOM anymore.\r\n */\r\n this.hidden = new EventEmitter();\r\n this._ngbPopoverWindowId = `ngb-popover-${nextId$3++}`;\r\n this._windowRef = null;\r\n this.animation = config.animation;\r\n this.autoClose = config.autoClose;\r\n this.placement = config.placement;\r\n this.triggers = config.triggers;\r\n this.container = config.container;\r\n this.disablePopover = config.disablePopover;\r\n this.popoverClass = config.popoverClass;\r\n this.openDelay = config.openDelay;\r\n this.closeDelay = config.closeDelay;\r\n this._popupService = new PopupService(NgbPopoverWindow, injector, viewContainerRef, _renderer, this._ngZone, componentFactoryResolver, applicationRef);\r\n this._zoneSubscription = _ngZone.onStable.subscribe(() => {\r\n if (this._windowRef) {\r\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body', 'bs-popover');\r\n }\r\n });\r\n }\r\n _isDisabled() {\r\n if (this.disablePopover) {\r\n return true;\r\n }\r\n if (!this.ngbPopover && !this.popoverTitle) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n /**\r\n * Opens the popover.\r\n *\r\n * This is considered to be a \"manual\" triggering.\r\n * The `context` is an optional value to be injected into the popover template when it is created.\r\n */\r\n open(context) {\r\n if (!this._windowRef && !this._isDisabled()) {\r\n // this type assertion is safe because otherwise _isDisabled would return true\r\n const { windowRef, transition$ } = this._popupService.open(this.ngbPopover, context, this.animation);\r\n this._windowRef = windowRef;\r\n this._windowRef.instance.animation = this.animation;\r\n this._windowRef.instance.title = this.popoverTitle;\r\n this._windowRef.instance.context = context;\r\n this._windowRef.instance.popoverClass = this.popoverClass;\r\n this._windowRef.instance.id = this._ngbPopoverWindowId;\r\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbPopoverWindowId);\r\n if (this.container === 'body') {\r\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\r\n }\r\n // We need to detect changes, because we don't know where .open() might be called from.\r\n // Ex. opening popover from one of lifecycle hooks that run after the CD\r\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\r\n this._windowRef.changeDetectorRef.detectChanges();\r\n // We need to mark for check, because popover won't work inside the OnPush component.\r\n // Ex. when we use expression like `{{ popover.isOpen() : 'opened' : 'closed' }}`\r\n // inside the template of an OnPush component and we change the popover from\r\n // open -> closed, the expression in question won't be updated unless we explicitly\r\n // mark the parent component to be checked.\r\n this._windowRef.changeDetectorRef.markForCheck();\r\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [this._windowRef.location.nativeElement]);\r\n transition$.subscribe(() => this.shown.emit());\r\n }\r\n }\r\n /**\r\n * Closes the popover.\r\n *\r\n * This is considered to be a \"manual\" triggering of the popover.\r\n */\r\n close() {\r\n if (this._windowRef) {\r\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\r\n this._popupService.close(this.animation).subscribe(() => {\r\n this._windowRef = null;\r\n this.hidden.emit();\r\n this._changeDetector.markForCheck();\r\n });\r\n }\r\n }\r\n /**\r\n * Toggles the popover.\r\n *\r\n * This is considered to be a \"manual\" triggering of the popover.\r\n */\r\n toggle() {\r\n if (this._windowRef) {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n /**\r\n * Returns `true`, if the popover is currently shown.\r\n */\r\n isOpen() { return this._windowRef != null; }\r\n ngOnInit() {\r\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\r\n }\r\n ngOnChanges({ ngbPopover, popoverTitle, disablePopover, popoverClass }) {\r\n if (popoverClass && this.isOpen()) {\r\n this._windowRef.instance.popoverClass = popoverClass.currentValue;\r\n }\r\n // close popover if title and content become empty, or disablePopover set to true\r\n if ((ngbPopover || popoverTitle || disablePopover) && this._isDisabled()) {\r\n this.close();\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.close();\r\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\r\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\r\n if (this._unregisterListenersFn) {\r\n this._unregisterListenersFn();\r\n }\r\n this._zoneSubscription.unsubscribe();\r\n }\r\n}\nNgbPopover.ɵfac = function NgbPopover_Factory(t) { return new (t || NgbPopover)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(NgbPopoverConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbPopover.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbPopover, selectors: [[\"\", \"ngbPopover\", \"\"]], inputs: { animation: \"animation\", autoClose: \"autoClose\", placement: \"placement\", triggers: \"triggers\", container: \"container\", disablePopover: \"disablePopover\", popoverClass: \"popoverClass\", openDelay: \"openDelay\", closeDelay: \"closeDelay\", ngbPopover: \"ngbPopover\", popoverTitle: \"popoverTitle\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbPopover\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\r\nNgbPopover.ctorParameters = () => [\r\n { type: ElementRef },\r\n { type: Renderer2 },\r\n { type: Injector },\r\n { type: ComponentFactoryResolver },\r\n { type: ViewContainerRef },\r\n { type: NgbPopoverConfig },\r\n { type: NgZone },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: ChangeDetectorRef },\r\n { type: ApplicationRef }\r\n];\r\nNgbPopover.propDecorators = {\r\n animation: [{ type: Input }],\r\n autoClose: [{ type: Input }],\r\n ngbPopover: [{ type: Input }],\r\n popoverTitle: [{ type: Input }],\r\n placement: [{ type: Input }],\r\n triggers: [{ type: Input }],\r\n container: [{ type: Input }],\r\n disablePopover: [{ type: Input }],\r\n popoverClass: [{ type: Input }],\r\n openDelay: [{ type: Input }],\r\n closeDelay: [{ type: Input }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopover, [{\n type: Directive,\n args: [{ selector: '[ngbPopover]', exportAs: 'ngbPopover' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ViewContainerRef }, { type: NgbPopoverConfig }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], animation: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], disablePopover: [{\n type: Input\n }], popoverClass: [{\n type: Input\n }], openDelay: [{\n type: Input\n }], closeDelay: [{\n type: Input\n }], ngbPopover: [{\n type: Input\n }], popoverTitle: [{\n type: Input\n }] }); })();\n\nclass NgbPopoverModule {\r\n}\nNgbPopoverModule.ɵfac = function NgbPopoverModule_Factory(t) { return new (t || NgbPopoverModule)(); };\nNgbPopoverModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbPopoverModule });\nNgbPopoverModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbPopoverModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbPopover, NgbPopoverWindow],\n exports: [NgbPopover],\n imports: [CommonModule],\n entryComponents: [NgbPopoverWindow]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbPopoverModule, { declarations: function () { return [NgbPopover, NgbPopoverWindow]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbPopover]; } }); })();\n\n/**\r\n * A configuration service for the [`NgbProgressbar`](#/components/progressbar/api#NgbProgressbar) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the progress bars used in the application.\r\n */\r\nclass NgbProgressbarConfig {\r\n constructor() {\r\n this.max = 100;\r\n this.animated = false;\r\n this.striped = false;\r\n this.showValue = false;\r\n }\r\n}\nNgbProgressbarConfig.ɵfac = function NgbProgressbarConfig_Factory(t) { return new (t || NgbProgressbarConfig)(); };\r\nNgbProgressbarConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbProgressbarConfig_Factory() { return new NgbProgressbarConfig(); }, token: NgbProgressbarConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbarConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\r\n * A directive that provides feedback on the progress of a workflow or an action.\r\n */\r\nclass NgbProgressbar {\r\n constructor(config) {\r\n /**\r\n * The current value for the progress bar.\r\n *\r\n * Should be in the `[0, max]` range.\r\n */\r\n this.value = 0;\r\n this.max = config.max;\r\n this.animated = config.animated;\r\n this.striped = config.striped;\r\n this.textType = config.textType;\r\n this.type = config.type;\r\n this.showValue = config.showValue;\r\n this.height = config.height;\r\n }\r\n /**\r\n * The maximal value to be displayed in the progress bar.\r\n *\r\n * Should be a positive number. Will default to 100 otherwise.\r\n */\r\n set max(max) {\r\n this._max = !isNumber(max) || max <= 0 ? 100 : max;\r\n }\r\n get max() { return this._max; }\r\n getValue() { return getValueInRange(this.value, this.max); }\r\n getPercentValue() { return 100 * this.getValue() / this.max; }\r\n}\nNgbProgressbar.ɵfac = function NgbProgressbar_Factory(t) { return new (t || NgbProgressbar)(ɵngcc0.ɵɵdirectiveInject(NgbProgressbarConfig)); };\nNgbProgressbar.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbProgressbar, selectors: [[\"ngb-progressbar\"]], hostAttrs: [1, \"progress\"], hostVars: 2, hostBindings: function NgbProgressbar_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵstyleProp(\"height\", ctx.height);\n } }, inputs: { value: \"value\", max: \"max\", animated: \"animated\", striped: \"striped\", textType: \"textType\", type: \"type\", showValue: \"showValue\", height: \"height\" }, ngContentSelectors: _c3, decls: 3, vars: 11, consts: function () { let i18n_55; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_progressbar_value$$FESM2015_NG_BOOTSTRAP_JS__56 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_55 = MSG_EXTERNAL_ngb_progressbar_value$$FESM2015_NG_BOOTSTRAP_JS__56;\n }\n else {\n i18n_55 = $localize `:@@ngb.progressbar.value␟f8e9a947b9db4252c0e9905765338712f2fd032f␟3720830768741091151:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } return [[\"role\", \"progressbar\", \"aria-valuemin\", \"0\"], [4, \"ngIf\"], i18n_55]; }, template: function NgbProgressbar_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵtemplate(1, NgbProgressbar_span_1_Template, 3, 3, \"span\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassMapInterpolate4(\"progress-bar\", ctx.type ? \" bg-\" + ctx.type : \"\", \"\", ctx.textType ? \" text-\" + ctx.textType : \"\", \"\\n \", ctx.animated ? \" progress-bar-animated\" : \"\", \"\", ctx.striped ? \" progress-bar-striped\" : \"\", \"\");\n ɵngcc0.ɵɵstyleProp(\"width\", ctx.getPercentValue(), \"%\");\n ɵngcc0.ɵɵattribute(\"aria-valuenow\", ctx.getValue())(\"aria-valuemax\", ctx.max);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showValue);\n } }, directives: [ɵngcc1.NgIf], pipes: [ɵngcc1.PercentPipe], encapsulation: 2, changeDetection: 0 });\r\nNgbProgressbar.ctorParameters = () => [\r\n { type: NgbProgressbarConfig }\r\n];\r\nNgbProgressbar.propDecorators = {\r\n max: [{ type: Input }],\r\n animated: [{ type: Input }],\r\n striped: [{ type: Input }],\r\n showValue: [{ type: Input }],\r\n textType: [{ type: Input }],\r\n type: [{ type: Input }],\r\n value: [{ type: Input }],\r\n height: [{ type: Input }, { type: HostBinding, args: ['style.height',] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbar, [{\n type: Component,\n args: [{\n selector: 'ngb-progressbar',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: { class: 'progress' },\n template: `\r\n
    \r\n {{getValue() / max | percent}}\r\n
    \r\n `\n }]\n }], function () { return [{ type: NgbProgressbarConfig }]; }, { value: [{\n type: Input\n }], max: [{\n type: Input\n }], animated: [{\n type: Input\n }], striped: [{\n type: Input\n }], textType: [{\n type: Input\n }], type: [{\n type: Input\n }], showValue: [{\n type: Input\n }], height: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['style.height']\n }] }); })();\n\nclass NgbProgressbarModule {\r\n}\nNgbProgressbarModule.ɵfac = function NgbProgressbarModule_Factory(t) { return new (t || NgbProgressbarModule)(); };\nNgbProgressbarModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbProgressbarModule });\nNgbProgressbarModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbProgressbarModule, [{\n type: NgModule,\n args: [{ declarations: [NgbProgressbar], exports: [NgbProgressbar], imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbProgressbarModule, { declarations: function () { return [NgbProgressbar]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbProgressbar]; } }); })();\n\n/**\r\n * A configuration service for the [`NgbRating`](#/components/rating/api#NgbRating) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the ratings used in the application.\r\n */\r\nclass NgbRatingConfig {\r\n constructor() {\r\n this.max = 10;\r\n this.readonly = false;\r\n this.resettable = false;\r\n }\r\n}\nNgbRatingConfig.ɵfac = function NgbRatingConfig_Factory(t) { return new (t || NgbRatingConfig)(); };\r\nNgbRatingConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbRatingConfig_Factory() { return new NgbRatingConfig(); }, token: NgbRatingConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRatingConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\n/**\r\n * A directive that helps visualising and interacting with a star rating bar.\r\n */\r\nclass NgbRating {\r\n constructor(config, _changeDetectorRef) {\r\n this._changeDetectorRef = _changeDetectorRef;\r\n this.contexts = [];\r\n this.disabled = false;\r\n /**\r\n * An event emitted when the user is hovering over a given rating.\r\n *\r\n * Event payload equals to the rating being hovered over.\r\n */\r\n this.hover = new EventEmitter();\r\n /**\r\n * An event emitted when the user stops hovering over a given rating.\r\n *\r\n * Event payload equals to the rating of the last item being hovered over.\r\n */\r\n this.leave = new EventEmitter();\r\n /**\r\n * An event emitted when the user selects a new rating.\r\n *\r\n * Event payload equals to the newly selected rating.\r\n */\r\n this.rateChange = new EventEmitter(true);\r\n this.onChange = (_) => { };\r\n this.onTouched = () => { };\r\n this.max = config.max;\r\n this.readonly = config.readonly;\r\n }\r\n ariaValueText() { return `${this.nextRate} out of ${this.max}`; }\r\n isInteractive() { return !this.readonly && !this.disabled; }\r\n enter(value) {\r\n if (this.isInteractive()) {\r\n this._updateState(value);\r\n }\r\n this.hover.emit(value);\r\n }\r\n handleBlur() { this.onTouched(); }\r\n handleClick(value) {\r\n if (this.isInteractive()) {\r\n this.update(this.resettable && this.rate === value ? 0 : value);\r\n }\r\n }\r\n handleKeyDown(event) {\r\n // tslint:disable-next-line:deprecation\r\n switch (event.which) {\r\n case Key.ArrowDown:\r\n case Key.ArrowLeft:\r\n this.update(this.rate - 1);\r\n break;\r\n case Key.ArrowUp:\r\n case Key.ArrowRight:\r\n this.update(this.rate + 1);\r\n break;\r\n case Key.Home:\r\n this.update(0);\r\n break;\r\n case Key.End:\r\n this.update(this.max);\r\n break;\r\n default:\r\n return;\r\n }\r\n // note 'return' in default case\r\n event.preventDefault();\r\n }\r\n ngOnChanges(changes) {\r\n if (changes['rate']) {\r\n this.update(this.rate);\r\n }\r\n }\r\n ngOnInit() {\r\n this.contexts = Array.from({ length: this.max }, (v, k) => ({ fill: 0, index: k }));\r\n this._updateState(this.rate);\r\n }\r\n registerOnChange(fn) { this.onChange = fn; }\r\n registerOnTouched(fn) { this.onTouched = fn; }\r\n reset() {\r\n this.leave.emit(this.nextRate);\r\n this._updateState(this.rate);\r\n }\r\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\r\n update(value, internalChange = true) {\r\n const newRate = getValueInRange(value, this.max, 0);\r\n if (this.isInteractive() && this.rate !== newRate) {\r\n this.rate = newRate;\r\n this.rateChange.emit(this.rate);\r\n }\r\n if (internalChange) {\r\n this.onChange(this.rate);\r\n this.onTouched();\r\n }\r\n this._updateState(this.rate);\r\n }\r\n writeValue(value) {\r\n this.update(value, false);\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n _updateState(nextValue) {\r\n this.nextRate = nextValue;\r\n this.contexts.forEach((context, index) => context.fill = Math.round(getValueInRange(nextValue - index, 1, 0) * 100));\r\n }\r\n}\nNgbRating.ɵfac = function NgbRating_Factory(t) { return new (t || NgbRating)(ɵngcc0.ɵɵdirectiveInject(NgbRatingConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgbRating.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbRating, selectors: [[\"ngb-rating\"]], contentQueries: function NgbRating_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, TemplateRef, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.starTemplateFromContent = _t.first);\n } }, hostAttrs: [\"role\", \"slider\", \"aria-valuemin\", \"0\", 1, \"d-inline-flex\"], hostVars: 5, hostBindings: function NgbRating_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"blur\", function NgbRating_blur_HostBindingHandler() { return ctx.handleBlur(); })(\"keydown\", function NgbRating_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); })(\"mouseleave\", function NgbRating_mouseleave_HostBindingHandler() { return ctx.reset(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"tabindex\", ctx.disabled ? -1 : 0);\n ɵngcc0.ɵɵattribute(\"aria-valuemax\", ctx.max)(\"aria-valuenow\", ctx.nextRate)(\"aria-valuetext\", ctx.ariaValueText())(\"aria-disabled\", ctx.readonly ? true : null);\n } }, inputs: { max: \"max\", readonly: \"readonly\", rate: \"rate\", resettable: \"resettable\", starTemplate: \"starTemplate\" }, outputs: { hover: \"hover\", leave: \"leave\", rateChange: \"rateChange\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRating), multi: true }]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 3, vars: 1, consts: [[\"t\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [1, \"sr-only\"], [3, \"mouseenter\", \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbRating_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbRating_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbRating_ng_template_2_Template, 4, 5, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.contexts);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\r\nNgbRating.ctorParameters = () => [\r\n { type: NgbRatingConfig },\r\n { type: ChangeDetectorRef }\r\n];\r\nNgbRating.propDecorators = {\r\n max: [{ type: Input }],\r\n rate: [{ type: Input }],\r\n readonly: [{ type: Input }],\r\n resettable: [{ type: Input }],\r\n starTemplate: [{ type: Input }],\r\n starTemplateFromContent: [{ type: ContentChild, args: [TemplateRef, { static: false },] }],\r\n hover: [{ type: Output }],\r\n leave: [{ type: Output }],\r\n rateChange: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRating, [{\n type: Component,\n args: [{\n selector: 'ngb-rating',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n 'class': 'd-inline-flex',\n '[tabindex]': 'disabled ? -1 : 0',\n 'role': 'slider',\n 'aria-valuemin': '0',\n '[attr.aria-valuemax]': 'max',\n '[attr.aria-valuenow]': 'nextRate',\n '[attr.aria-valuetext]': 'ariaValueText()',\n '[attr.aria-disabled]': 'readonly ? true : null',\n '(blur)': 'handleBlur()',\n '(keydown)': 'handleKeyDown($event)',\n '(mouseleave)': 'reset()'\n },\n template: `\r\n {{ fill === 100 ? '★' : '☆' }}\r\n \r\n ({{ index < nextRate ? '*' : ' ' }})\r\n \r\n \r\n \r\n \r\n \r\n `,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbRating), multi: true }]\n }]\n }], function () { return [{ type: NgbRatingConfig }, { type: ɵngcc0.ChangeDetectorRef }]; }, { hover: [{\n type: Output\n }], leave: [{\n type: Output\n }], rateChange: [{\n type: Output\n }], max: [{\n type: Input\n }], readonly: [{\n type: Input\n }], rate: [{\n type: Input\n }], resettable: [{\n type: Input\n }], starTemplate: [{\n type: Input\n }], starTemplateFromContent: [{\n type: ContentChild,\n args: [TemplateRef, { static: false }]\n }] }); })();\n\nclass NgbRatingModule {\r\n}\nNgbRatingModule.ɵfac = function NgbRatingModule_Factory(t) { return new (t || NgbRatingModule)(); };\nNgbRatingModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbRatingModule });\nNgbRatingModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbRatingModule, [{\n type: NgModule,\n args: [{ declarations: [NgbRating], exports: [NgbRating], imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbRatingModule, { declarations: function () { return [NgbRating]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbRating]; } }); })();\n\nclass NgbTime {\r\n constructor(hour, minute, second) {\r\n this.hour = toInteger(hour);\r\n this.minute = toInteger(minute);\r\n this.second = toInteger(second);\r\n }\r\n changeHour(step = 1) { this.updateHour((isNaN(this.hour) ? 0 : this.hour) + step); }\r\n updateHour(hour) {\r\n if (isNumber(hour)) {\r\n this.hour = (hour < 0 ? 24 + hour : hour) % 24;\r\n }\r\n else {\r\n this.hour = NaN;\r\n }\r\n }\r\n changeMinute(step = 1) { this.updateMinute((isNaN(this.minute) ? 0 : this.minute) + step); }\r\n updateMinute(minute) {\r\n if (isNumber(minute)) {\r\n this.minute = minute % 60 < 0 ? 60 + minute % 60 : minute % 60;\r\n this.changeHour(Math.floor(minute / 60));\r\n }\r\n else {\r\n this.minute = NaN;\r\n }\r\n }\r\n changeSecond(step = 1) { this.updateSecond((isNaN(this.second) ? 0 : this.second) + step); }\r\n updateSecond(second) {\r\n if (isNumber(second)) {\r\n this.second = second < 0 ? 60 + second % 60 : second % 60;\r\n this.changeMinute(Math.floor(second / 60));\r\n }\r\n else {\r\n this.second = NaN;\r\n }\r\n }\r\n isValid(checkSecs = true) {\r\n return isNumber(this.hour) && isNumber(this.minute) && (checkSecs ? isNumber(this.second) : true);\r\n }\r\n toString() { return `${this.hour || 0}:${this.minute || 0}:${this.second || 0}`; }\r\n}\n\n/**\r\n * A configuration service for the [`NgbTimepicker`](#/components/timepicker/api#NgbTimepicker) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the timepickers used in the application.\r\n */\r\nclass NgbTimepickerConfig {\r\n constructor() {\r\n this.meridian = false;\r\n this.spinners = true;\r\n this.seconds = false;\r\n this.hourStep = 1;\r\n this.minuteStep = 1;\r\n this.secondStep = 1;\r\n this.disabled = false;\r\n this.readonlyInputs = false;\r\n this.size = 'medium';\r\n }\r\n}\nNgbTimepickerConfig.ɵfac = function NgbTimepickerConfig_Factory(t) { return new (t || NgbTimepickerConfig)(); };\r\nNgbTimepickerConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbTimepickerConfig_Factory() { return new NgbTimepickerConfig(); }, token: NgbTimepickerConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nfunction NGB_DATEPICKER_TIME_ADAPTER_FACTORY() {\r\n return new NgbTimeStructAdapter();\r\n}\r\n/**\r\n * An abstract service that does the conversion between the internal timepicker `NgbTimeStruct` model and\r\n * any provided user time model `T`, ex. a string, a native date, etc.\r\n *\r\n * The adapter is used **only** for conversion when binding timepicker to a form control,\r\n * ex. `[(ngModel)]=\"userTimeModel\"`. Here `userTimeModel` can be of any type.\r\n *\r\n * The default timepicker implementation assumes we use `NgbTimeStruct` as a user model.\r\n *\r\n * See the [custom time adapter demo](#/components/timepicker/examples#adapter) for an example.\r\n *\r\n * @since 2.2.0\r\n */\r\nclass NgbTimeAdapter {\r\n}\nNgbTimeAdapter.ɵfac = function NgbTimeAdapter_Factory(t) { return new (t || NgbTimeAdapter)(); };\r\nNgbTimeAdapter.ɵprov = ɵɵdefineInjectable({ factory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY, token: NgbTimeAdapter, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimeAdapter, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_DATEPICKER_TIME_ADAPTER_FACTORY }]\n }], null, null); })();\r\nclass NgbTimeStructAdapter extends NgbTimeAdapter {\r\n /**\r\n * Converts a NgbTimeStruct value into NgbTimeStruct value\r\n */\r\n fromModel(time) {\r\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\r\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\r\n null;\r\n }\r\n /**\r\n * Converts a NgbTimeStruct value into NgbTimeStruct value\r\n */\r\n toModel(time) {\r\n return (time && isInteger(time.hour) && isInteger(time.minute)) ?\r\n { hour: time.hour, minute: time.minute, second: isInteger(time.second) ? time.second : null } :\r\n null;\r\n }\r\n}\nNgbTimeStructAdapter.ɵfac = /*@__PURE__*/ function () { let ɵNgbTimeStructAdapter_BaseFactory; return function NgbTimeStructAdapter_Factory(t) { return (ɵNgbTimeStructAdapter_BaseFactory || (ɵNgbTimeStructAdapter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(NgbTimeStructAdapter)))(t || NgbTimeStructAdapter); }; }();\nNgbTimeStructAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbTimeStructAdapter, factory: NgbTimeStructAdapter.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimeStructAdapter, [{\n type: Injectable\n }], null, null); })();\n\nfunction NGB_TIMEPICKER_I18N_FACTORY(locale) {\r\n return new NgbTimepickerI18nDefault(locale);\r\n}\r\n/**\r\n * Type of the service supplying day periods (for example, 'AM' and 'PM') to NgbTimepicker component.\r\n * The default implementation of this service honors the Angular locale, and uses the registered locale data,\r\n * as explained in the Angular i18n guide.\r\n */\r\nclass NgbTimepickerI18n {\r\n}\nNgbTimepickerI18n.ɵfac = function NgbTimepickerI18n_Factory(t) { return new (t || NgbTimepickerI18n)(); };\r\nNgbTimepickerI18n.ɵprov = ɵɵdefineInjectable({ factory: function NgbTimepickerI18n_Factory() { return NGB_TIMEPICKER_I18N_FACTORY(ɵɵinject(LOCALE_ID)); }, token: NgbTimepickerI18n, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerI18n, [{\n type: Injectable,\n args: [{ providedIn: 'root', useFactory: NGB_TIMEPICKER_I18N_FACTORY, deps: [LOCALE_ID] }]\n }], null, null); })();\r\nclass NgbTimepickerI18nDefault extends NgbTimepickerI18n {\r\n constructor(locale) {\r\n super();\r\n this._periods = getLocaleDayPeriods(locale, FormStyle.Standalone, TranslationWidth.Narrow);\r\n }\r\n getMorningPeriod() { return this._periods[0]; }\r\n getAfternoonPeriod() { return this._periods[1]; }\r\n}\nNgbTimepickerI18nDefault.ɵfac = function NgbTimepickerI18nDefault_Factory(t) { return new (t || NgbTimepickerI18nDefault)(ɵngcc0.ɵɵinject(LOCALE_ID)); };\nNgbTimepickerI18nDefault.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgbTimepickerI18nDefault, factory: NgbTimepickerI18nDefault.ɵfac });\r\nNgbTimepickerI18nDefault.ctorParameters = () => [\r\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerI18nDefault, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n\nconst FILTER_REGEX = /[^0-9]/g;\r\n/**\r\n * A directive that helps with wth picking hours, minutes and seconds.\r\n */\r\nclass NgbTimepicker {\r\n constructor(_config, _ngbTimeAdapter, _cd, i18n) {\r\n this._config = _config;\r\n this._ngbTimeAdapter = _ngbTimeAdapter;\r\n this._cd = _cd;\r\n this.i18n = i18n;\r\n this.onChange = (_) => { };\r\n this.onTouched = () => { };\r\n this.meridian = _config.meridian;\r\n this.spinners = _config.spinners;\r\n this.seconds = _config.seconds;\r\n this.hourStep = _config.hourStep;\r\n this.minuteStep = _config.minuteStep;\r\n this.secondStep = _config.secondStep;\r\n this.disabled = _config.disabled;\r\n this.readonlyInputs = _config.readonlyInputs;\r\n this.size = _config.size;\r\n }\r\n /**\r\n * The number of hours to add/subtract when clicking hour spinners.\r\n */\r\n set hourStep(step) {\r\n this._hourStep = isInteger(step) ? step : this._config.hourStep;\r\n }\r\n get hourStep() { return this._hourStep; }\r\n /**\r\n * The number of minutes to add/subtract when clicking minute spinners.\r\n */\r\n set minuteStep(step) {\r\n this._minuteStep = isInteger(step) ? step : this._config.minuteStep;\r\n }\r\n get minuteStep() { return this._minuteStep; }\r\n /**\r\n * The number of seconds to add/subtract when clicking second spinners.\r\n */\r\n set secondStep(step) {\r\n this._secondStep = isInteger(step) ? step : this._config.secondStep;\r\n }\r\n get secondStep() { return this._secondStep; }\r\n writeValue(value) {\r\n const structValue = this._ngbTimeAdapter.fromModel(value);\r\n this.model = structValue ? new NgbTime(structValue.hour, structValue.minute, structValue.second) : new NgbTime();\r\n if (!this.seconds && (!structValue || !isNumber(structValue.second))) {\r\n this.model.second = 0;\r\n }\r\n this._cd.markForCheck();\r\n }\r\n registerOnChange(fn) { this.onChange = fn; }\r\n registerOnTouched(fn) { this.onTouched = fn; }\r\n setDisabledState(isDisabled) { this.disabled = isDisabled; }\r\n changeHour(step) {\r\n this.model.changeHour(step);\r\n this.propagateModelChange();\r\n }\r\n changeMinute(step) {\r\n this.model.changeMinute(step);\r\n this.propagateModelChange();\r\n }\r\n changeSecond(step) {\r\n this.model.changeSecond(step);\r\n this.propagateModelChange();\r\n }\r\n updateHour(newVal) {\r\n const isPM = this.model.hour >= 12;\r\n const enteredHour = toInteger(newVal);\r\n if (this.meridian && (isPM && enteredHour < 12 || !isPM && enteredHour === 12)) {\r\n this.model.updateHour(enteredHour + 12);\r\n }\r\n else {\r\n this.model.updateHour(enteredHour);\r\n }\r\n this.propagateModelChange();\r\n }\r\n updateMinute(newVal) {\r\n this.model.updateMinute(toInteger(newVal));\r\n this.propagateModelChange();\r\n }\r\n updateSecond(newVal) {\r\n this.model.updateSecond(toInteger(newVal));\r\n this.propagateModelChange();\r\n }\r\n toggleMeridian() {\r\n if (this.meridian) {\r\n this.changeHour(12);\r\n }\r\n }\r\n formatInput(input) { input.value = input.value.replace(FILTER_REGEX, ''); }\r\n formatHour(value) {\r\n if (isNumber(value)) {\r\n if (this.meridian) {\r\n return padNumber(value % 12 === 0 ? 12 : value % 12);\r\n }\r\n else {\r\n return padNumber(value % 24);\r\n }\r\n }\r\n else {\r\n return padNumber(NaN);\r\n }\r\n }\r\n formatMinSec(value) { return padNumber(isNumber(value) ? value : NaN); }\r\n handleBlur() { this.onTouched(); }\r\n get isSmallSize() { return this.size === 'small'; }\r\n get isLargeSize() { return this.size === 'large'; }\r\n ngOnChanges(changes) {\r\n if (changes['seconds'] && !this.seconds && this.model && !isNumber(this.model.second)) {\r\n this.model.second = 0;\r\n this.propagateModelChange(false);\r\n }\r\n }\r\n propagateModelChange(touched = true) {\r\n if (touched) {\r\n this.onTouched();\r\n }\r\n if (this.model.isValid(this.seconds)) {\r\n this.onChange(this._ngbTimeAdapter.toModel({ hour: this.model.hour, minute: this.model.minute, second: this.model.second }));\r\n }\r\n else {\r\n this.onChange(this._ngbTimeAdapter.toModel(null));\r\n }\r\n }\r\n}\nNgbTimepicker.ɵfac = function NgbTimepicker_Factory(t) { return new (t || NgbTimepicker)(ɵngcc0.ɵɵdirectiveInject(NgbTimepickerConfig), ɵngcc0.ɵɵdirectiveInject(NgbTimeAdapter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgbTimepickerI18n)); };\nNgbTimepicker.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbTimepicker, selectors: [[\"ngb-timepicker\"]], inputs: { meridian: \"meridian\", spinners: \"spinners\", seconds: \"seconds\", hourStep: \"hourStep\", minuteStep: \"minuteStep\", secondStep: \"secondStep\", readonlyInputs: \"readonlyInputs\", size: \"size\" }, features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTimepicker), multi: true }]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 16, vars: 25, consts: function () { let i18n_57; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_HH$$FESM2015_NG_BOOTSTRAP_JS_58 = goog.getMsg(\"HH\");\n i18n_57 = MSG_EXTERNAL_ngb_timepicker_HH$$FESM2015_NG_BOOTSTRAP_JS_58;\n }\n else {\n i18n_57 = $localize `:@@ngb.timepicker.HH␟ce676ab1d6d98f85c836381cf100a4a91ef95a1f␟4043638465245303811:HH`;\n } let i18n_59; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_hours$$FESM2015_NG_BOOTSTRAP_JS_60 = goog.getMsg(\"Hours\");\n i18n_59 = MSG_EXTERNAL_ngb_timepicker_hours$$FESM2015_NG_BOOTSTRAP_JS_60;\n }\n else {\n i18n_59 = $localize `:@@ngb.timepicker.hours␟3bbce5fef7e1151da052a4e529453edb340e3912␟8070396816726827304:Hours`;\n } let i18n_61; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_MM$$FESM2015_NG_BOOTSTRAP_JS_62 = goog.getMsg(\"MM\");\n i18n_61 = MSG_EXTERNAL_ngb_timepicker_MM$$FESM2015_NG_BOOTSTRAP_JS_62;\n }\n else {\n i18n_61 = $localize `:@@ngb.timepicker.MM␟72c8edf6a50068a05bde70991e36b1e881f4ca54␟1647282246509919852:MM`;\n } let i18n_63; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_minutes$$FESM2015_NG_BOOTSTRAP_JS_64 = goog.getMsg(\"Minutes\");\n i18n_63 = MSG_EXTERNAL_ngb_timepicker_minutes$$FESM2015_NG_BOOTSTRAP_JS_64;\n }\n else {\n i18n_63 = $localize `:@@ngb.timepicker.minutes␟41e62daa962947c0d23ded0981975d1bddf0bf38␟5531237363767747080:Minutes`;\n } let i18n_65; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_increment_hours$$FESM2015_NG_BOOTSTRAP_JS__66 = goog.getMsg(\"Increment hours\");\n i18n_65 = MSG_EXTERNAL_ngb_timepicker_increment_hours$$FESM2015_NG_BOOTSTRAP_JS__66;\n }\n else {\n i18n_65 = $localize `:@@ngb.timepicker.increment-hours␟cb74bc1d625a6c1742f0d7d47306cf495780c218␟5939278348542933629:Increment hours`;\n } let i18n_67; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_decrement_hours$$FESM2015_NG_BOOTSTRAP_JS__68 = goog.getMsg(\"Decrement hours\");\n i18n_67 = MSG_EXTERNAL_ngb_timepicker_decrement_hours$$FESM2015_NG_BOOTSTRAP_JS__68;\n }\n else {\n i18n_67 = $localize `:@@ngb.timepicker.decrement-hours␟147c7a19429da7d999e247d22e33fee370b1691b␟3651829882940481818:Decrement hours`;\n } let i18n_69; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_increment_minutes$$FESM2015_NG_BOOTSTRAP_JS__70 = goog.getMsg(\"Increment minutes\");\n i18n_69 = MSG_EXTERNAL_ngb_timepicker_increment_minutes$$FESM2015_NG_BOOTSTRAP_JS__70;\n }\n else {\n i18n_69 = $localize `:@@ngb.timepicker.increment-minutes␟f5a4a3bc05e053f6732475d0e74875ec01c3a348␟180147720391025024:Increment minutes`;\n } let i18n_71; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_decrement_minutes$$FESM2015_NG_BOOTSTRAP_JS__72 = goog.getMsg(\"Decrement minutes\");\n i18n_71 = MSG_EXTERNAL_ngb_timepicker_decrement_minutes$$FESM2015_NG_BOOTSTRAP_JS__72;\n }\n else {\n i18n_71 = $localize `:@@ngb.timepicker.decrement-minutes␟c1a6899e529c096da5b660385d4e77fe1f7ad271␟7447789825403243588:Decrement minutes`;\n } let i18n_73; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_SS$$FESM2015_NG_BOOTSTRAP_JS__74 = goog.getMsg(\"SS\");\n i18n_73 = MSG_EXTERNAL_ngb_timepicker_SS$$FESM2015_NG_BOOTSTRAP_JS__74;\n }\n else {\n i18n_73 = $localize `:@@ngb.timepicker.SS␟ebe38d36a40a2383c5fefa9b4608ffbda08bd4a3␟3628127143071124194:SS`;\n } let i18n_75; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_seconds$$FESM2015_NG_BOOTSTRAP_JS__76 = goog.getMsg(\"Seconds\");\n i18n_75 = MSG_EXTERNAL_ngb_timepicker_seconds$$FESM2015_NG_BOOTSTRAP_JS__76;\n }\n else {\n i18n_75 = $localize `:@@ngb.timepicker.seconds␟4f2ed9e71a7c981db3e50ae2fedb28aff2ec4e6c␟8874012390997067175:Seconds`;\n } let i18n_77; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_increment_seconds$$FESM2015_NG_BOOTSTRAP_JS___78 = goog.getMsg(\"Increment seconds\");\n i18n_77 = MSG_EXTERNAL_ngb_timepicker_increment_seconds$$FESM2015_NG_BOOTSTRAP_JS___78;\n }\n else {\n i18n_77 = $localize `:@@ngb.timepicker.increment-seconds␟912322ecee7d659d04dcf494a70e22e49d334b26␟5364772110539092174:Increment seconds`;\n } let i18n_79; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_decrement_seconds$$FESM2015_NG_BOOTSTRAP_JS___80 = goog.getMsg(\"Decrement seconds\");\n i18n_79 = MSG_EXTERNAL_ngb_timepicker_decrement_seconds$$FESM2015_NG_BOOTSTRAP_JS___80;\n }\n else {\n i18n_79 = $localize `:@@ngb.timepicker.decrement-seconds␟5db47ac104294243a70eb9124fbea9d0004ddf69␟753633511487974857:Decrement seconds`;\n } let i18n_81; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_PM$$FESM2015_NG_BOOTSTRAP_JS___82 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_81 = MSG_EXTERNAL_ngb_timepicker_PM$$FESM2015_NG_BOOTSTRAP_JS___82;\n }\n else {\n i18n_81 = $localize `:@@ngb.timepicker.PM␟8d6e691e10306c1b34c6b26805151aaea320ef7f␟3564199131264287502:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } let i18n_83; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_timepicker_AM$$FESM2015_NG_BOOTSTRAP_JS___84 = goog.getMsg(\"{$interpolation}\", { \"interpolation\": \"\\uFFFD0\\uFFFD\" });\n i18n_83 = MSG_EXTERNAL_ngb_timepicker_AM$$FESM2015_NG_BOOTSTRAP_JS___84;\n }\n else {\n i18n_83 = $localize `:@@ngb.timepicker.AM␟69a1f176a93998876952adac57c3bc3863b6105e␟4592818992509942761:${\"\\uFFFD0\\uFFFD\"}:INTERPOLATION:`;\n } return [[3, \"disabled\"], [1, \"ngb-tp\"], [1, \"ngb-tp-input-container\", \"ngb-tp-hour\"], [\"tabindex\", \"-1\", \"type\", \"button\", \"class\", \"btn btn-link\", 3, \"btn-sm\", \"btn-lg\", \"disabled\", \"click\", 4, \"ngIf\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_57, \"aria-label\", i18n_59, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], [1, \"ngb-tp-spacer\"], [1, \"ngb-tp-input-container\", \"ngb-tp-minute\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_61, \"aria-label\", i18n_63, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], [\"class\", \"ngb-tp-spacer\", 4, \"ngIf\"], [\"class\", \"ngb-tp-input-container ngb-tp-second\", 4, \"ngIf\"], [\"class\", \"ngb-tp-meridian\", 4, \"ngIf\"], [\"tabindex\", \"-1\", \"type\", \"button\", 1, \"btn\", \"btn-link\", 3, \"disabled\", \"click\"], [1, \"chevron\", \"ngb-tp-chevron\"], [1, \"sr-only\"], i18n_65, [1, \"chevron\", \"ngb-tp-chevron\", \"bottom\"], i18n_67, i18n_69, i18n_71, [1, \"ngb-tp-input-container\", \"ngb-tp-second\"], [\"type\", \"text\", \"maxlength\", \"2\", \"inputmode\", \"numeric\", \"placeholder\", i18n_73, \"aria-label\", i18n_75, 1, \"ngb-tp-input\", \"form-control\", 3, \"value\", \"readOnly\", \"disabled\", \"change\", \"blur\", \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\"], i18n_77, i18n_79, [1, \"ngb-tp-meridian\"], [\"type\", \"button\", 1, \"btn\", \"btn-outline-primary\", 3, \"disabled\", \"click\"], [4, \"ngIf\", \"ngIfElse\"], [\"am\", \"\"], i18n_81, i18n_83]; }, template: function NgbTimepicker_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"fieldset\", 0)(1, \"div\", 1)(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, NgbTimepicker_button_3_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(4, \"input\", 4);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_Template_input_change_4_listener($event) { return ctx.updateHour($event.target.value); })(\"blur\", function NgbTimepicker_Template_input_blur_4_listener() { return ctx.handleBlur(); })(\"input\", function NgbTimepicker_Template_input_input_4_listener($event) { return ctx.formatInput($event.target); })(\"keydown.ArrowUp\", function NgbTimepicker_Template_input_keydown_ArrowUp_4_listener($event) { ctx.changeHour(ctx.hourStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_Template_input_keydown_ArrowDown_4_listener($event) { ctx.changeHour(-ctx.hourStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, NgbTimepicker_button_5_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(6, \"div\", 5);\n ɵngcc0.ɵɵtext(7, \":\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(8, \"div\", 6);\n ɵngcc0.ɵɵtemplate(9, NgbTimepicker_button_9_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementStart(10, \"input\", 7);\n ɵngcc0.ɵɵlistener(\"change\", function NgbTimepicker_Template_input_change_10_listener($event) { return ctx.updateMinute($event.target.value); })(\"blur\", function NgbTimepicker_Template_input_blur_10_listener() { return ctx.handleBlur(); })(\"input\", function NgbTimepicker_Template_input_input_10_listener($event) { return ctx.formatInput($event.target); })(\"keydown.ArrowUp\", function NgbTimepicker_Template_input_keydown_ArrowUp_10_listener($event) { ctx.changeMinute(ctx.minuteStep); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgbTimepicker_Template_input_keydown_ArrowDown_10_listener($event) { ctx.changeMinute(-ctx.minuteStep); return $event.preventDefault(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(11, NgbTimepicker_button_11_Template, 4, 7, \"button\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(12, NgbTimepicker_div_12_Template, 2, 0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(13, NgbTimepicker_div_13_Template, 4, 9, \"div\", 9);\n ɵngcc0.ɵɵtemplate(14, NgbTimepicker_div_14_Template, 1, 0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(15, NgbTimepicker_div_15_Template, 5, 9, \"div\", 10);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx.isSmallSize)(\"form-control-lg\", ctx.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx.formatHour(ctx.model == null ? null : ctx.model.hour))(\"readOnly\", ctx.readonlyInputs)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"form-control-sm\", ctx.isSmallSize)(\"form-control-lg\", ctx.isLargeSize);\n ɵngcc0.ɵɵproperty(\"value\", ctx.formatMinSec(ctx.model == null ? null : ctx.model.minute))(\"readOnly\", ctx.readonlyInputs)(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.spinners);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.seconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.seconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.meridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.meridian);\n } }, directives: [ɵngcc1.NgIf], styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{align-items:center;display:flex}.ngb-tp-input-container{width:4em}.ngb-tp-chevron:before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{align-items:center;display:flex;flex-direction:column;justify-content:space-around}.ngb-tp-spacer{text-align:center;width:1em}\"], encapsulation: 2 });\r\nNgbTimepicker.ctorParameters = () => [\r\n { type: NgbTimepickerConfig },\r\n { type: NgbTimeAdapter },\r\n { type: ChangeDetectorRef },\r\n { type: NgbTimepickerI18n }\r\n];\r\nNgbTimepicker.propDecorators = {\r\n meridian: [{ type: Input }],\r\n spinners: [{ type: Input }],\r\n seconds: [{ type: Input }],\r\n hourStep: [{ type: Input }],\r\n minuteStep: [{ type: Input }],\r\n secondStep: [{ type: Input }],\r\n readonlyInputs: [{ type: Input }],\r\n size: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepicker, [{\n type: Component,\n args: [{\n selector: 'ngb-timepicker',\n encapsulation: ViewEncapsulation.None,\n template: `\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    :
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    :
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n `,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTimepicker), multi: true }],\n styles: [\"ngb-timepicker{font-size:1rem}.ngb-tp{align-items:center;display:flex}.ngb-tp-input-container{width:4em}.ngb-tp-chevron:before{border-style:solid;border-width:.29em .29em 0 0;content:\\\"\\\";display:inline-block;height:.69em;left:.05em;position:relative;top:.15em;transform:rotate(-45deg);vertical-align:middle;width:.69em}.ngb-tp-chevron.bottom:before{top:-.3em;transform:rotate(135deg)}.ngb-tp-input{text-align:center}.ngb-tp-hour,.ngb-tp-meridian,.ngb-tp-minute,.ngb-tp-second{align-items:center;display:flex;flex-direction:column;justify-content:space-around}.ngb-tp-spacer{text-align:center;width:1em}\"]\n }]\n }], function () { return [{ type: NgbTimepickerConfig }, { type: NgbTimeAdapter }, { type: ɵngcc0.ChangeDetectorRef }, { type: NgbTimepickerI18n }]; }, { meridian: [{\n type: Input\n }], spinners: [{\n type: Input\n }], seconds: [{\n type: Input\n }], hourStep: [{\n type: Input\n }], minuteStep: [{\n type: Input\n }], secondStep: [{\n type: Input\n }], readonlyInputs: [{\n type: Input\n }], size: [{\n type: Input\n }] }); })();\n\nclass NgbTimepickerModule {\r\n}\nNgbTimepickerModule.ɵfac = function NgbTimepickerModule_Factory(t) { return new (t || NgbTimepickerModule)(); };\nNgbTimepickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbTimepickerModule });\nNgbTimepickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTimepickerModule, [{\n type: NgModule,\n args: [{ declarations: [NgbTimepicker], exports: [NgbTimepicker], imports: [CommonModule] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTimepickerModule, { declarations: function () { return [NgbTimepicker]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbTimepicker]; } }); })();\n\n/**\r\n * Configuration service for the NgbToast component. You can inject this service, typically in your root component,\r\n * and customize the values of its properties in order to provide default values for all the toasts used in the\r\n * application.\r\n *\r\n * @since 5.0.0\r\n */\r\nclass NgbToastConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.autohide = true;\r\n this.delay = 500;\r\n this.ariaLive = 'polite';\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbToastConfig.ɵfac = function NgbToastConfig_Factory(t) { return new (t || NgbToastConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbToastConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbToastConfig_Factory() { return new NgbToastConfig(ɵɵinject(NgbConfig)); }, token: NgbToastConfig, providedIn: \"root\" });\r\nNgbToastConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToastConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nconst ngbToastFadeInTransition = (element, animation) => {\r\n const { classList } = element;\r\n if (!animation) {\r\n classList.add('show');\r\n return;\r\n }\r\n classList.remove('hide');\r\n reflow(element);\r\n classList.add('showing');\r\n return () => {\r\n classList.remove('showing');\r\n classList.add('show');\r\n };\r\n};\r\nconst ngbToastFadeOutTransition = ({ classList }) => {\r\n classList.remove('show');\r\n return () => { classList.add('hide'); };\r\n};\n\n/**\r\n * This directive allows the usage of HTML markup or other directives\r\n * inside of the toast's header.\r\n *\r\n * @since 5.0.0\r\n */\r\nclass NgbToastHeader {\r\n}\nNgbToastHeader.ɵfac = function NgbToastHeader_Factory(t) { return new (t || NgbToastHeader)(); };\nNgbToastHeader.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbToastHeader, selectors: [[\"\", \"ngbToastHeader\", \"\"]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToastHeader, [{\n type: Directive,\n args: [{ selector: '[ngbToastHeader]' }]\n }], null, null); })();\r\n/**\r\n * Toasts provide feedback messages as notifications to the user.\r\n * Goal is to mimic the push notifications available both on mobile and desktop operating systems.\r\n *\r\n * @since 5.0.0\r\n */\r\nclass NgbToast {\r\n constructor(ariaLive, config, _zone, _element) {\r\n this.ariaLive = ariaLive;\r\n this._zone = _zone;\r\n this._element = _element;\r\n /**\r\n * A template like `` can be\r\n * used in the projected content to allow markup usage.\r\n */\r\n this.contentHeaderTpl = null;\r\n /**\r\n * An event fired after the animation triggered by calling `.show()` method has finished.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event fired after the animation triggered by calling `.hide()` method has finished.\r\n *\r\n * It can only occur in 2 different scenarios:\r\n * - `autohide` timeout fires\r\n * - user clicks on a closing cross\r\n *\r\n * Additionally this output is purely informative. The toast won't be removed from DOM automatically, it's up\r\n * to the user to take care of that.\r\n *\r\n * @since 8.0.0\r\n */\r\n this.hidden = new EventEmitter();\r\n if (this.ariaLive == null) {\r\n this.ariaLive = config.ariaLive;\r\n }\r\n this.delay = config.delay;\r\n this.autohide = config.autohide;\r\n this.animation = config.animation;\r\n }\r\n ngAfterContentInit() {\r\n this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\r\n this._init();\r\n this.show();\r\n });\r\n }\r\n ngOnChanges(changes) {\r\n if ('autohide' in changes) {\r\n this._clearTimeout();\r\n this._init();\r\n }\r\n }\r\n /**\r\n * Triggers toast closing programmatically.\r\n *\r\n * The returned observable will emit and be completed once the closing transition has finished.\r\n * If the animations are turned off this happens synchronously.\r\n *\r\n * Alternatively you could listen or subscribe to the `(hidden)` output\r\n *\r\n * @since 8.0.0\r\n */\r\n hide() {\r\n this._clearTimeout();\r\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeOutTransition, { animation: this.animation, runningTransition: 'stop' });\r\n transition.subscribe(() => { this.hidden.emit(); });\r\n return transition;\r\n }\r\n /**\r\n * Triggers toast opening programmatically.\r\n *\r\n * The returned observable will emit and be completed once the opening transition has finished.\r\n * If the animations are turned off this happens synchronously.\r\n *\r\n * Alternatively you could listen or subscribe to the `(shown)` output\r\n *\r\n * @since 8.0.0\r\n */\r\n show() {\r\n const transition = ngbRunTransition(this._zone, this._element.nativeElement, ngbToastFadeInTransition, {\r\n animation: this.animation,\r\n runningTransition: 'continue',\r\n });\r\n transition.subscribe(() => { this.shown.emit(); });\r\n return transition;\r\n }\r\n _init() {\r\n if (this.autohide && !this._timeoutID) {\r\n this._timeoutID = setTimeout(() => this.hide(), this.delay);\r\n }\r\n }\r\n _clearTimeout() {\r\n if (this._timeoutID) {\r\n clearTimeout(this._timeoutID);\r\n this._timeoutID = null;\r\n }\r\n }\r\n}\nNgbToast.ɵfac = function NgbToast_Factory(t) { return new (t || NgbToast)(ɵngcc0.ɵɵinjectAttribute('aria-live'), ɵngcc0.ɵɵdirectiveInject(NgbToastConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgbToast.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbToast, selectors: [[\"ngb-toast\"]], contentQueries: function NgbToast_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgbToastHeader, 7, TemplateRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentHeaderTpl = _t.first);\n } }, hostAttrs: [\"role\", \"alert\", \"aria-atomic\", \"true\", 1, \"toast\"], hostVars: 3, hostBindings: function NgbToast_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵattribute(\"aria-live\", ctx.ariaLive);\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n } }, inputs: { delay: \"delay\", autohide: \"autohide\", animation: \"animation\", header: \"header\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbToast\"], features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c3, decls: 5, vars: 1, consts: function () { let i18n_85; if (typeof ngI18nClosureMode !== \"undefined\" && ngI18nClosureMode) {\n /**\n * @suppress {msgDescriptions}\n */\n const MSG_EXTERNAL_ngb_toast_close_aria$$FESM2015_NG_BOOTSTRAP_JS__86 = goog.getMsg(\"Close\");\n i18n_85 = MSG_EXTERNAL_ngb_toast_close_aria$$FESM2015_NG_BOOTSTRAP_JS__86;\n }\n else {\n i18n_85 = $localize `:@@ngb.toast.close-aria␟f4e529ae5ffd73001d1ff4bbdeeb0a72e342e5c8␟7819314041543176992:Close`;\n } return [[\"headerTpl\", \"\"], [3, \"ngIf\"], [1, \"toast-body\"], [1, \"mr-auto\"], [1, \"toast-header\"], [3, \"ngTemplateOutlet\"], [\"type\", \"button\", \"aria-label\", i18n_85, 1, \"close\", 3, \"click\"], [\"aria-hidden\", \"true\"]]; }, template: function NgbToast_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, NgbToast_ng_template_0_Template, 2, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbToast_ng_template_2_Template, 5, 1, \"ng-template\", 1);\n ɵngcc0.ɵɵelementStart(3, \"div\", 2);\n ɵngcc0.ɵɵprojection(4);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.contentHeaderTpl || ctx.header);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], styles: [\".ngb-toasts{margin:.5em;position:fixed;right:0;top:0;z-index:1200}ngb-toast{display:block}ngb-toast .toast-header .close{margin-bottom:.25rem;margin-left:auto}\"], encapsulation: 2 });\r\nNgbToast.ctorParameters = () => [\r\n { type: String, decorators: [{ type: Attribute, args: ['aria-live',] }] },\r\n { type: NgbToastConfig },\r\n { type: NgZone },\r\n { type: ElementRef }\r\n];\r\nNgbToast.propDecorators = {\r\n animation: [{ type: Input }],\r\n delay: [{ type: Input }],\r\n autohide: [{ type: Input }],\r\n header: [{ type: Input }],\r\n contentHeaderTpl: [{ type: ContentChild, args: [NgbToastHeader, { read: TemplateRef, static: true },] }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToast, [{\n type: Component,\n args: [{\n selector: 'ngb-toast',\n exportAs: 'ngbToast',\n encapsulation: ViewEncapsulation.None,\n host: {\n 'role': 'alert',\n '[attr.aria-live]': 'ariaLive',\n 'aria-atomic': 'true',\n 'class': 'toast',\n '[class.fade]': 'animation'\n },\n template: `\r\n \r\n {{header}}\r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n `,\n styles: [\".ngb-toasts{margin:.5em;position:fixed;right:0;top:0;z-index:1200}ngb-toast{display:block}ngb-toast .toast-header .close{margin-bottom:.25rem;margin-left:auto}\"]\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['aria-live']\n }] }, { type: NgbToastConfig }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ElementRef }]; }, { contentHeaderTpl: [{\n type: ContentChild,\n args: [NgbToastHeader, { read: TemplateRef, static: true }]\n }], shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], delay: [{\n type: Input\n }], autohide: [{\n type: Input\n }], animation: [{\n type: Input\n }], header: [{\n type: Input\n }] }); })();\n\nclass NgbToastModule {\r\n}\nNgbToastModule.ɵfac = function NgbToastModule_Factory(t) { return new (t || NgbToastModule)(); };\nNgbToastModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbToastModule });\nNgbToastModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbToastModule, [{\n type: NgModule,\n args: [{ declarations: [NgbToast, NgbToastHeader], imports: [CommonModule], exports: [NgbToast, NgbToastHeader] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbToastModule, { declarations: function () { return [NgbToast, NgbToastHeader]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbToast, NgbToastHeader]; } }); })();\n\n/**\r\n * A configuration service for the [`NgbTooltip`](#/components/tooltip/api#NgbTooltip) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the tooltips used in the application.\r\n */\r\nclass NgbTooltipConfig {\r\n constructor(_ngbConfig) {\r\n this._ngbConfig = _ngbConfig;\r\n this.autoClose = true;\r\n this.placement = 'auto';\r\n this.triggers = 'hover focus';\r\n this.disableTooltip = false;\r\n this.openDelay = 0;\r\n this.closeDelay = 0;\r\n }\r\n get animation() { return (this._animation === undefined) ? this._ngbConfig.animation : this._animation; }\r\n set animation(animation) { this._animation = animation; }\r\n}\nNgbTooltipConfig.ɵfac = function NgbTooltipConfig_Factory(t) { return new (t || NgbTooltipConfig)(ɵngcc0.ɵɵinject(NgbConfig)); };\r\nNgbTooltipConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbTooltipConfig_Factory() { return new NgbTooltipConfig(ɵɵinject(NgbConfig)); }, token: NgbTooltipConfig, providedIn: \"root\" });\r\nNgbTooltipConfig.ctorParameters = () => [\r\n { type: NgbConfig }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: NgbConfig }]; }, null); })();\n\nlet nextId$4 = 0;\r\nclass NgbTooltipWindow {\r\n}\nNgbTooltipWindow.ɵfac = function NgbTooltipWindow_Factory(t) { return new (t || NgbTooltipWindow)(); };\nNgbTooltipWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbTooltipWindow, selectors: [[\"ngb-tooltip-window\"]], hostAttrs: [\"role\", \"tooltip\"], hostVars: 5, hostBindings: function NgbTooltipWindow_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n ɵngcc0.ɵɵclassMap(\"tooltip\" + (ctx.tooltipClass ? \" \" + ctx.tooltipClass : \"\"));\n ɵngcc0.ɵɵclassProp(\"fade\", ctx.animation);\n } }, inputs: { animation: \"animation\", id: \"id\", tooltipClass: \"tooltipClass\" }, ngContentSelectors: _c3, decls: 3, vars: 0, consts: [[1, \"arrow\"], [1, \"tooltip-inner\"]], template: function NgbTooltipWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelement(0, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵprojection(2);\n ɵngcc0.ɵɵelementEnd();\n } }, styles: [\"ngb-tooltip-window{pointer-events:none}ngb-tooltip-window .tooltip-inner{pointer-events:auto}ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{bottom:.4rem;top:auto}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbTooltipWindow.propDecorators = {\r\n animation: [{ type: Input }],\r\n id: [{ type: Input }],\r\n tooltipClass: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-tooltip-window',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': '\"tooltip\" + (tooltipClass ? \" \" + tooltipClass : \"\")',\n '[class.fade]': 'animation',\n 'role': 'tooltip',\n '[id]': 'id'\n },\n template: `
    `,\n styles: [\"ngb-tooltip-window{pointer-events:none}ngb-tooltip-window .tooltip-inner{pointer-events:auto}ngb-tooltip-window.bs-tooltip-bottom .arrow,ngb-tooltip-window.bs-tooltip-top .arrow{left:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-bottom-left .arrow,ngb-tooltip-window.bs-tooltip-top-left .arrow{left:1em}ngb-tooltip-window.bs-tooltip-bottom-right .arrow,ngb-tooltip-window.bs-tooltip-top-right .arrow{left:auto;right:.8rem}ngb-tooltip-window.bs-tooltip-left .arrow,ngb-tooltip-window.bs-tooltip-right .arrow{top:calc(50% - .4rem)}ngb-tooltip-window.bs-tooltip-left-top .arrow,ngb-tooltip-window.bs-tooltip-right-top .arrow{top:.4rem}ngb-tooltip-window.bs-tooltip-left-bottom .arrow,ngb-tooltip-window.bs-tooltip-right-bottom .arrow{bottom:.4rem;top:auto}\"]\n }]\n }], null, { animation: [{\n type: Input\n }], id: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }] }); })();\r\n/**\r\n * A lightweight and extensible directive for fancy tooltip creation.\r\n */\r\nclass NgbTooltip {\r\n constructor(_elementRef, _renderer, injector, componentFactoryResolver, viewContainerRef, config, _ngZone, _document, _changeDetector, applicationRef) {\r\n this._elementRef = _elementRef;\r\n this._renderer = _renderer;\r\n this._ngZone = _ngZone;\r\n this._document = _document;\r\n this._changeDetector = _changeDetector;\r\n /**\r\n * An event emitted when the tooltip opening animation has finished. Contains no payload.\r\n */\r\n this.shown = new EventEmitter();\r\n /**\r\n * An event emitted when the tooltip closing animation has finished. Contains no payload.\r\n */\r\n this.hidden = new EventEmitter();\r\n this._ngbTooltipWindowId = `ngb-tooltip-${nextId$4++}`;\r\n this._windowRef = null;\r\n this.animation = config.animation;\r\n this.autoClose = config.autoClose;\r\n this.placement = config.placement;\r\n this.triggers = config.triggers;\r\n this.container = config.container;\r\n this.disableTooltip = config.disableTooltip;\r\n this.tooltipClass = config.tooltipClass;\r\n this.openDelay = config.openDelay;\r\n this.closeDelay = config.closeDelay;\r\n this._popupService = new PopupService(NgbTooltipWindow, injector, viewContainerRef, _renderer, this._ngZone, componentFactoryResolver, applicationRef);\r\n this._zoneSubscription = _ngZone.onStable.subscribe(() => {\r\n if (this._windowRef) {\r\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body', 'bs-tooltip');\r\n }\r\n });\r\n }\r\n /**\r\n * The string content or a `TemplateRef` for the content to be displayed in the tooltip.\r\n *\r\n * If the content if falsy, the tooltip won't open.\r\n */\r\n set ngbTooltip(value) {\r\n this._ngbTooltip = value;\r\n if (!value && this._windowRef) {\r\n this.close();\r\n }\r\n }\r\n get ngbTooltip() { return this._ngbTooltip; }\r\n /**\r\n * Opens the tooltip.\r\n *\r\n * This is considered to be a \"manual\" triggering.\r\n * The `context` is an optional value to be injected into the tooltip template when it is created.\r\n */\r\n open(context) {\r\n if (!this._windowRef && this._ngbTooltip && !this.disableTooltip) {\r\n const { windowRef, transition$ } = this._popupService.open(this._ngbTooltip, context, this.animation);\r\n this._windowRef = windowRef;\r\n this._windowRef.instance.animation = this.animation;\r\n this._windowRef.instance.tooltipClass = this.tooltipClass;\r\n this._windowRef.instance.id = this._ngbTooltipWindowId;\r\n this._renderer.setAttribute(this._elementRef.nativeElement, 'aria-describedby', this._ngbTooltipWindowId);\r\n if (this.container === 'body') {\r\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\r\n }\r\n // We need to detect changes, because we don't know where .open() might be called from.\r\n // Ex. opening tooltip from one of lifecycle hooks that run after the CD\r\n // (say from ngAfterViewInit) will result in 'ExpressionHasChanged' exception\r\n this._windowRef.changeDetectorRef.detectChanges();\r\n // We need to mark for check, because tooltip won't work inside the OnPush component.\r\n // Ex. when we use expression like `{{ tooltip.isOpen() : 'opened' : 'closed' }}`\r\n // inside the template of an OnPush component and we change the tooltip from\r\n // open -> closed, the expression in question won't be updated unless we explicitly\r\n // mark the parent component to be checked.\r\n this._windowRef.changeDetectorRef.markForCheck();\r\n ngbAutoClose(this._ngZone, this._document, this.autoClose, () => this.close(), this.hidden, [this._windowRef.location.nativeElement]);\r\n transition$.subscribe(() => this.shown.emit());\r\n }\r\n }\r\n /**\r\n * Closes the tooltip.\r\n *\r\n * This is considered to be a \"manual\" triggering of the tooltip.\r\n */\r\n close() {\r\n if (this._windowRef != null) {\r\n this._renderer.removeAttribute(this._elementRef.nativeElement, 'aria-describedby');\r\n this._popupService.close(this.animation).subscribe(() => {\r\n this._windowRef = null;\r\n this.hidden.emit();\r\n this._changeDetector.markForCheck();\r\n });\r\n }\r\n }\r\n /**\r\n * Toggles the tooltip.\r\n *\r\n * This is considered to be a \"manual\" triggering of the tooltip.\r\n */\r\n toggle() {\r\n if (this._windowRef) {\r\n this.close();\r\n }\r\n else {\r\n this.open();\r\n }\r\n }\r\n /**\r\n * Returns `true`, if the popover is currently shown.\r\n */\r\n isOpen() { return this._windowRef != null; }\r\n ngOnInit() {\r\n this._unregisterListenersFn = listenToTriggers(this._renderer, this._elementRef.nativeElement, this.triggers, this.isOpen.bind(this), this.open.bind(this), this.close.bind(this), +this.openDelay, +this.closeDelay);\r\n }\r\n ngOnChanges({ tooltipClass }) {\r\n if (tooltipClass && this.isOpen()) {\r\n this._windowRef.instance.tooltipClass = tooltipClass.currentValue;\r\n }\r\n }\r\n ngOnDestroy() {\r\n this.close();\r\n // This check is needed as it might happen that ngOnDestroy is called before ngOnInit\r\n // under certain conditions, see: https://github.com/ng-bootstrap/ng-bootstrap/issues/2199\r\n if (this._unregisterListenersFn) {\r\n this._unregisterListenersFn();\r\n }\r\n this._zoneSubscription.unsubscribe();\r\n }\r\n}\nNgbTooltip.ɵfac = function NgbTooltip_Factory(t) { return new (t || NgbTooltip)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(NgbTooltipConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbTooltip.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbTooltip, selectors: [[\"\", \"ngbTooltip\", \"\"]], inputs: { animation: \"animation\", autoClose: \"autoClose\", placement: \"placement\", triggers: \"triggers\", container: \"container\", disableTooltip: \"disableTooltip\", tooltipClass: \"tooltipClass\", openDelay: \"openDelay\", closeDelay: \"closeDelay\", ngbTooltip: \"ngbTooltip\" }, outputs: { shown: \"shown\", hidden: \"hidden\" }, exportAs: [\"ngbTooltip\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\r\nNgbTooltip.ctorParameters = () => [\r\n { type: ElementRef },\r\n { type: Renderer2 },\r\n { type: Injector },\r\n { type: ComponentFactoryResolver },\r\n { type: ViewContainerRef },\r\n { type: NgbTooltipConfig },\r\n { type: NgZone },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: ChangeDetectorRef },\r\n { type: ApplicationRef }\r\n];\r\nNgbTooltip.propDecorators = {\r\n animation: [{ type: Input }],\r\n autoClose: [{ type: Input }],\r\n placement: [{ type: Input }],\r\n triggers: [{ type: Input }],\r\n container: [{ type: Input }],\r\n disableTooltip: [{ type: Input }],\r\n tooltipClass: [{ type: Input }],\r\n openDelay: [{ type: Input }],\r\n closeDelay: [{ type: Input }],\r\n shown: [{ type: Output }],\r\n hidden: [{ type: Output }],\r\n ngbTooltip: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltip, [{\n type: Directive,\n args: [{ selector: '[ngbTooltip]', exportAs: 'ngbTooltip' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ViewContainerRef }, { type: NgbTooltipConfig }, { type: ɵngcc0.NgZone }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { shown: [{\n type: Output\n }], hidden: [{\n type: Output\n }], animation: [{\n type: Input\n }], autoClose: [{\n type: Input\n }], placement: [{\n type: Input\n }], triggers: [{\n type: Input\n }], container: [{\n type: Input\n }], disableTooltip: [{\n type: Input\n }], tooltipClass: [{\n type: Input\n }], openDelay: [{\n type: Input\n }], closeDelay: [{\n type: Input\n }], ngbTooltip: [{\n type: Input\n }] }); })();\n\nclass NgbTooltipModule {\r\n}\nNgbTooltipModule.ɵfac = function NgbTooltipModule_Factory(t) { return new (t || NgbTooltipModule)(); };\nNgbTooltipModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbTooltipModule });\nNgbTooltipModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTooltipModule, [{\n type: NgModule,\n args: [{ declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip], entryComponents: [NgbTooltipWindow] }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTooltipModule, { declarations: [NgbTooltip, NgbTooltipWindow], exports: [NgbTooltip] }); })();\n\n/**\r\n * A component that helps with text highlighting.\r\n *\r\n * If splits the `result` text into parts that contain the searched `term` and generates the HTML markup to simplify\r\n * highlighting:\r\n *\r\n * Ex. `result=\"Alaska\"` and `term=\"as\"` will produce `Alaska`.\r\n */\r\nclass NgbHighlight {\r\n constructor() {\r\n /**\r\n * The CSS class for `` elements wrapping the `term` inside the `result`.\r\n */\r\n this.highlightClass = 'ngb-highlight';\r\n /**\r\n * Boolean option to determine if the highlighting should be sensitive to accents or not.\r\n *\r\n * This feature is only available for browsers that implement the `String.normalize` function\r\n * (typically not Internet Explorer).\r\n * If you want to use this feature in a browser that does not implement `String.normalize`,\r\n * you will have to include a polyfill in your application (`unorm` for example).\r\n *\r\n * @since 9.1.0\r\n */\r\n this.accentSensitive = true;\r\n }\r\n ngOnChanges(changes) {\r\n if (!this.accentSensitive && !String.prototype.normalize) {\r\n console.warn('The `accentSensitive` input in `ngb-highlight` cannot be set to `false` in a browser ' +\r\n 'that does not implement the `String.normalize` function. ' +\r\n 'You will have to include a polyfill in your application to use this feature in the current browser.');\r\n this.accentSensitive = true;\r\n }\r\n const result = toString(this.result);\r\n const terms = Array.isArray(this.term) ? this.term : [this.term];\r\n const prepareTerm = term => this.accentSensitive ? term : removeAccents(term);\r\n const escapedTerms = terms.map(term => regExpEscape(prepareTerm(toString(term)))).filter(term => term);\r\n const toSplit = this.accentSensitive ? result : removeAccents(result);\r\n const parts = escapedTerms.length ? toSplit.split(new RegExp(`(${escapedTerms.join('|')})`, 'gmi')) : [result];\r\n if (this.accentSensitive) {\r\n this.parts = parts;\r\n }\r\n else {\r\n let offset = 0;\r\n this.parts = parts.map(part => result.substring(offset, offset += part.length));\r\n }\r\n }\r\n}\nNgbHighlight.ɵfac = function NgbHighlight_Factory(t) { return new (t || NgbHighlight)(); };\nNgbHighlight.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbHighlight, selectors: [[\"ngb-highlight\"]], inputs: { highlightClass: \"highlightClass\", accentSensitive: \"accentSensitive\", result: \"result\", term: \"term\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[\"ngFor\", \"\", 3, \"ngForOf\"], [3, \"class\", 4, \"ngIf\", \"ngIfElse\"], [\"even\", \"\"]], template: function NgbHighlight_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbHighlight_ng_template_0_Template, 3, 2, \"ng-template\", 0);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.parts);\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgIf], styles: [\".ngb-highlight{font-weight:700}\"], encapsulation: 2, changeDetection: 0 });\r\nNgbHighlight.propDecorators = {\r\n highlightClass: [{ type: Input }],\r\n result: [{ type: Input }],\r\n term: [{ type: Input }],\r\n accentSensitive: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbHighlight, [{\n type: Component,\n args: [{\n selector: 'ngb-highlight',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n template: `` +\n `{{part}}{{part}}` +\n ``,\n styles: [\".ngb-highlight{font-weight:700}\"]\n }]\n }], function () { return []; }, { highlightClass: [{\n type: Input\n }], accentSensitive: [{\n type: Input\n }], result: [{\n type: Input\n }], term: [{\n type: Input\n }] }); })();\n\nclass NgbTypeaheadWindow {\r\n constructor() {\r\n this.activeIdx = 0;\r\n /**\r\n * Flag indicating if the first row should be active initially\r\n */\r\n this.focusFirst = true;\r\n /**\r\n * A function used to format a given result before display. This function should return a formatted string without any\r\n * HTML markup\r\n */\r\n this.formatter = toString;\r\n /**\r\n * Event raised when user selects a particular result row\r\n */\r\n this.selectEvent = new EventEmitter();\r\n this.activeChangeEvent = new EventEmitter();\r\n }\r\n hasActive() { return this.activeIdx > -1 && this.activeIdx < this.results.length; }\r\n getActive() { return this.results[this.activeIdx]; }\r\n markActive(activeIdx) {\r\n this.activeIdx = activeIdx;\r\n this._activeChanged();\r\n }\r\n next() {\r\n if (this.activeIdx === this.results.length - 1) {\r\n this.activeIdx = this.focusFirst ? (this.activeIdx + 1) % this.results.length : -1;\r\n }\r\n else {\r\n this.activeIdx++;\r\n }\r\n this._activeChanged();\r\n }\r\n prev() {\r\n if (this.activeIdx < 0) {\r\n this.activeIdx = this.results.length - 1;\r\n }\r\n else if (this.activeIdx === 0) {\r\n this.activeIdx = this.focusFirst ? this.results.length - 1 : -1;\r\n }\r\n else {\r\n this.activeIdx--;\r\n }\r\n this._activeChanged();\r\n }\r\n resetActive() {\r\n this.activeIdx = this.focusFirst ? 0 : -1;\r\n this._activeChanged();\r\n }\r\n select(item) { this.selectEvent.emit(item); }\r\n ngOnInit() { this.resetActive(); }\r\n _activeChanged() {\r\n this.activeChangeEvent.emit(this.activeIdx >= 0 ? this.id + '-' + this.activeIdx : undefined);\r\n }\r\n}\nNgbTypeaheadWindow.ɵfac = function NgbTypeaheadWindow_Factory(t) { return new (t || NgbTypeaheadWindow)(); };\nNgbTypeaheadWindow.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgbTypeaheadWindow, selectors: [[\"ngb-typeahead-window\"]], hostAttrs: [\"role\", \"listbox\"], hostVars: 3, hostBindings: function NgbTypeaheadWindow_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mousedown\", function NgbTypeaheadWindow_mousedown_HostBindingHandler($event) { return $event.preventDefault(); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"id\", ctx.id);\n ɵngcc0.ɵɵclassMap(\"dropdown-menu show\" + (ctx.popupClass ? \" \" + ctx.popupClass : \"\"));\n } }, inputs: { focusFirst: \"focusFirst\", formatter: \"formatter\", id: \"id\", results: \"results\", term: \"term\", resultTemplate: \"resultTemplate\", popupClass: \"popupClass\" }, outputs: { selectEvent: \"select\", activeChangeEvent: \"activeChange\" }, exportAs: [\"ngbTypeaheadWindow\"], decls: 3, vars: 1, consts: [[\"rt\", \"\"], [\"ngFor\", \"\", 3, \"ngForOf\"], [3, \"result\", \"term\"], [\"type\", \"button\", \"role\", \"option\", 1, \"dropdown-item\", 3, \"id\", \"mouseenter\", \"click\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"]], template: function NgbTypeaheadWindow_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgbTypeaheadWindow_ng_template_0_Template, 1, 2, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, NgbTypeaheadWindow_ng_template_2_Template, 2, 9, \"ng-template\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.results);\n } }, directives: [NgbHighlight, ɵngcc1.NgForOf, ɵngcc1.NgTemplateOutlet], encapsulation: 2 });\r\nNgbTypeaheadWindow.propDecorators = {\r\n id: [{ type: Input }],\r\n focusFirst: [{ type: Input }],\r\n results: [{ type: Input }],\r\n term: [{ type: Input }],\r\n formatter: [{ type: Input }],\r\n resultTemplate: [{ type: Input }],\r\n popupClass: [{ type: Input }],\r\n selectEvent: [{ type: Output, args: ['select',] }],\r\n activeChangeEvent: [{ type: Output, args: ['activeChange',] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadWindow, [{\n type: Component,\n args: [{\n selector: 'ngb-typeahead-window',\n exportAs: 'ngbTypeaheadWindow',\n encapsulation: ViewEncapsulation.None,\n host: {\n '(mousedown)': '$event.preventDefault()',\n '[class]': '\"dropdown-menu show\" + (popupClass ? \" \" + popupClass : \"\")',\n 'role': 'listbox',\n '[id]': 'id'\n },\n template: `\r\n \r\n \r\n \r\n \r\n \r\n \r\n `\n }]\n }], function () { return []; }, { focusFirst: [{\n type: Input\n }], formatter: [{\n type: Input\n }], selectEvent: [{\n type: Output,\n args: ['select']\n }], activeChangeEvent: [{\n type: Output,\n args: ['activeChange']\n }], id: [{\n type: Input\n }], results: [{\n type: Input\n }], term: [{\n type: Input\n }], resultTemplate: [{\n type: Input\n }], popupClass: [{\n type: Input\n }] }); })();\n\nconst ARIA_LIVE_DELAY = new InjectionToken('live announcer delay', { providedIn: 'root', factory: ARIA_LIVE_DELAY_FACTORY });\r\nfunction ARIA_LIVE_DELAY_FACTORY() {\r\n return 100;\r\n}\r\nfunction getLiveElement(document, lazyCreate = false) {\r\n let element = document.body.querySelector('#ngb-live');\r\n if (element == null && lazyCreate) {\r\n element = document.createElement('div');\r\n element.setAttribute('id', 'ngb-live');\r\n element.setAttribute('aria-live', 'polite');\r\n element.setAttribute('aria-atomic', 'true');\r\n element.classList.add('sr-only');\r\n document.body.appendChild(element);\r\n }\r\n return element;\r\n}\r\nclass Live {\r\n constructor(_document, _delay) {\r\n this._document = _document;\r\n this._delay = _delay;\r\n }\r\n ngOnDestroy() {\r\n const element = getLiveElement(this._document);\r\n if (element) {\r\n // if exists, it will always be attached to the \r\n element.parentElement.removeChild(element);\r\n }\r\n }\r\n say(message) {\r\n const element = getLiveElement(this._document, true);\r\n const delay = this._delay;\r\n if (element != null) {\r\n element.textContent = '';\r\n const setText = () => element.textContent = message;\r\n if (delay === null) {\r\n setText();\r\n }\r\n else {\r\n setTimeout(setText, delay);\r\n }\r\n }\r\n }\r\n}\nLive.ɵfac = function Live_Factory(t) { return new (t || Live)(ɵngcc0.ɵɵinject(DOCUMENT), ɵngcc0.ɵɵinject(ARIA_LIVE_DELAY)); };\r\nLive.ɵprov = ɵɵdefineInjectable({ factory: function Live_Factory() { return new Live(ɵɵinject(DOCUMENT), ɵɵinject(ARIA_LIVE_DELAY)); }, token: Live, providedIn: \"root\" });\r\nLive.ctorParameters = () => [\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: undefined, decorators: [{ type: Inject, args: [ARIA_LIVE_DELAY,] }] }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(Live, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [ARIA_LIVE_DELAY]\n }] }]; }, null); })();\n\n/**\r\n * A configuration service for the [`NgbTypeahead`](#/components/typeahead/api#NgbTypeahead) component.\r\n *\r\n * You can inject this service, typically in your root component, and customize the values of its properties in\r\n * order to provide default values for all the typeaheads used in the application.\r\n */\r\nclass NgbTypeaheadConfig {\r\n constructor() {\r\n this.editable = true;\r\n this.focusFirst = true;\r\n this.showHint = false;\r\n this.placement = ['bottom-left', 'bottom-right', 'top-left', 'top-right'];\r\n }\r\n}\nNgbTypeaheadConfig.ɵfac = function NgbTypeaheadConfig_Factory(t) { return new (t || NgbTypeaheadConfig)(); };\r\nNgbTypeaheadConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgbTypeaheadConfig_Factory() { return new NgbTypeaheadConfig(); }, token: NgbTypeaheadConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nlet nextWindowId = 0;\r\n/**\r\n * A directive providing a simple way of creating powerful typeaheads from any text input.\r\n */\r\nclass NgbTypeahead {\r\n constructor(_elementRef, viewContainerRef, _renderer, injector, componentFactoryResolver, config, ngZone, _live, _document, _ngZone, _changeDetector, applicationRef) {\r\n this._elementRef = _elementRef;\r\n this._renderer = _renderer;\r\n this._live = _live;\r\n this._document = _document;\r\n this._ngZone = _ngZone;\r\n this._changeDetector = _changeDetector;\r\n this._subscription = null;\r\n this._closed$ = new Subject();\r\n this._inputValueBackup = null;\r\n this._windowRef = null;\r\n /**\r\n * The value for the `autocomplete` attribute for the `` element.\r\n *\r\n * Defaults to `\"off\"` to disable the native browser autocomplete, but you can override it if necessary.\r\n *\r\n * @since 2.1.0\r\n */\r\n this.autocomplete = 'off';\r\n /**\r\n * The preferred placement of the typeahead.\r\n *\r\n * Possible values are `\"top\"`, `\"top-left\"`, `\"top-right\"`, `\"bottom\"`, `\"bottom-left\"`,\r\n * `\"bottom-right\"`, `\"left\"`, `\"left-top\"`, `\"left-bottom\"`, `\"right\"`, `\"right-top\"`,\r\n * `\"right-bottom\"`\r\n *\r\n * Accepts an array of strings or a string with space separated possible values.\r\n *\r\n * The default order of preference is `\"bottom-left bottom-right top-left top-right\"`\r\n *\r\n * Please see the [positioning overview](#/positioning) for more details.\r\n */\r\n this.placement = 'bottom-left';\r\n /**\r\n * An event emitted right before an item is selected from the result list.\r\n *\r\n * Event payload is of type [`NgbTypeaheadSelectItemEvent`](#/components/typeahead/api#NgbTypeaheadSelectItemEvent).\r\n */\r\n this.selectItem = new EventEmitter();\r\n this.activeDescendant = null;\r\n this.popupId = `ngb-typeahead-${nextWindowId++}`;\r\n this._onTouched = () => { };\r\n this._onChange = (_) => { };\r\n this.container = config.container;\r\n this.editable = config.editable;\r\n this.focusFirst = config.focusFirst;\r\n this.showHint = config.showHint;\r\n this.placement = config.placement;\r\n this._valueChanges = fromEvent(_elementRef.nativeElement, 'input')\r\n .pipe(map($event => $event.target.value));\r\n this._resubscribeTypeahead = new BehaviorSubject(null);\r\n this._popupService = new PopupService(NgbTypeaheadWindow, injector, viewContainerRef, _renderer, this._ngZone, componentFactoryResolver, applicationRef);\r\n this._zoneSubscription = ngZone.onStable.subscribe(() => {\r\n if (this.isPopupOpen()) {\r\n positionElements(this._elementRef.nativeElement, this._windowRef.location.nativeElement, this.placement, this.container === 'body');\r\n }\r\n });\r\n }\r\n ngOnInit() { this._subscribeToUserInput(); }\r\n ngOnChanges({ ngbTypeahead }) {\r\n if (ngbTypeahead && !ngbTypeahead.firstChange) {\r\n this._unsubscribeFromUserInput();\r\n this._subscribeToUserInput();\r\n }\r\n }\r\n ngOnDestroy() {\r\n this._closePopup();\r\n this._unsubscribeFromUserInput();\r\n this._zoneSubscription.unsubscribe();\r\n }\r\n registerOnChange(fn) { this._onChange = fn; }\r\n registerOnTouched(fn) { this._onTouched = fn; }\r\n writeValue(value) {\r\n this._writeInputValue(this._formatItemForInput(value));\r\n if (this.showHint) {\r\n this._inputValueBackup = value;\r\n }\r\n }\r\n setDisabledState(isDisabled) {\r\n this._renderer.setProperty(this._elementRef.nativeElement, 'disabled', isDisabled);\r\n }\r\n /**\r\n * Dismisses typeahead popup window\r\n */\r\n dismissPopup() {\r\n if (this.isPopupOpen()) {\r\n this._resubscribeTypeahead.next(null);\r\n this._closePopup();\r\n if (this.showHint && this._inputValueBackup !== null) {\r\n this._writeInputValue(this._inputValueBackup);\r\n }\r\n this._changeDetector.markForCheck();\r\n }\r\n }\r\n /**\r\n * Returns true if the typeahead popup window is displayed\r\n */\r\n isPopupOpen() { return this._windowRef != null; }\r\n handleBlur() {\r\n this._resubscribeTypeahead.next(null);\r\n this._onTouched();\r\n }\r\n handleKeyDown(event) {\r\n if (!this.isPopupOpen()) {\r\n return;\r\n }\r\n // tslint:disable-next-line:deprecation\r\n switch (event.which) {\r\n case Key.ArrowDown:\r\n event.preventDefault();\r\n this._windowRef.instance.next();\r\n this._showHint();\r\n break;\r\n case Key.ArrowUp:\r\n event.preventDefault();\r\n this._windowRef.instance.prev();\r\n this._showHint();\r\n break;\r\n case Key.Enter:\r\n case Key.Tab:\r\n const result = this._windowRef.instance.getActive();\r\n if (isDefined(result)) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this._selectResult(result);\r\n }\r\n this._closePopup();\r\n break;\r\n }\r\n }\r\n _openPopup() {\r\n if (!this.isPopupOpen()) {\r\n this._inputValueBackup = this._elementRef.nativeElement.value;\r\n const { windowRef } = this._popupService.open();\r\n this._windowRef = windowRef;\r\n this._windowRef.instance.id = this.popupId;\r\n this._windowRef.instance.selectEvent.subscribe((result) => this._selectResultClosePopup(result));\r\n this._windowRef.instance.activeChangeEvent.subscribe((activeId) => this.activeDescendant = activeId);\r\n this._windowRef.instance.popupClass = this.popupClass;\r\n if (this.container === 'body') {\r\n this._document.querySelector(this.container).appendChild(this._windowRef.location.nativeElement);\r\n }\r\n this._changeDetector.markForCheck();\r\n ngbAutoClose(this._ngZone, this._document, 'outside', () => this.dismissPopup(), this._closed$, [this._elementRef.nativeElement, this._windowRef.location.nativeElement]);\r\n }\r\n }\r\n _closePopup() {\r\n this._popupService.close().subscribe(() => {\r\n this._closed$.next();\r\n this._windowRef = null;\r\n this.activeDescendant = null;\r\n });\r\n }\r\n _selectResult(result) {\r\n let defaultPrevented = false;\r\n this.selectItem.emit({ item: result, preventDefault: () => { defaultPrevented = true; } });\r\n this._resubscribeTypeahead.next(null);\r\n if (!defaultPrevented) {\r\n this.writeValue(result);\r\n this._onChange(result);\r\n }\r\n }\r\n _selectResultClosePopup(result) {\r\n this._selectResult(result);\r\n this._closePopup();\r\n }\r\n _showHint() {\r\n var _a;\r\n if (this.showHint && ((_a = this._windowRef) === null || _a === void 0 ? void 0 : _a.instance.hasActive()) && this._inputValueBackup != null) {\r\n const userInputLowerCase = this._inputValueBackup.toLowerCase();\r\n const formattedVal = this._formatItemForInput(this._windowRef.instance.getActive());\r\n if (userInputLowerCase === formattedVal.substr(0, this._inputValueBackup.length).toLowerCase()) {\r\n this._writeInputValue(this._inputValueBackup + formattedVal.substr(this._inputValueBackup.length));\r\n this._elementRef.nativeElement['setSelectionRange'].apply(this._elementRef.nativeElement, [this._inputValueBackup.length, formattedVal.length]);\r\n }\r\n else {\r\n this._writeInputValue(formattedVal);\r\n }\r\n }\r\n }\r\n _formatItemForInput(item) {\r\n return item != null && this.inputFormatter ? this.inputFormatter(item) : toString(item);\r\n }\r\n _writeInputValue(value) {\r\n this._renderer.setProperty(this._elementRef.nativeElement, 'value', toString(value));\r\n }\r\n _subscribeToUserInput() {\r\n const results$ = this._valueChanges.pipe(tap(value => {\r\n this._inputValueBackup = this.showHint ? value : null;\r\n this._onChange(this.editable ? value : undefined);\r\n }), this.ngbTypeahead ? this.ngbTypeahead : () => of([]));\r\n this._subscription = this._resubscribeTypeahead.pipe(switchMap(() => results$)).subscribe(results => {\r\n if (!results || results.length === 0) {\r\n this._closePopup();\r\n }\r\n else {\r\n this._openPopup();\r\n this._windowRef.instance.focusFirst = this.focusFirst;\r\n this._windowRef.instance.results = results;\r\n this._windowRef.instance.term = this._elementRef.nativeElement.value;\r\n if (this.resultFormatter) {\r\n this._windowRef.instance.formatter = this.resultFormatter;\r\n }\r\n if (this.resultTemplate) {\r\n this._windowRef.instance.resultTemplate = this.resultTemplate;\r\n }\r\n this._windowRef.instance.resetActive();\r\n // The observable stream we are subscribing to might have async steps\r\n // and if a component containing typeahead is using the OnPush strategy\r\n // the change detection turn wouldn't be invoked automatically.\r\n this._windowRef.changeDetectorRef.detectChanges();\r\n this._showHint();\r\n }\r\n // live announcer\r\n const count = results ? results.length : 0;\r\n this._live.say(count === 0 ? 'No results available' : `${count} result${count === 1 ? '' : 's'} available`);\r\n });\r\n }\r\n _unsubscribeFromUserInput() {\r\n if (this._subscription) {\r\n this._subscription.unsubscribe();\r\n }\r\n this._subscription = null;\r\n }\r\n}\nNgbTypeahead.ɵfac = function NgbTypeahead_Factory(t) { return new (t || NgbTypeahead)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(NgbTypeaheadConfig), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(Live), ɵngcc0.ɵɵdirectiveInject(DOCUMENT), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ApplicationRef)); };\nNgbTypeahead.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgbTypeahead, selectors: [[\"input\", \"ngbTypeahead\", \"\"]], hostAttrs: [\"autocapitalize\", \"off\", \"autocorrect\", \"off\", \"role\", \"combobox\", \"aria-multiline\", \"false\"], hostVars: 7, hostBindings: function NgbTypeahead_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"blur\", function NgbTypeahead_blur_HostBindingHandler() { return ctx.handleBlur(); })(\"keydown\", function NgbTypeahead_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"autocomplete\", ctx.autocomplete);\n ɵngcc0.ɵɵattribute(\"aria-autocomplete\", ctx.showHint ? \"both\" : \"list\")(\"aria-activedescendant\", ctx.activeDescendant)(\"aria-owns\", ctx.isPopupOpen() ? ctx.popupId : null)(\"aria-expanded\", ctx.isPopupOpen());\n ɵngcc0.ɵɵclassProp(\"open\", ctx.isPopupOpen());\n } }, inputs: { autocomplete: \"autocomplete\", placement: \"placement\", container: \"container\", editable: \"editable\", focusFirst: \"focusFirst\", showHint: \"showHint\", inputFormatter: \"inputFormatter\", ngbTypeahead: \"ngbTypeahead\", resultFormatter: \"resultFormatter\", resultTemplate: \"resultTemplate\", popupClass: \"popupClass\" }, outputs: { selectItem: \"selectItem\" }, exportAs: [\"ngbTypeahead\"], features: [ɵngcc0.ɵɵProvidersFeature([{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTypeahead), multi: true }]), ɵngcc0.ɵɵNgOnChangesFeature] });\r\nNgbTypeahead.ctorParameters = () => [\r\n { type: ElementRef },\r\n { type: ViewContainerRef },\r\n { type: Renderer2 },\r\n { type: Injector },\r\n { type: ComponentFactoryResolver },\r\n { type: NgbTypeaheadConfig },\r\n { type: NgZone },\r\n { type: Live },\r\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] },\r\n { type: NgZone },\r\n { type: ChangeDetectorRef },\r\n { type: ApplicationRef }\r\n];\r\nNgbTypeahead.propDecorators = {\r\n autocomplete: [{ type: Input }],\r\n container: [{ type: Input }],\r\n editable: [{ type: Input }],\r\n focusFirst: [{ type: Input }],\r\n inputFormatter: [{ type: Input }],\r\n ngbTypeahead: [{ type: Input }],\r\n resultFormatter: [{ type: Input }],\r\n resultTemplate: [{ type: Input }],\r\n showHint: [{ type: Input }],\r\n placement: [{ type: Input }],\r\n popupClass: [{ type: Input }],\r\n selectItem: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeahead, [{\n type: Directive,\n args: [{\n selector: 'input[ngbTypeahead]',\n exportAs: 'ngbTypeahead',\n host: {\n '(blur)': 'handleBlur()',\n '[class.open]': 'isPopupOpen()',\n '(keydown)': 'handleKeyDown($event)',\n '[autocomplete]': 'autocomplete',\n 'autocapitalize': 'off',\n 'autocorrect': 'off',\n 'role': 'combobox',\n 'aria-multiline': 'false',\n '[attr.aria-autocomplete]': 'showHint ? \"both\" : \"list\"',\n '[attr.aria-activedescendant]': 'activeDescendant',\n '[attr.aria-owns]': 'isPopupOpen() ? popupId : null',\n '[attr.aria-expanded]': 'isPopupOpen()'\n },\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgbTypeahead), multi: true }]\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ViewContainerRef }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.Injector }, { type: ɵngcc0.ComponentFactoryResolver }, { type: NgbTypeaheadConfig }, { type: ɵngcc0.NgZone }, { type: Live }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ApplicationRef }]; }, { autocomplete: [{\n type: Input\n }], placement: [{\n type: Input\n }], selectItem: [{\n type: Output\n }], container: [{\n type: Input\n }], editable: [{\n type: Input\n }], focusFirst: [{\n type: Input\n }], showHint: [{\n type: Input\n }], inputFormatter: [{\n type: Input\n }], ngbTypeahead: [{\n type: Input\n }], resultFormatter: [{\n type: Input\n }], resultTemplate: [{\n type: Input\n }], popupClass: [{\n type: Input\n }] }); })();\n\nclass NgbTypeaheadModule {\r\n}\nNgbTypeaheadModule.ɵfac = function NgbTypeaheadModule_Factory(t) { return new (t || NgbTypeaheadModule)(); };\nNgbTypeaheadModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbTypeaheadModule });\nNgbTypeaheadModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbTypeaheadModule, [{\n type: NgModule,\n args: [{\n declarations: [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow],\n exports: [NgbTypeahead, NgbHighlight],\n imports: [CommonModule],\n entryComponents: [NgbTypeaheadWindow]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbTypeaheadModule, { declarations: function () { return [NgbTypeahead, NgbHighlight, NgbTypeaheadWindow]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgbTypeahead, NgbHighlight]; } }); })();\n\nconst NGB_MODULES = [\r\n NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule,\r\n NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule,\r\n NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule\r\n];\r\nclass NgbModule {\r\n}\nNgbModule.ɵfac = function NgbModule_Factory(t) { return new (t || NgbModule)(); };\nNgbModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgbModule });\nNgbModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [NGB_MODULES, NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgbModule, [{\n type: NgModule,\n args: [{ imports: NGB_MODULES, exports: NGB_MODULES }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgbModule, { imports: [NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule], exports: [NgbAccordionModule, NgbAlertModule, NgbButtonsModule, NgbCarouselModule, NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule, NgbModalModule, NgbNavModule, NgbPaginationModule, NgbPopoverModule, NgbProgressbarModule, NgbRatingModule, NgbTimepickerModule, NgbToastModule, NgbTooltipModule, NgbTypeaheadModule] }); })();\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { ModalDismissReasons, NgbAccordion, NgbAccordionConfig, NgbAccordionModule, NgbActiveModal, NgbAlert, NgbAlertConfig, NgbAlertModule, NgbButtonLabel, NgbButtonsModule, NgbCalendar, NgbCalendarBuddhist, NgbCalendarGregorian, NgbCalendarHebrew, NgbCalendarIslamicCivil, NgbCalendarIslamicUmalqura, NgbCalendarPersian, NgbCarousel, NgbCarouselConfig, NgbCarouselModule, NgbCheckBox, NgbCollapse, NgbCollapseConfig, NgbCollapseModule, NgbConfig, NgbDate, NgbDateAdapter, NgbDateNativeAdapter, NgbDateNativeUTCAdapter, NgbDateParserFormatter, NgbDatepicker, NgbDatepickerConfig, NgbDatepickerContent, NgbDatepickerI18n, NgbDatepickerI18nDefault, NgbDatepickerI18nHebrew, NgbDatepickerKeyboardService, NgbDatepickerModule, NgbDatepickerMonth, NgbDropdown, NgbDropdownAnchor, NgbDropdownConfig, NgbDropdownItem, NgbDropdownMenu, NgbDropdownModule, NgbDropdownToggle, NgbHighlight, NgbInputDatepicker, NgbInputDatepickerConfig, NgbModal, NgbModalConfig, NgbModalModule, NgbModalRef, NgbModule, NgbNav, NgbNavConfig, NgbNavContent, NgbNavItem, NgbNavLink, NgbNavModule, NgbNavOutlet, NgbNavPane, NgbNavbar, NgbPagination, NgbPaginationConfig, NgbPaginationEllipsis, NgbPaginationFirst, NgbPaginationLast, NgbPaginationModule, NgbPaginationNext, NgbPaginationNumber, NgbPaginationPages, NgbPaginationPrevious, NgbPanel, NgbPanelContent, NgbPanelHeader, NgbPanelTitle, NgbPanelToggle, NgbPopover, NgbPopoverConfig, NgbPopoverModule, NgbProgressbar, NgbProgressbarConfig, NgbProgressbarModule, NgbRadio, NgbRadioGroup, NgbRating, NgbRatingConfig, NgbRatingModule, NgbSlide, NgbSlideEventDirection, NgbSlideEventSource, NgbTimeAdapter, NgbTimepicker, NgbTimepickerConfig, NgbTimepickerI18n, NgbTimepickerModule, NgbToast, NgbToastConfig, NgbToastHeader, NgbToastModule, NgbTooltip, NgbTooltipConfig, NgbTooltipModule, NgbTypeahead, NgbTypeaheadConfig, NgbTypeaheadModule, NGB_CAROUSEL_DIRECTIVES as ɵa, NGB_DATEPICKER_CALENDAR_FACTORY as ɵb, ContentRef as ɵba, NgbDatepickerDayView as ɵc, NgbDatepickerNavigation as ɵd, NgbDatepickerNavigationSelect as ɵe, NGB_DATEPICKER_18N_FACTORY as ɵf, NGB_DATEPICKER_DATE_ADAPTER_FACTORY as ɵg, NgbDateStructAdapter as ɵh, NGB_DATEPICKER_PARSER_FORMATTER_FACTORY as ɵi, NgbDateISOParserFormatter as ɵj, NgbPopoverWindow as ɵk, NGB_DATEPICKER_TIME_ADAPTER_FACTORY as ɵl, NgbTimeStructAdapter as ɵm, NGB_TIMEPICKER_I18N_FACTORY as ɵn, NgbTimepickerI18nDefault as ɵo, NgbTooltipWindow as ɵp, NgbTypeaheadWindow as ɵq, NgbDatepickerService as ɵr, NgbModalBackdrop as ɵs, NgbModalWindow as ɵt, NgbModalStack as ɵu, ScrollBar as ɵv, ARIA_LIVE_DELAY as ɵw, ARIA_LIVE_DELAY_FACTORY as ɵx, Live as ɵy, NgbCalendarHijri as ɵz };\n\n","import { Directive, ElementRef, Input, TemplateRef, ɵɵdefineInjectable, Injectable, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Renderer2, NgZone, Optional, Inject, Output, ViewChild, HostListener, InjectionToken, forwardRef, Attribute, ChangeDetectorRef, HostBinding, ContentChild, ContentChildren, NgModule } from '@angular/core';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { takeUntil, auditTime, startWith, tap, debounceTime, filter, map } from 'rxjs/operators';\nimport { animationFrameScheduler, asapScheduler, Subject, fromEvent, merge } from 'rxjs';\nimport { DOCUMENT, CommonModule } from '@angular/common';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\n\nconst _c0 = [\"content\"];\nconst _c1 = [\"scroll\"];\nconst _c2 = [\"padding\"];\nconst _c3 = function (a0) { return { searchTerm: a0 }; };\nfunction NgDropdownPanelComponent_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 6);\n ɵngcc0.ɵɵelementContainer(1, 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.headerTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, ctx_r0.filterValue));\n} }\nfunction NgDropdownPanelComponent_div_8_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵelementContainer(1, 7);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r4.footerTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, ctx_r4.filterValue));\n} }\nconst _c4 = [\"*\"];\nconst _c5 = [\"searchInput\"];\nfunction NgSelectComponent_ng_container_4_div_1_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"span\", 15);\n ɵngcc0.ɵɵlistener(\"click\", function NgSelectComponent_ng_container_4_div_1_ng_template_1_Template_span_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r13); const item_r7 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r11 = ɵngcc0.ɵɵnextContext(2); return ctx_r11.unselect(item_r7); });\n ɵngcc0.ɵɵtext(1, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(2, \"span\", 16);\n} if (rf & 2) {\n const item_r7 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r9 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngItemLabel\", item_r7.label)(\"escape\", ctx_r9.escapeHTML);\n} }\nfunction NgSelectComponent_ng_container_4_div_1_ng_template_3_Template(rf, ctx) { }\nconst _c6 = function (a0, a1, a2) { return { item: a0, clear: a1, label: a2 }; };\nfunction NgSelectComponent_ng_container_4_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 12);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_container_4_div_1_ng_template_1_Template, 3, 2, \"ng-template\", null, 13, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_container_4_div_1_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r7 = ctx.$implicit;\n const _r8 = ɵngcc0.ɵɵreference(2);\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"ng-value-disabled\", item_r7.disabled);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r6.labelTemplate || _r8)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(4, _c6, item_r7.value, ctx_r6.clearItem, item_r7.label));\n} }\nfunction NgSelectComponent_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_container_4_div_1_Template, 4, 8, \"div\", 11);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.selectedItems)(\"ngForTrackBy\", ctx_r0.trackByOption);\n} }\nfunction NgSelectComponent_5_ng_template_0_Template(rf, ctx) { }\nconst _c7 = function (a0, a1) { return { items: a0, clear: a1 }; };\nfunction NgSelectComponent_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgSelectComponent_5_ng_template_0_Template, 0, 0, \"ng-template\", 14);\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.multiLabelTemplate)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c7, ctx_r1.selectedValues, ctx_r1.clearItem));\n} }\nfunction NgSelectComponent_ng_container_9_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 19);\n} }\nfunction NgSelectComponent_ng_container_9_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_container_9_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_container_9_ng_template_1_Template, 1, 0, \"ng-template\", null, 17, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_container_9_ng_template_3_Template, 0, 0, \"ng-template\", 18);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r16 = ɵngcc0.ɵɵreference(2);\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r3.loadingSpinnerTemplate || _r16);\n} }\nfunction NgSelectComponent_span_10_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 20)(1, \"span\", 21);\n ɵngcc0.ɵɵtext(2, \"\\u00D7\");\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵpropertyInterpolate(\"title\", ctx_r4.clearAllText);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 27);\n} if (rf & 2) {\n const item_r24 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r26 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngItemLabel\", item_r24.label)(\"escape\", ctx_r26.escapeHTML);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_3_Template(rf, ctx) { }\nconst _c8 = function (a0, a1, a2, a3) { return { item: a0, item$: a1, index: a2, searchTerm: a3 }; };\nfunction NgSelectComponent_ng_dropdown_panel_13_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r30 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 25);\n ɵngcc0.ɵɵlistener(\"click\", function NgSelectComponent_ng_dropdown_panel_13_div_2_Template_div_click_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r30); const item_r24 = restoredCtx.$implicit; const ctx_r29 = ɵngcc0.ɵɵnextContext(2); return ctx_r29.toggleItem(item_r24); })(\"mouseover\", function NgSelectComponent_ng_dropdown_panel_13_div_2_Template_div_mouseover_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r30); const item_r24 = restoredCtx.$implicit; const ctx_r31 = ɵngcc0.ɵɵnextContext(2); return ctx_r31.onItemHover(item_r24); });\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_1_Template, 1, 2, \"ng-template\", null, 26, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_div_2_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r24 = ctx.$implicit;\n const _r25 = ɵngcc0.ɵɵreference(2);\n const ctx_r19 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"ng-option-disabled\", item_r24.disabled)(\"ng-option-selected\", item_r24.selected)(\"ng-optgroup\", item_r24.children)(\"ng-option\", !item_r24.children)(\"ng-option-child\", !!item_r24.parent)(\"ng-option-marked\", item_r24 === ctx_r19.itemsList.markedItem);\n ɵngcc0.ɵɵattribute(\"role\", item_r24.children ? \"group\" : \"option\")(\"aria-selected\", item_r24.selected)(\"id\", item_r24 == null ? null : item_r24.htmlId);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", item_r24.children ? ctx_r19.optgroupTemplate || _r25 : ctx_r19.optionTemplate || _r25)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction4(17, _c8, item_r24.value, item_r24, item_r24.index, ctx_r19.searchTerm));\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\")(1, \"span\", 30);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r33 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ctx_r33.addTagText);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\"\\\"\", ctx_r33.searchTerm, \"\\\"\");\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_dropdown_panel_13_div_3_Template(rf, ctx) { if (rf & 1) {\n const _r36 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 28);\n ɵngcc0.ɵɵlistener(\"mouseover\", function NgSelectComponent_ng_dropdown_panel_13_div_3_Template_div_mouseover_0_listener() { ɵngcc0.ɵɵrestoreView(_r36); const ctx_r35 = ɵngcc0.ɵɵnextContext(2); return ctx_r35.itemsList.unmarkItem(); })(\"click\", function NgSelectComponent_ng_dropdown_panel_13_div_3_Template_div_click_0_listener() { ɵngcc0.ɵɵrestoreView(_r36); const ctx_r37 = ɵngcc0.ɵɵnextContext(2); return ctx_r37.selectTag(); });\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_1_Template, 4, 2, \"ng-template\", null, 29, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_div_3_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const _r32 = ɵngcc0.ɵɵreference(2);\n const ctx_r20 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"ng-option-marked\", !ctx_r20.itemsList.markedItem);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r20.tagTemplate || _r32)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(4, _c3, ctx_r20.searchTerm));\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 32);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r39 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r39.notFoundText);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_1_Template, 2, 1, \"ng-template\", null, 31, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_ng_container_4_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r38 = ɵngcc0.ɵɵreference(2);\n const ctx_r21 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r21.notFoundTemplate || _r38)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, ctx_r21.searchTerm));\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 32);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r42 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r42.typeToSearchText);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_1_Template, 2, 1, \"ng-template\", null, 33, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_ng_container_5_ng_template_3_Template, 0, 0, \"ng-template\", 18);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r41 = ɵngcc0.ɵɵreference(2);\n const ctx_r22 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r22.typeToSearchTemplate || _r41);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 32);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r45 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(ctx_r45.loadingText);\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_3_Template(rf, ctx) { }\nfunction NgSelectComponent_ng_dropdown_panel_13_ng_container_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_1_Template, 2, 1, \"ng-template\", null, 34, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_ng_container_6_ng_template_3_Template, 0, 0, \"ng-template\", 14);\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const _r44 = ɵngcc0.ɵɵreference(2);\n const ctx_r23 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r23.loadingTextTemplate || _r44)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction1(2, _c3, ctx_r23.searchTerm));\n} }\nfunction NgSelectComponent_ng_dropdown_panel_13_Template(rf, ctx) { if (rf & 1) {\n const _r48 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ng-dropdown-panel\", 22);\n ɵngcc0.ɵɵlistener(\"update\", function NgSelectComponent_ng_dropdown_panel_13_Template_ng_dropdown_panel_update_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r48); const ctx_r47 = ɵngcc0.ɵɵnextContext(); return ctx_r47.viewPortItems = $event; })(\"scroll\", function NgSelectComponent_ng_dropdown_panel_13_Template_ng_dropdown_panel_scroll_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r48); const ctx_r49 = ɵngcc0.ɵɵnextContext(); return ctx_r49.scroll.emit($event); })(\"scrollToEnd\", function NgSelectComponent_ng_dropdown_panel_13_Template_ng_dropdown_panel_scrollToEnd_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r48); const ctx_r50 = ɵngcc0.ɵɵnextContext(); return ctx_r50.scrollToEnd.emit($event); })(\"outsideClick\", function NgSelectComponent_ng_dropdown_panel_13_Template_ng_dropdown_panel_outsideClick_0_listener() { ɵngcc0.ɵɵrestoreView(_r48); const ctx_r51 = ɵngcc0.ɵɵnextContext(); return ctx_r51.close(); });\n ɵngcc0.ɵɵelementContainerStart(1);\n ɵngcc0.ɵɵtemplate(2, NgSelectComponent_ng_dropdown_panel_13_div_2_Template, 4, 22, \"div\", 23);\n ɵngcc0.ɵɵtemplate(3, NgSelectComponent_ng_dropdown_panel_13_div_3_Template, 4, 6, \"div\", 24);\n ɵngcc0.ɵɵelementContainerEnd();\n ɵngcc0.ɵɵtemplate(4, NgSelectComponent_ng_dropdown_panel_13_ng_container_4_Template, 4, 4, \"ng-container\", 3);\n ɵngcc0.ɵɵtemplate(5, NgSelectComponent_ng_dropdown_panel_13_ng_container_5_Template, 4, 1, \"ng-container\", 3);\n ɵngcc0.ɵɵtemplate(6, NgSelectComponent_ng_dropdown_panel_13_ng_container_6_Template, 4, 4, \"ng-container\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"ng-select-multiple\", ctx_r5.multiple);\n ɵngcc0.ɵɵproperty(\"virtualScroll\", ctx_r5.virtualScroll)(\"bufferAmount\", ctx_r5.bufferAmount)(\"appendTo\", ctx_r5.appendTo)(\"position\", ctx_r5.dropdownPosition)(\"headerTemplate\", ctx_r5.headerTemplate)(\"footerTemplate\", ctx_r5.footerTemplate)(\"filterValue\", ctx_r5.searchTerm)(\"items\", ctx_r5.itemsList.filteredItems)(\"markedItem\", ctx_r5.itemsList.markedItem)(\"ngClass\", ctx_r5.appendTo ? ctx_r5.classes : null)(\"id\", ctx_r5.dropdownId);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r5.viewPortItems)(\"ngForTrackBy\", ctx_r5.trackByOption);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showAddTag);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showNoItemsFound());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showTypeToSearch());\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.loading && ctx_r5.itemsList.filteredItems.length === 0);\n} }\nconst unescapedHTMLExp = /[&<>\"']/g;\nconst hasUnescapedHTMLExp = RegExp(unescapedHTMLExp.source);\nconst htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': '''\n};\nfunction escapeHTML(string) {\n return (string && hasUnescapedHTMLExp.test(string)) ?\n string.replace(unescapedHTMLExp, chr => htmlEscapes[chr]) :\n string;\n}\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\nfunction isObject(value) {\n return typeof value === 'object' && isDefined(value);\n}\nfunction isPromise(value) {\n return value instanceof Promise;\n}\nfunction isFunction(value) {\n return value instanceof Function;\n}\n\nclass NgItemLabelDirective {\n constructor(element) {\n this.element = element;\n this.escape = true;\n }\n ngOnChanges(changes) {\n this.element.nativeElement.innerHTML = this.escape ?\n escapeHTML(this.ngItemLabel) :\n this.ngItemLabel;\n }\n}\nNgItemLabelDirective.ɵfac = function NgItemLabelDirective_Factory(t) { return new (t || NgItemLabelDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgItemLabelDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgItemLabelDirective, selectors: [[\"\", \"ngItemLabel\", \"\"]], inputs: { escape: \"escape\", ngItemLabel: \"ngItemLabel\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nNgItemLabelDirective.ctorParameters = () => [\n { type: ElementRef }\n];\nNgItemLabelDirective.propDecorators = {\n ngItemLabel: [{ type: Input }],\n escape: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgItemLabelDirective, [{\n type: Directive,\n args: [{ selector: '[ngItemLabel]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { escape: [{\n type: Input\n }], ngItemLabel: [{\n type: Input\n }] }); })();\nclass NgOptionTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nNgOptionTemplateDirective.ɵfac = function NgOptionTemplateDirective_Factory(t) { return new (t || NgOptionTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgOptionTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgOptionTemplateDirective, selectors: [[\"\", \"ng-option-tmp\", \"\"]] });\nNgOptionTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgOptionTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-option-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nclass NgOptgroupTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nNgOptgroupTemplateDirective.ɵfac = function NgOptgroupTemplateDirective_Factory(t) { return new (t || NgOptgroupTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgOptgroupTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgOptgroupTemplateDirective, selectors: [[\"\", \"ng-optgroup-tmp\", \"\"]] });\nNgOptgroupTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgOptgroupTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-optgroup-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nclass NgLabelTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nNgLabelTemplateDirective.ɵfac = function NgLabelTemplateDirective_Factory(t) { return new (t || NgLabelTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgLabelTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgLabelTemplateDirective, selectors: [[\"\", \"ng-label-tmp\", \"\"]] });\nNgLabelTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgLabelTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-label-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nclass NgMultiLabelTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nNgMultiLabelTemplateDirective.ɵfac = function NgMultiLabelTemplateDirective_Factory(t) { return new (t || NgMultiLabelTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgMultiLabelTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgMultiLabelTemplateDirective, selectors: [[\"\", \"ng-multi-label-tmp\", \"\"]] });\nNgMultiLabelTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgMultiLabelTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-multi-label-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nclass NgHeaderTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nNgHeaderTemplateDirective.ɵfac = function NgHeaderTemplateDirective_Factory(t) { return new (t || NgHeaderTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgHeaderTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgHeaderTemplateDirective, selectors: [[\"\", \"ng-header-tmp\", \"\"]] });\nNgHeaderTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgHeaderTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-header-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nclass NgFooterTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nNgFooterTemplateDirective.ɵfac = function NgFooterTemplateDirective_Factory(t) { return new (t || NgFooterTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgFooterTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgFooterTemplateDirective, selectors: [[\"\", \"ng-footer-tmp\", \"\"]] });\nNgFooterTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgFooterTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-footer-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nclass NgNotFoundTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nNgNotFoundTemplateDirective.ɵfac = function NgNotFoundTemplateDirective_Factory(t) { return new (t || NgNotFoundTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgNotFoundTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgNotFoundTemplateDirective, selectors: [[\"\", \"ng-notfound-tmp\", \"\"]] });\nNgNotFoundTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgNotFoundTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-notfound-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nclass NgTypeToSearchTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nNgTypeToSearchTemplateDirective.ɵfac = function NgTypeToSearchTemplateDirective_Factory(t) { return new (t || NgTypeToSearchTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgTypeToSearchTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgTypeToSearchTemplateDirective, selectors: [[\"\", \"ng-typetosearch-tmp\", \"\"]] });\nNgTypeToSearchTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgTypeToSearchTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-typetosearch-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nclass NgLoadingTextTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nNgLoadingTextTemplateDirective.ɵfac = function NgLoadingTextTemplateDirective_Factory(t) { return new (t || NgLoadingTextTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgLoadingTextTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgLoadingTextTemplateDirective, selectors: [[\"\", \"ng-loadingtext-tmp\", \"\"]] });\nNgLoadingTextTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgLoadingTextTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-loadingtext-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nclass NgTagTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nNgTagTemplateDirective.ɵfac = function NgTagTemplateDirective_Factory(t) { return new (t || NgTagTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgTagTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgTagTemplateDirective, selectors: [[\"\", \"ng-tag-tmp\", \"\"]] });\nNgTagTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgTagTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-tag-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\nclass NgLoadingSpinnerTemplateDirective {\n constructor(template) {\n this.template = template;\n }\n}\nNgLoadingSpinnerTemplateDirective.ɵfac = function NgLoadingSpinnerTemplateDirective_Factory(t) { return new (t || NgLoadingSpinnerTemplateDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.TemplateRef)); };\nNgLoadingSpinnerTemplateDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgLoadingSpinnerTemplateDirective, selectors: [[\"\", \"ng-loadingspinner-tmp\", \"\"]] });\nNgLoadingSpinnerTemplateDirective.ctorParameters = () => [\n { type: TemplateRef }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgLoadingSpinnerTemplateDirective, [{\n type: Directive,\n args: [{ selector: '[ng-loadingspinner-tmp]' }]\n }], function () { return [{ type: ɵngcc0.TemplateRef }]; }, null); })();\n\nclass ConsoleService {\n warn(message) {\n console.warn(message);\n }\n}\nConsoleService.ɵfac = function ConsoleService_Factory(t) { return new (t || ConsoleService)(); };\nConsoleService.ɵprov = ɵɵdefineInjectable({ factory: function ConsoleService_Factory() { return new ConsoleService(); }, token: ConsoleService, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ConsoleService, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], null, null); })();\n\nfunction newId() {\n // First character is an 'a', it's good practice to tag id to begin with a letter\n return 'axxxxxxxxxxx'.replace(/[x]/g, function (_) {\n // tslint:disable-next-line:no-bitwise\n const val = Math.random() * 16 | 0;\n return val.toString(16);\n });\n}\n\nconst 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};\nfunction stripSpecialChars(text) {\n const match = (a) => {\n return diacritics[a] || a;\n };\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n}\n\nclass ItemsList {\n constructor(_ngSelect, _selectionModel) {\n this._ngSelect = _ngSelect;\n this._selectionModel = _selectionModel;\n this._items = [];\n this._filteredItems = [];\n this._markedIndex = -1;\n }\n get items() {\n return this._items;\n }\n get filteredItems() {\n return this._filteredItems;\n }\n get markedIndex() {\n return this._markedIndex;\n }\n get selectedItems() {\n return this._selectionModel.value;\n }\n get markedItem() {\n return this._filteredItems[this._markedIndex];\n }\n get noItemsToSelect() {\n return this._ngSelect.hideSelected && this._items.length === this.selectedItems.length;\n }\n get maxItemsSelected() {\n return this._ngSelect.multiple && this._ngSelect.maxSelectedItems <= this.selectedItems.length;\n }\n get lastSelectedItem() {\n let i = this.selectedItems.length - 1;\n for (; i >= 0; i--) {\n let item = this.selectedItems[i];\n if (!item.disabled) {\n return item;\n }\n }\n return null;\n }\n setItems(items) {\n this._items = items.map((item, index) => this.mapItem(item, index));\n if (this._ngSelect.groupBy) {\n this._groups = this._groupBy(this._items, this._ngSelect.groupBy);\n this._items = this._flatten(this._groups);\n }\n else {\n this._groups = new Map();\n this._groups.set(undefined, this._items);\n }\n this._filteredItems = [...this._items];\n }\n select(item) {\n if (item.selected || this.maxItemsSelected) {\n return;\n }\n const multiple = this._ngSelect.multiple;\n if (!multiple) {\n this.clearSelected();\n }\n this._selectionModel.select(item, multiple, this._ngSelect.selectableGroupAsModel);\n if (this._ngSelect.hideSelected) {\n this._hideSelected(item);\n }\n }\n unselect(item) {\n if (!item.selected) {\n return;\n }\n this._selectionModel.unselect(item, this._ngSelect.multiple);\n if (this._ngSelect.hideSelected && isDefined(item.index) && this._ngSelect.multiple) {\n this._showSelected(item);\n }\n }\n findItem(value) {\n let findBy;\n if (this._ngSelect.compareWith) {\n findBy = item => this._ngSelect.compareWith(item.value, value);\n }\n else if (this._ngSelect.bindValue) {\n findBy = item => !item.children && this.resolveNested(item.value, this._ngSelect.bindValue) === value;\n }\n else {\n findBy = item => item.value === value ||\n !item.children && item.label && item.label === this.resolveNested(value, this._ngSelect.bindLabel);\n }\n return this._items.find(item => findBy(item));\n }\n addItem(item) {\n const option = this.mapItem(item, this._items.length);\n this._items.push(option);\n this._filteredItems.push(option);\n return option;\n }\n clearSelected(keepDisabled = false) {\n this._selectionModel.clear(keepDisabled);\n this._items.forEach(item => {\n item.selected = keepDisabled && item.selected && item.disabled;\n item.marked = false;\n });\n if (this._ngSelect.hideSelected) {\n this.resetFilteredItems();\n }\n }\n findByLabel(term) {\n term = stripSpecialChars(term).toLocaleLowerCase();\n return this.filteredItems.find(item => {\n const label = stripSpecialChars(item.label).toLocaleLowerCase();\n return label.substr(0, term.length) === term;\n });\n }\n filter(term) {\n if (!term) {\n this.resetFilteredItems();\n return;\n }\n this._filteredItems = [];\n term = this._ngSelect.searchFn ? term : stripSpecialChars(term).toLocaleLowerCase();\n const match = this._ngSelect.searchFn || this._defaultSearchFn;\n const hideSelected = this._ngSelect.hideSelected;\n for (const key of Array.from(this._groups.keys())) {\n const matchedItems = [];\n for (const item of this._groups.get(key)) {\n if (hideSelected && (item.parent && item.parent.selected || item.selected)) {\n continue;\n }\n const searchItem = this._ngSelect.searchFn ? item.value : item;\n if (match(term, searchItem)) {\n matchedItems.push(item);\n }\n }\n if (matchedItems.length > 0) {\n const [last] = matchedItems.slice(-1);\n if (last.parent) {\n const head = this._items.find(x => x === last.parent);\n this._filteredItems.push(head);\n }\n this._filteredItems.push(...matchedItems);\n }\n }\n }\n resetFilteredItems() {\n if (this._filteredItems.length === this._items.length) {\n return;\n }\n if (this._ngSelect.hideSelected && this.selectedItems.length > 0) {\n this._filteredItems = this._items.filter(x => !x.selected);\n }\n else {\n this._filteredItems = this._items;\n }\n }\n unmarkItem() {\n this._markedIndex = -1;\n }\n markNextItem() {\n this._stepToItem(+1);\n }\n markPreviousItem() {\n this._stepToItem(-1);\n }\n markItem(item) {\n this._markedIndex = this._filteredItems.indexOf(item);\n }\n markSelectedOrDefault(markDefault) {\n if (this._filteredItems.length === 0) {\n return;\n }\n const lastMarkedIndex = this._getLastMarkedIndex();\n if (lastMarkedIndex > -1) {\n this._markedIndex = lastMarkedIndex;\n }\n else {\n this._markedIndex = markDefault ? this.filteredItems.findIndex(x => !x.disabled) : -1;\n }\n }\n resolveNested(option, key) {\n if (!isObject(option)) {\n return option;\n }\n if (key.indexOf('.') === -1) {\n return option[key];\n }\n else {\n let keys = key.split('.');\n let value = option;\n for (let i = 0, len = keys.length; i < len; ++i) {\n if (value == null) {\n return null;\n }\n value = value[keys[i]];\n }\n return value;\n }\n }\n mapItem(item, index) {\n const label = isDefined(item.$ngOptionLabel) ? item.$ngOptionLabel : this.resolveNested(item, this._ngSelect.bindLabel);\n const value = isDefined(item.$ngOptionValue) ? item.$ngOptionValue : item;\n return {\n index: index,\n label: isDefined(label) ? label.toString() : '',\n value: value,\n disabled: item.disabled,\n htmlId: `${this._ngSelect.dropdownId}-${index}`,\n };\n }\n mapSelectedItems() {\n const multiple = this._ngSelect.multiple;\n for (const selected of this.selectedItems) {\n const value = this._ngSelect.bindValue ? this.resolveNested(selected.value, this._ngSelect.bindValue) : selected.value;\n const item = isDefined(value) ? this.findItem(value) : null;\n this._selectionModel.unselect(selected, multiple);\n this._selectionModel.select(item || selected, multiple, this._ngSelect.selectableGroupAsModel);\n }\n if (this._ngSelect.hideSelected) {\n this._filteredItems = this.filteredItems.filter(x => this.selectedItems.indexOf(x) === -1);\n }\n }\n _showSelected(item) {\n this._filteredItems.push(item);\n if (item.parent) {\n const parent = item.parent;\n const parentExists = this._filteredItems.find(x => x === parent);\n if (!parentExists) {\n this._filteredItems.push(parent);\n }\n }\n else if (item.children) {\n for (const child of item.children) {\n child.selected = false;\n this._filteredItems.push(child);\n }\n }\n this._filteredItems = [...this._filteredItems.sort((a, b) => (a.index - b.index))];\n }\n _hideSelected(item) {\n this._filteredItems = this._filteredItems.filter(x => x !== item);\n if (item.parent) {\n const children = item.parent.children;\n if (children.every(x => x.selected)) {\n this._filteredItems = this._filteredItems.filter(x => x !== item.parent);\n }\n }\n else if (item.children) {\n this._filteredItems = this.filteredItems.filter(x => x.parent !== item);\n }\n }\n _defaultSearchFn(search, opt) {\n const label = stripSpecialChars(opt.label).toLocaleLowerCase();\n return label.indexOf(search) > -1;\n }\n _getNextItemIndex(steps) {\n if (steps > 0) {\n return (this._markedIndex >= this._filteredItems.length - 1) ? 0 : (this._markedIndex + 1);\n }\n return (this._markedIndex <= 0) ? (this._filteredItems.length - 1) : (this._markedIndex - 1);\n }\n _stepToItem(steps) {\n if (this._filteredItems.length === 0 || this._filteredItems.every(x => x.disabled)) {\n return;\n }\n this._markedIndex = this._getNextItemIndex(steps);\n if (this.markedItem.disabled) {\n this._stepToItem(steps);\n }\n }\n _getLastMarkedIndex() {\n if (this._ngSelect.hideSelected) {\n return -1;\n }\n if (this._markedIndex > -1 && this.markedItem === undefined) {\n return -1;\n }\n const selectedIndex = this._filteredItems.indexOf(this.lastSelectedItem);\n if (this.lastSelectedItem && selectedIndex < 0) {\n return -1;\n }\n return Math.max(this.markedIndex, selectedIndex);\n }\n _groupBy(items, prop) {\n const groups = new Map();\n if (items.length === 0) {\n return groups;\n }\n // Check if items are already grouped by given key.\n if (Array.isArray(items[0].value[prop])) {\n for (const item of items) {\n const children = (item.value[prop] || []).map((x, index) => this.mapItem(x, index));\n groups.set(item, children);\n }\n return groups;\n }\n const isFnKey = isFunction(this._ngSelect.groupBy);\n const keyFn = (item) => {\n let key = isFnKey ? prop(item.value) : item.value[prop];\n return isDefined(key) ? key : undefined;\n };\n // Group items by key.\n for (const item of items) {\n let key = keyFn(item);\n const group = groups.get(key);\n if (group) {\n group.push(item);\n }\n else {\n groups.set(key, [item]);\n }\n }\n return groups;\n }\n _flatten(groups) {\n const isGroupByFn = isFunction(this._ngSelect.groupBy);\n const items = [];\n for (const key of Array.from(groups.keys())) {\n let i = items.length;\n if (key === undefined) {\n const withoutGroup = groups.get(undefined) || [];\n items.push(...withoutGroup.map(x => {\n x.index = i++;\n return x;\n }));\n continue;\n }\n const isObjectKey = isObject(key);\n const parent = {\n label: isObjectKey ? '' : String(key),\n children: undefined,\n parent: null,\n index: i++,\n disabled: !this._ngSelect.selectableGroup,\n htmlId: newId(),\n };\n const groupKey = isGroupByFn ? this._ngSelect.bindLabel : this._ngSelect.groupBy;\n const groupValue = this._ngSelect.groupValue || (() => {\n if (isObjectKey) {\n return key.value;\n }\n return { [groupKey]: key };\n });\n const children = groups.get(key).map(x => {\n x.parent = parent;\n x.children = undefined;\n x.index = i++;\n return x;\n });\n parent.children = children;\n parent.value = groupValue(key, children.map(x => x.value));\n items.push(parent);\n items.push(...children);\n }\n return items;\n }\n}\n\nvar KeyCode;\n(function (KeyCode) {\n KeyCode[KeyCode[\"Tab\"] = 9] = \"Tab\";\n KeyCode[KeyCode[\"Enter\"] = 13] = \"Enter\";\n KeyCode[KeyCode[\"Esc\"] = 27] = \"Esc\";\n KeyCode[KeyCode[\"Space\"] = 32] = \"Space\";\n KeyCode[KeyCode[\"ArrowUp\"] = 38] = \"ArrowUp\";\n KeyCode[KeyCode[\"ArrowDown\"] = 40] = \"ArrowDown\";\n KeyCode[KeyCode[\"Backspace\"] = 8] = \"Backspace\";\n})(KeyCode || (KeyCode = {}));\n\nclass NgDropdownPanelService {\n constructor() {\n this._dimensions = {\n itemHeight: 0,\n panelHeight: 0,\n itemsPerViewport: 0\n };\n }\n get dimensions() {\n return this._dimensions;\n }\n calculateItems(scrollPos, itemsLength, buffer) {\n const d = this._dimensions;\n const scrollHeight = d.itemHeight * itemsLength;\n const scrollTop = Math.max(0, scrollPos);\n const indexByScrollTop = scrollTop / scrollHeight * itemsLength;\n let end = Math.min(itemsLength, Math.ceil(indexByScrollTop) + (d.itemsPerViewport + 1));\n const maxStartEnd = end;\n const maxStart = Math.max(0, maxStartEnd - d.itemsPerViewport);\n let start = Math.min(maxStart, Math.floor(indexByScrollTop));\n let topPadding = d.itemHeight * Math.ceil(start) - (d.itemHeight * Math.min(start, buffer));\n topPadding = !isNaN(topPadding) ? topPadding : 0;\n start = !isNaN(start) ? start : -1;\n end = !isNaN(end) ? end : -1;\n start -= buffer;\n start = Math.max(0, start);\n end += buffer;\n end = Math.min(itemsLength, end);\n return {\n topPadding,\n scrollHeight,\n start,\n end\n };\n }\n setDimensions(itemHeight, panelHeight) {\n const itemsPerViewport = Math.max(1, Math.floor(panelHeight / itemHeight));\n this._dimensions = {\n itemHeight,\n panelHeight,\n itemsPerViewport\n };\n }\n getScrollTo(itemTop, itemHeight, lastScroll) {\n const { panelHeight } = this.dimensions;\n const itemBottom = itemTop + itemHeight;\n const top = lastScroll;\n const bottom = top + panelHeight;\n if (panelHeight >= itemBottom && lastScroll === itemTop) {\n return null;\n }\n if (itemBottom > bottom) {\n return top + itemBottom - bottom;\n }\n else if (itemTop <= top) {\n return itemTop;\n }\n return null;\n }\n}\nNgDropdownPanelService.ɵfac = function NgDropdownPanelService_Factory(t) { return new (t || NgDropdownPanelService)(); };\nNgDropdownPanelService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgDropdownPanelService, factory: NgDropdownPanelService.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgDropdownPanelService, [{\n type: Injectable\n }], function () { return []; }, null); })();\n\nconst TOP_CSS_CLASS = 'ng-select-top';\nconst BOTTOM_CSS_CLASS = 'ng-select-bottom';\nconst SCROLL_SCHEDULER = typeof requestAnimationFrame !== 'undefined' ? animationFrameScheduler : asapScheduler;\nclass NgDropdownPanelComponent {\n constructor(_renderer, _zone, _panelService, _elementRef, _document) {\n this._renderer = _renderer;\n this._zone = _zone;\n this._panelService = _panelService;\n this._document = _document;\n this.items = [];\n this.position = 'auto';\n this.virtualScroll = false;\n this.filterValue = null;\n this.update = new EventEmitter();\n this.scroll = new EventEmitter();\n this.scrollToEnd = new EventEmitter();\n this.outsideClick = new EventEmitter();\n this._destroy$ = new Subject();\n this._scrollToEndFired = false;\n this._updateScrollHeight = false;\n this._lastScrollPosition = 0;\n this._dropdown = _elementRef.nativeElement;\n }\n get currentPosition() {\n return this._currentPosition;\n }\n get itemsLength() {\n return this._itemsLength;\n }\n set itemsLength(value) {\n if (value !== this._itemsLength) {\n this._itemsLength = value;\n this._onItemsLengthChanged();\n }\n }\n get _startOffset() {\n if (this.markedItem) {\n const { itemHeight, panelHeight } = this._panelService.dimensions;\n const offset = this.markedItem.index * itemHeight;\n return panelHeight > offset ? 0 : offset;\n }\n return 0;\n }\n handleMousedown($event) {\n const target = $event.target;\n if (target.tagName === 'INPUT') {\n return;\n }\n $event.preventDefault();\n }\n ngOnInit() {\n this._select = this._dropdown.parentElement;\n this._virtualPadding = this.paddingElementRef.nativeElement;\n this._scrollablePanel = this.scrollElementRef.nativeElement;\n this._contentPanel = this.contentElementRef.nativeElement;\n this._handleScroll();\n this._handleOutsideClick();\n this._appendDropdown();\n }\n ngOnChanges(changes) {\n if (changes.items) {\n const change = changes.items;\n this._onItemsChange(change.currentValue, change.firstChange);\n }\n }\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n this._destroy$.unsubscribe();\n if (this.appendTo) {\n this._renderer.removeChild(this._dropdown.parentNode, this._dropdown);\n }\n }\n scrollTo(option, startFromOption = false) {\n if (!option) {\n return;\n }\n const index = this.items.indexOf(option);\n if (index < 0 || index >= this.itemsLength) {\n return;\n }\n let scrollTo;\n if (this.virtualScroll) {\n const itemHeight = this._panelService.dimensions.itemHeight;\n scrollTo = this._panelService.getScrollTo(index * itemHeight, itemHeight, this._lastScrollPosition);\n }\n else {\n const item = this._dropdown.querySelector(`#${option.htmlId}`);\n const lastScroll = startFromOption ? item.offsetTop : this._lastScrollPosition;\n scrollTo = this._panelService.getScrollTo(item.offsetTop, item.clientHeight, lastScroll);\n }\n if (isDefined(scrollTo)) {\n this._scrollablePanel.scrollTop = scrollTo;\n }\n }\n scrollToTag() {\n const panel = this._scrollablePanel;\n panel.scrollTop = panel.scrollHeight - panel.clientHeight;\n }\n adjustPosition() {\n this._updateYPosition();\n }\n _handleDropdownPosition() {\n this._currentPosition = this._calculateCurrentPosition(this._dropdown);\n if (this._currentPosition === 'top') {\n this._renderer.addClass(this._dropdown, TOP_CSS_CLASS);\n this._renderer.removeClass(this._dropdown, BOTTOM_CSS_CLASS);\n this._renderer.addClass(this._select, TOP_CSS_CLASS);\n this._renderer.removeClass(this._select, BOTTOM_CSS_CLASS);\n }\n else {\n this._renderer.addClass(this._dropdown, BOTTOM_CSS_CLASS);\n this._renderer.removeClass(this._dropdown, TOP_CSS_CLASS);\n this._renderer.addClass(this._select, BOTTOM_CSS_CLASS);\n this._renderer.removeClass(this._select, TOP_CSS_CLASS);\n }\n if (this.appendTo) {\n this._updateYPosition();\n }\n this._dropdown.style.opacity = '1';\n }\n _handleScroll() {\n this._zone.runOutsideAngular(() => {\n fromEvent(this.scrollElementRef.nativeElement, 'scroll')\n .pipe(takeUntil(this._destroy$), auditTime(0, SCROLL_SCHEDULER))\n .subscribe((e) => {\n const path = e.path || (e.composedPath && e.composedPath());\n const scrollTop = !path || path.length === 0 ? e.target.scrollTop : path[0].scrollTop;\n this._onContentScrolled(scrollTop);\n });\n });\n }\n _handleOutsideClick() {\n if (!this._document) {\n return;\n }\n this._zone.runOutsideAngular(() => {\n merge(fromEvent(this._document, 'touchstart', { capture: true }), fromEvent(this._document, 'mousedown', { capture: true })).pipe(takeUntil(this._destroy$))\n .subscribe($event => this._checkToClose($event));\n });\n }\n _checkToClose($event) {\n if (this._select.contains($event.target) || this._dropdown.contains($event.target)) {\n return;\n }\n const path = $event.path || ($event.composedPath && $event.composedPath());\n if ($event.target && $event.target.shadowRoot && path && path[0] && this._select.contains(path[0])) {\n return;\n }\n this._zone.run(() => this.outsideClick.emit());\n }\n _onItemsChange(items, firstChange) {\n this.items = items || [];\n this._scrollToEndFired = false;\n this.itemsLength = items.length;\n if (this.virtualScroll) {\n this._updateItemsRange(firstChange);\n }\n else {\n this._setVirtualHeight();\n this._updateItems(firstChange);\n }\n }\n _updateItems(firstChange) {\n this.update.emit(this.items);\n if (firstChange === false) {\n return;\n }\n this._zone.runOutsideAngular(() => {\n Promise.resolve().then(() => {\n const panelHeight = this._scrollablePanel.clientHeight;\n this._panelService.setDimensions(0, panelHeight);\n this._handleDropdownPosition();\n this.scrollTo(this.markedItem, firstChange);\n });\n });\n }\n _updateItemsRange(firstChange) {\n this._zone.runOutsideAngular(() => {\n this._measureDimensions().then(() => {\n if (firstChange) {\n this._renderItemsRange(this._startOffset);\n this._handleDropdownPosition();\n }\n else {\n this._renderItemsRange();\n }\n });\n });\n }\n _onContentScrolled(scrollTop) {\n if (this.virtualScroll) {\n this._renderItemsRange(scrollTop);\n }\n this._lastScrollPosition = scrollTop;\n this._fireScrollToEnd(scrollTop);\n }\n _updateVirtualHeight(height) {\n if (this._updateScrollHeight) {\n this._virtualPadding.style.height = `${height}px`;\n this._updateScrollHeight = false;\n }\n }\n _setVirtualHeight() {\n if (!this._virtualPadding) {\n return;\n }\n this._virtualPadding.style.height = `0px`;\n }\n _onItemsLengthChanged() {\n this._updateScrollHeight = true;\n }\n _renderItemsRange(scrollTop = null) {\n if (scrollTop && this._lastScrollPosition === scrollTop) {\n return;\n }\n scrollTop = scrollTop || this._scrollablePanel.scrollTop;\n const range = this._panelService.calculateItems(scrollTop, this.itemsLength, this.bufferAmount);\n this._updateVirtualHeight(range.scrollHeight);\n this._contentPanel.style.transform = `translateY(${range.topPadding}px)`;\n this._zone.run(() => {\n this.update.emit(this.items.slice(range.start, range.end));\n this.scroll.emit({ start: range.start, end: range.end });\n });\n if (isDefined(scrollTop) && this._lastScrollPosition === 0) {\n this._scrollablePanel.scrollTop = scrollTop;\n this._lastScrollPosition = scrollTop;\n }\n }\n _measureDimensions() {\n if (this._panelService.dimensions.itemHeight > 0 || this.itemsLength === 0) {\n return Promise.resolve(this._panelService.dimensions);\n }\n const [first] = this.items;\n this.update.emit([first]);\n return Promise.resolve().then(() => {\n const option = this._dropdown.querySelector(`#${first.htmlId}`);\n const optionHeight = option.clientHeight;\n this._virtualPadding.style.height = `${optionHeight * this.itemsLength}px`;\n const panelHeight = this._scrollablePanel.clientHeight;\n this._panelService.setDimensions(optionHeight, panelHeight);\n return this._panelService.dimensions;\n });\n }\n _fireScrollToEnd(scrollTop) {\n if (this._scrollToEndFired || scrollTop === 0) {\n return;\n }\n const padding = this.virtualScroll ?\n this._virtualPadding :\n this._contentPanel;\n if (scrollTop + this._dropdown.clientHeight >= padding.clientHeight) {\n this._zone.run(() => this.scrollToEnd.emit());\n this._scrollToEndFired = true;\n }\n }\n _calculateCurrentPosition(dropdownEl) {\n if (this.position !== 'auto') {\n return this.position;\n }\n const selectRect = this._select.getBoundingClientRect();\n const scrollTop = document.documentElement.scrollTop || document.body.scrollTop;\n const offsetTop = selectRect.top + window.pageYOffset;\n const height = selectRect.height;\n const dropdownHeight = dropdownEl.getBoundingClientRect().height;\n if (offsetTop + height + dropdownHeight > scrollTop + document.documentElement.clientHeight) {\n return 'top';\n }\n else {\n return 'bottom';\n }\n }\n _appendDropdown() {\n if (!this.appendTo) {\n return;\n }\n this._parent = document.querySelector(this.appendTo);\n if (!this._parent) {\n throw new Error(`appendTo selector ${this.appendTo} did not found any parent element`);\n }\n this._updateXPosition();\n this._parent.appendChild(this._dropdown);\n }\n _updateXPosition() {\n const select = this._select.getBoundingClientRect();\n const parent = this._parent.getBoundingClientRect();\n const offsetLeft = select.left - parent.left;\n this._dropdown.style.left = offsetLeft + 'px';\n this._dropdown.style.width = select.width + 'px';\n this._dropdown.style.minWidth = select.width + 'px';\n }\n _updateYPosition() {\n const select = this._select.getBoundingClientRect();\n const parent = this._parent.getBoundingClientRect();\n const delta = select.height;\n if (this._currentPosition === 'top') {\n const offsetBottom = parent.bottom - select.bottom;\n this._dropdown.style.bottom = offsetBottom + delta + 'px';\n this._dropdown.style.top = 'auto';\n }\n else if (this._currentPosition === 'bottom') {\n const offsetTop = select.top - parent.top;\n this._dropdown.style.top = offsetTop + delta + 'px';\n this._dropdown.style.bottom = 'auto';\n }\n }\n}\nNgDropdownPanelComponent.ɵfac = function NgDropdownPanelComponent_Factory(t) { return new (t || NgDropdownPanelComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(NgDropdownPanelService), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT, 8)); };\nNgDropdownPanelComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgDropdownPanelComponent, selectors: [[\"ng-dropdown-panel\"]], viewQuery: function NgDropdownPanelComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(_c0, 7, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c1, 7, ElementRef);\n ɵngcc0.ɵɵviewQuery(_c2, 7, ElementRef);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.contentElementRef = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.scrollElementRef = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.paddingElementRef = _t.first);\n } }, hostBindings: function NgDropdownPanelComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mousedown\", function NgDropdownPanelComponent_mousedown_HostBindingHandler($event) { return ctx.handleMousedown($event); });\n } }, inputs: { items: \"items\", position: \"position\", virtualScroll: \"virtualScroll\", filterValue: \"filterValue\", markedItem: \"markedItem\", appendTo: \"appendTo\", bufferAmount: \"bufferAmount\", headerTemplate: \"headerTemplate\", footerTemplate: \"footerTemplate\" }, outputs: { update: \"update\", scroll: \"scroll\", scrollToEnd: \"scrollToEnd\", outsideClick: \"outsideClick\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c4, decls: 9, vars: 6, consts: [[\"class\", \"ng-dropdown-header\", 4, \"ngIf\"], [1, \"ng-dropdown-panel-items\", \"scroll-host\"], [\"scroll\", \"\"], [\"padding\", \"\"], [\"content\", \"\"], [\"class\", \"ng-dropdown-footer\", 4, \"ngIf\"], [1, \"ng-dropdown-header\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"ng-dropdown-footer\"]], template: function NgDropdownPanelComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵtemplate(0, NgDropdownPanelComponent_div_0_Template, 2, 4, \"div\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1, 2);\n ɵngcc0.ɵɵelement(3, \"div\", null, 3);\n ɵngcc0.ɵɵelementStart(5, \"div\", null, 4);\n ɵngcc0.ɵɵprojection(7);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(8, NgDropdownPanelComponent_div_8_Template, 2, 4, \"div\", 5);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.headerTemplate);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵclassProp(\"total-padding\", ctx.virtualScroll);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵclassProp(\"scrollable-content\", ctx.virtualScroll && ctx.items.length);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.footerTemplate);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], encapsulation: 2, changeDetection: 0 });\nNgDropdownPanelComponent.ctorParameters = () => [\n { type: Renderer2 },\n { type: NgZone },\n { type: NgDropdownPanelService },\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }\n];\nNgDropdownPanelComponent.propDecorators = {\n items: [{ type: Input }],\n markedItem: [{ type: Input }],\n position: [{ type: Input }],\n appendTo: [{ type: Input }],\n bufferAmount: [{ type: Input }],\n virtualScroll: [{ type: Input }],\n headerTemplate: [{ type: Input }],\n footerTemplate: [{ type: Input }],\n filterValue: [{ type: Input }],\n update: [{ type: Output }],\n scroll: [{ type: Output }],\n scrollToEnd: [{ type: Output }],\n outsideClick: [{ type: Output }],\n contentElementRef: [{ type: ViewChild, args: ['content', { read: ElementRef, static: true },] }],\n scrollElementRef: [{ type: ViewChild, args: ['scroll', { read: ElementRef, static: true },] }],\n paddingElementRef: [{ type: ViewChild, args: ['padding', { read: ElementRef, static: true },] }],\n handleMousedown: [{ type: HostListener, args: ['mousedown', ['$event'],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgDropdownPanelComponent, [{\n type: Component,\n args: [{\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n selector: 'ng-dropdown-panel',\n template: `\n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n \n
    \n `\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.NgZone }, { type: NgDropdownPanelService }, { type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { items: [{\n type: Input\n }], position: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], filterValue: [{\n type: Input\n }], update: [{\n type: Output\n }], scroll: [{\n type: Output\n }], scrollToEnd: [{\n type: Output\n }], outsideClick: [{\n type: Output\n }], handleMousedown: [{\n type: HostListener,\n args: ['mousedown', ['$event']]\n }], markedItem: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], bufferAmount: [{\n type: Input\n }], headerTemplate: [{\n type: Input\n }], footerTemplate: [{\n type: Input\n }], contentElementRef: [{\n type: ViewChild,\n args: ['content', { read: ElementRef, static: true }]\n }], scrollElementRef: [{\n type: ViewChild,\n args: ['scroll', { read: ElementRef, static: true }]\n }], paddingElementRef: [{\n type: ViewChild,\n args: ['padding', { read: ElementRef, static: true }]\n }] }); })();\n\nclass NgOptionComponent {\n constructor(elementRef) {\n this.elementRef = elementRef;\n this.stateChange$ = new Subject();\n this._disabled = false;\n }\n get disabled() { return this._disabled; }\n set disabled(value) { this._disabled = this._isDisabled(value); }\n get label() {\n return (this.elementRef.nativeElement.textContent || '').trim();\n }\n ngOnChanges(changes) {\n if (changes.disabled) {\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled\n });\n }\n }\n ngAfterViewChecked() {\n if (this.label !== this._previousLabel) {\n this._previousLabel = this.label;\n this.stateChange$.next({\n value: this.value,\n disabled: this._disabled,\n label: this.elementRef.nativeElement.innerHTML\n });\n }\n }\n ngOnDestroy() {\n this.stateChange$.complete();\n }\n _isDisabled(value) {\n return value != null && `${value}` !== 'false';\n }\n}\nNgOptionComponent.ɵfac = function NgOptionComponent_Factory(t) { return new (t || NgOptionComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nNgOptionComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgOptionComponent, selectors: [[\"ng-option\"]], inputs: { disabled: \"disabled\", value: \"value\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], ngContentSelectors: _c4, decls: 1, vars: 0, template: function NgOptionComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵprojection(0);\n } }, encapsulation: 2, changeDetection: 0 });\nNgOptionComponent.ctorParameters = () => [\n { type: ElementRef }\n];\nNgOptionComponent.propDecorators = {\n value: [{ type: Input }],\n disabled: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgOptionComponent, [{\n type: Component,\n args: [{\n selector: 'ng-option',\n changeDetection: ChangeDetectionStrategy.OnPush,\n template: ``\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { disabled: [{\n type: Input\n }], value: [{\n type: Input\n }] }); })();\n\nclass NgSelectConfig {\n constructor() {\n this.notFoundText = 'No items found';\n this.typeToSearchText = 'Type to search';\n this.addTagText = 'Add item';\n this.loadingText = 'Loading...';\n this.clearAllText = 'Clear all';\n this.disableVirtualScroll = true;\n this.openOnEnter = true;\n this.appearance = 'underline';\n }\n}\nNgSelectConfig.ɵfac = function NgSelectConfig_Factory(t) { return new (t || NgSelectConfig)(); };\nNgSelectConfig.ɵprov = ɵɵdefineInjectable({ factory: function NgSelectConfig_Factory() { return new NgSelectConfig(); }, token: NgSelectConfig, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSelectConfig, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return []; }, null); })();\n\nconst SELECTION_MODEL_FACTORY = new InjectionToken('ng-select-selection-model');\nclass NgSelectComponent {\n constructor(classes, autoFocus, config, newSelectionModel, _elementRef, _cd, _console) {\n this.classes = classes;\n this.autoFocus = autoFocus;\n this._cd = _cd;\n this._console = _console;\n this.markFirst = true;\n this.dropdownPosition = 'auto';\n this.loading = false;\n this.closeOnSelect = true;\n this.hideSelected = false;\n this.selectOnTab = false;\n this.bufferAmount = 4;\n this.selectableGroup = false;\n this.selectableGroupAsModel = true;\n this.searchFn = null;\n this.trackByFn = null;\n this.clearOnBackspace = true;\n this.labelForId = null;\n this.inputAttrs = {};\n this.readonly = false;\n this.searchWhileComposing = true;\n this.minTermLength = 0;\n this.editableSearchTerm = false;\n this.keyDownFn = (_) => true;\n this.multiple = false;\n this.addTag = false;\n this.searchable = true;\n this.clearable = true;\n this.isOpen = false;\n // output events\n this.blurEvent = new EventEmitter();\n this.focusEvent = new EventEmitter();\n this.changeEvent = new EventEmitter();\n this.openEvent = new EventEmitter();\n this.closeEvent = new EventEmitter();\n this.searchEvent = new EventEmitter();\n this.clearEvent = new EventEmitter();\n this.addEvent = new EventEmitter();\n this.removeEvent = new EventEmitter();\n this.scroll = new EventEmitter();\n this.scrollToEnd = new EventEmitter();\n this.viewPortItems = [];\n this.searchTerm = null;\n this.dropdownId = newId();\n this.escapeHTML = true;\n this.useDefaultClass = true;\n this._items = [];\n this._defaultLabel = 'label';\n this._pressedKeys = [];\n this._isComposing = false;\n this._destroy$ = new Subject();\n this._keyPress$ = new Subject();\n this._onChange = (_) => { };\n this._onTouched = () => { };\n this.clearItem = (item) => {\n const option = this.selectedItems.find(x => x.value === item);\n this.unselect(option);\n };\n this.trackByOption = (_, item) => {\n if (this.trackByFn) {\n return this.trackByFn(item.value);\n }\n return item;\n };\n this._mergeGlobalConfig(config);\n this.itemsList = new ItemsList(this, newSelectionModel());\n this.element = _elementRef.nativeElement;\n }\n get items() { return this._items; }\n ;\n set items(value) {\n this._itemsAreUsed = true;\n this._items = value;\n }\n ;\n get compareWith() { return this._compareWith; }\n set compareWith(fn) {\n if (fn !== undefined && fn !== null && !isFunction(fn)) {\n throw Error('`compareWith` must be a function.');\n }\n this._compareWith = fn;\n }\n get clearSearchOnAdd() { return isDefined(this._clearSearchOnAdd) ? this._clearSearchOnAdd : this.closeOnSelect; }\n ;\n set clearSearchOnAdd(value) {\n this._clearSearchOnAdd = value;\n }\n ;\n get disabled() { return this.readonly || this._disabled; }\n ;\n get filtered() { return (!!this.searchTerm && this.searchable || this._isComposing); }\n ;\n get _editableSearchTerm() {\n return this.editableSearchTerm && !this.multiple;\n }\n get selectedItems() {\n return this.itemsList.selectedItems;\n }\n get selectedValues() {\n return this.selectedItems.map(x => x.value);\n }\n get hasValue() {\n return this.selectedItems.length > 0;\n }\n get currentPanelPosition() {\n if (this.dropdownPanel) {\n return this.dropdownPanel.currentPosition;\n }\n return undefined;\n }\n ngOnInit() {\n this._handleKeyPresses();\n this._setInputAttributes();\n }\n ngOnChanges(changes) {\n if (changes.multiple) {\n this.itemsList.clearSelected();\n }\n if (changes.items) {\n this._setItems(changes.items.currentValue || []);\n }\n if (changes.isOpen) {\n this._manualOpen = isDefined(changes.isOpen.currentValue);\n }\n }\n ngAfterViewInit() {\n if (!this._itemsAreUsed) {\n this.escapeHTML = false;\n this._setItemsFromNgOptions();\n }\n if (isDefined(this.autoFocus)) {\n this.focus();\n }\n }\n ngOnDestroy() {\n this._destroy$.next();\n this._destroy$.complete();\n }\n handleKeyDown($event) {\n const keyCode = KeyCode[$event.which];\n if (keyCode) {\n if (this.keyDownFn($event) === false) {\n return;\n }\n this.handleKeyCode($event);\n }\n else if ($event.key && $event.key.length === 1) {\n this._keyPress$.next($event.key.toLocaleLowerCase());\n }\n }\n handleKeyCode($event) {\n switch ($event.which) {\n case KeyCode.ArrowDown:\n this._handleArrowDown($event);\n break;\n case KeyCode.ArrowUp:\n this._handleArrowUp($event);\n break;\n case KeyCode.Space:\n this._handleSpace($event);\n break;\n case KeyCode.Enter:\n this._handleEnter($event);\n break;\n case KeyCode.Tab:\n this._handleTab($event);\n break;\n case KeyCode.Esc:\n this.close();\n $event.preventDefault();\n break;\n case KeyCode.Backspace:\n this._handleBackspace();\n break;\n }\n }\n handleMousedown($event) {\n const target = $event.target;\n if (target.tagName !== 'INPUT') {\n $event.preventDefault();\n }\n if (target.classList.contains('ng-clear-wrapper')) {\n this.handleClearClick();\n return;\n }\n if (target.classList.contains('ng-arrow-wrapper')) {\n this.handleArrowClick();\n return;\n }\n if (target.classList.contains('ng-value-icon')) {\n return;\n }\n if (!this.focused) {\n this.focus();\n }\n if (this.searchable) {\n this.open();\n }\n else {\n this.toggle();\n }\n }\n handleArrowClick() {\n if (this.isOpen) {\n this.close();\n }\n else {\n this.open();\n }\n }\n handleClearClick() {\n if (this.hasValue) {\n this.itemsList.clearSelected(true);\n this._updateNgModel();\n }\n this._clearSearch();\n this.focus();\n this.clearEvent.emit();\n this._onSelectionChanged();\n }\n clearModel() {\n if (!this.clearable) {\n return;\n }\n this.itemsList.clearSelected();\n this._updateNgModel();\n }\n writeValue(value) {\n this.itemsList.clearSelected();\n this._handleWriteValue(value);\n this._cd.markForCheck();\n }\n registerOnChange(fn) {\n this._onChange = fn;\n }\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n setDisabledState(state) {\n this._disabled = state;\n this._cd.markForCheck();\n }\n toggle() {\n if (!this.isOpen) {\n this.open();\n }\n else {\n this.close();\n }\n }\n open() {\n if (this.disabled || this.isOpen || this.itemsList.maxItemsSelected || this._manualOpen) {\n return;\n }\n if (!this._isTypeahead && !this.addTag && this.itemsList.noItemsToSelect) {\n return;\n }\n this.isOpen = true;\n this.itemsList.markSelectedOrDefault(this.markFirst);\n this.openEvent.emit();\n if (!this.searchTerm) {\n this.focus();\n }\n this.detectChanges();\n }\n close() {\n if (!this.isOpen || this._manualOpen) {\n return;\n }\n this.isOpen = false;\n this._isComposing = false;\n if (!this._editableSearchTerm) {\n this._clearSearch();\n }\n else {\n this.itemsList.resetFilteredItems();\n }\n this.itemsList.unmarkItem();\n this._onTouched();\n this.closeEvent.emit();\n this._cd.markForCheck();\n }\n toggleItem(item) {\n if (!item || item.disabled || this.disabled) {\n return;\n }\n if (this.multiple && item.selected) {\n this.unselect(item);\n }\n else {\n this.select(item);\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n this._onSelectionChanged();\n }\n select(item) {\n if (!item.selected) {\n this.itemsList.select(item);\n if (this.clearSearchOnAdd && !this._editableSearchTerm) {\n this._clearSearch();\n }\n this._updateNgModel();\n if (this.multiple) {\n this.addEvent.emit(item.value);\n }\n }\n if (this.closeOnSelect || this.itemsList.noItemsToSelect) {\n this.close();\n }\n }\n focus() {\n this.searchInput.nativeElement.focus();\n }\n blur() {\n this.searchInput.nativeElement.blur();\n }\n unselect(item) {\n if (!item) {\n return;\n }\n this.itemsList.unselect(item);\n this.focus();\n this._updateNgModel();\n this.removeEvent.emit(item);\n }\n selectTag() {\n let tag;\n if (isFunction(this.addTag)) {\n tag = this.addTag(this.searchTerm);\n }\n else {\n tag = this._primitive ? this.searchTerm : { [this.bindLabel]: this.searchTerm };\n }\n const handleTag = (item) => this._isTypeahead || !this.isOpen ? this.itemsList.mapItem(item, null) : this.itemsList.addItem(item);\n if (isPromise(tag)) {\n tag.then(item => this.select(handleTag(item))).catch(() => { });\n }\n else if (tag) {\n this.select(handleTag(tag));\n }\n }\n showClear() {\n return this.clearable && (this.hasValue || this.searchTerm) && !this.disabled;\n }\n get showAddTag() {\n if (!this._validTerm) {\n return false;\n }\n const term = this.searchTerm.toLowerCase().trim();\n return this.addTag &&\n (!this.itemsList.filteredItems.some(x => x.label.toLowerCase() === term) &&\n (!this.hideSelected && this.isOpen || !this.selectedItems.some(x => x.label.toLowerCase() === term))) &&\n !this.loading;\n }\n showNoItemsFound() {\n const empty = this.itemsList.filteredItems.length === 0;\n return ((empty && !this._isTypeahead && !this.loading) ||\n (empty && this._isTypeahead && this._validTerm && !this.loading)) &&\n !this.showAddTag;\n }\n showTypeToSearch() {\n const empty = this.itemsList.filteredItems.length === 0;\n return empty && this._isTypeahead && !this._validTerm && !this.loading;\n }\n onCompositionStart() {\n this._isComposing = true;\n }\n onCompositionEnd(term) {\n this._isComposing = false;\n if (this.searchWhileComposing) {\n return;\n }\n this.filter(term);\n }\n filter(term) {\n if (this._isComposing && !this.searchWhileComposing) {\n return;\n }\n this.searchTerm = term;\n if (this._isTypeahead && (this._validTerm || this.minTermLength === 0)) {\n this.typeahead.next(term);\n }\n if (!this._isTypeahead) {\n this.itemsList.filter(this.searchTerm);\n if (this.isOpen) {\n this.itemsList.markSelectedOrDefault(this.markFirst);\n }\n }\n this.searchEvent.emit({ term, items: this.itemsList.filteredItems.map(x => x.value) });\n this.open();\n }\n onInputFocus($event) {\n if (this.focused) {\n return;\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n this.element.classList.add('ng-select-focused');\n this.focusEvent.emit($event);\n this.focused = true;\n }\n onInputBlur($event) {\n this.element.classList.remove('ng-select-focused');\n this.blurEvent.emit($event);\n if (!this.isOpen && !this.disabled) {\n this._onTouched();\n }\n if (this._editableSearchTerm) {\n this._setSearchTermFromItems();\n }\n this.focused = false;\n }\n onItemHover(item) {\n if (item.disabled) {\n return;\n }\n this.itemsList.markItem(item);\n }\n detectChanges() {\n if (!this._cd.destroyed) {\n this._cd.detectChanges();\n }\n }\n _setSearchTermFromItems() {\n const selected = this.selectedItems && this.selectedItems[0];\n this.searchTerm = (selected && selected.label) || null;\n }\n _setItems(items) {\n const firstItem = items[0];\n this.bindLabel = this.bindLabel || this._defaultLabel;\n this._primitive = isDefined(firstItem) ? !isObject(firstItem) : this._primitive || this.bindLabel === this._defaultLabel;\n this.itemsList.setItems(items);\n if (items.length > 0 && this.hasValue) {\n this.itemsList.mapSelectedItems();\n }\n if (this.isOpen && isDefined(this.searchTerm) && !this._isTypeahead) {\n this.itemsList.filter(this.searchTerm);\n }\n if (this._isTypeahead || this.isOpen) {\n this.itemsList.markSelectedOrDefault(this.markFirst);\n }\n }\n _setItemsFromNgOptions() {\n const mapNgOptions = (options) => {\n this.items = options.map(option => ({\n $ngOptionValue: option.value,\n $ngOptionLabel: option.elementRef.nativeElement.innerHTML,\n disabled: option.disabled\n }));\n this.itemsList.setItems(this.items);\n if (this.hasValue) {\n this.itemsList.mapSelectedItems();\n }\n this.detectChanges();\n };\n const handleOptionChange = () => {\n const changedOrDestroyed = merge(this.ngOptions.changes, this._destroy$);\n merge(...this.ngOptions.map(option => option.stateChange$))\n .pipe(takeUntil(changedOrDestroyed))\n .subscribe(option => {\n const item = this.itemsList.findItem(option.value);\n item.disabled = option.disabled;\n item.label = option.label || item.label;\n this._cd.detectChanges();\n });\n };\n this.ngOptions.changes\n .pipe(startWith(this.ngOptions), takeUntil(this._destroy$))\n .subscribe(options => {\n this.bindLabel = this._defaultLabel;\n mapNgOptions(options);\n handleOptionChange();\n });\n }\n _isValidWriteValue(value) {\n if (!isDefined(value) || (this.multiple && value === '') || Array.isArray(value) && value.length === 0) {\n return false;\n }\n const validateBinding = (item) => {\n if (!isDefined(this.compareWith) && isObject(item) && this.bindValue) {\n this._console.warn(`Setting object(${JSON.stringify(item)}) as your model with bindValue is not allowed unless [compareWith] is used.`);\n return false;\n }\n return true;\n };\n if (this.multiple) {\n if (!Array.isArray(value)) {\n this._console.warn('Multiple select ngModel should be array.');\n return false;\n }\n return value.every(item => validateBinding(item));\n }\n else {\n return validateBinding(value);\n }\n }\n _handleWriteValue(ngModel) {\n if (!this._isValidWriteValue(ngModel)) {\n return;\n }\n const select = (val) => {\n let item = this.itemsList.findItem(val);\n if (item) {\n this.itemsList.select(item);\n }\n else {\n const isValObject = isObject(val);\n const isPrimitive = !isValObject && !this.bindValue;\n if ((isValObject || isPrimitive)) {\n this.itemsList.select(this.itemsList.mapItem(val, null));\n }\n else if (this.bindValue) {\n item = {\n [this.bindLabel]: null,\n [this.bindValue]: val\n };\n this.itemsList.select(this.itemsList.mapItem(item, null));\n }\n }\n };\n if (this.multiple) {\n ngModel.forEach(item => select(item));\n }\n else {\n select(ngModel);\n }\n }\n _handleKeyPresses() {\n if (this.searchable) {\n return;\n }\n this._keyPress$\n .pipe(takeUntil(this._destroy$), tap(letter => this._pressedKeys.push(letter)), debounceTime(200), filter(() => this._pressedKeys.length > 0), map(() => this._pressedKeys.join('')))\n .subscribe(term => {\n const item = this.itemsList.findByLabel(term);\n if (item) {\n if (this.isOpen) {\n this.itemsList.markItem(item);\n this._scrollToMarked();\n this._cd.markForCheck();\n }\n else {\n this.select(item);\n }\n }\n this._pressedKeys = [];\n });\n }\n _setInputAttributes() {\n const input = this.searchInput.nativeElement;\n const attributes = Object.assign({ type: 'text', autocorrect: 'off', autocapitalize: 'off', autocomplete: this.labelForId ? 'off' : this.dropdownId }, this.inputAttrs);\n for (const key of Object.keys(attributes)) {\n input.setAttribute(key, attributes[key]);\n }\n }\n _updateNgModel() {\n const model = [];\n for (const item of this.selectedItems) {\n if (this.bindValue) {\n let value = null;\n if (item.children) {\n const groupKey = this.groupValue ? this.bindValue : this.groupBy;\n value = item.value[groupKey || this.groupBy];\n }\n else {\n value = this.itemsList.resolveNested(item.value, this.bindValue);\n }\n model.push(value);\n }\n else {\n model.push(item.value);\n }\n }\n const selected = this.selectedItems.map(x => x.value);\n if (this.multiple) {\n this._onChange(model);\n this.changeEvent.emit(selected);\n }\n else {\n this._onChange(isDefined(model[0]) ? model[0] : null);\n this.changeEvent.emit(selected[0]);\n }\n this._cd.markForCheck();\n }\n _clearSearch() {\n if (!this.searchTerm) {\n return;\n }\n this._changeSearch(null);\n this.itemsList.resetFilteredItems();\n }\n _changeSearch(searchTerm) {\n this.searchTerm = searchTerm;\n if (this._isTypeahead) {\n this.typeahead.next(searchTerm);\n }\n }\n _scrollToMarked() {\n if (!this.isOpen || !this.dropdownPanel) {\n return;\n }\n this.dropdownPanel.scrollTo(this.itemsList.markedItem);\n }\n _scrollToTag() {\n if (!this.isOpen || !this.dropdownPanel) {\n return;\n }\n this.dropdownPanel.scrollToTag();\n }\n _onSelectionChanged() {\n if (this.isOpen && this.multiple && this.appendTo) {\n // Make sure items are rendered.\n this._cd.detectChanges();\n this.dropdownPanel.adjustPosition();\n }\n }\n _handleTab($event) {\n if (this.isOpen === false && !this.addTag) {\n return;\n }\n if (this.selectOnTab) {\n if (this.itemsList.markedItem) {\n this.toggleItem(this.itemsList.markedItem);\n $event.preventDefault();\n }\n else if (this.showAddTag) {\n this.selectTag();\n $event.preventDefault();\n }\n else {\n this.close();\n }\n }\n else {\n this.close();\n }\n }\n _handleEnter($event) {\n if (this.isOpen || this._manualOpen) {\n if (this.itemsList.markedItem) {\n this.toggleItem(this.itemsList.markedItem);\n }\n else if (this.showAddTag) {\n this.selectTag();\n }\n }\n else if (this.openOnEnter) {\n this.open();\n }\n else {\n return;\n }\n $event.preventDefault();\n }\n _handleSpace($event) {\n if (this.isOpen || this._manualOpen) {\n return;\n }\n this.open();\n $event.preventDefault();\n }\n _handleArrowDown($event) {\n if (this._nextItemIsTag(+1)) {\n this.itemsList.unmarkItem();\n this._scrollToTag();\n }\n else {\n this.itemsList.markNextItem();\n this._scrollToMarked();\n }\n this.open();\n $event.preventDefault();\n }\n _handleArrowUp($event) {\n if (!this.isOpen) {\n return;\n }\n if (this._nextItemIsTag(-1)) {\n this.itemsList.unmarkItem();\n this._scrollToTag();\n }\n else {\n this.itemsList.markPreviousItem();\n this._scrollToMarked();\n }\n $event.preventDefault();\n }\n _nextItemIsTag(nextStep) {\n const nextIndex = this.itemsList.markedIndex + nextStep;\n return this.addTag && this.searchTerm\n && this.itemsList.markedItem\n && (nextIndex < 0 || nextIndex === this.itemsList.filteredItems.length);\n }\n _handleBackspace() {\n if (this.searchTerm || !this.clearable || !this.clearOnBackspace || !this.hasValue) {\n return;\n }\n if (this.multiple) {\n this.unselect(this.itemsList.lastSelectedItem);\n }\n else {\n this.clearModel();\n }\n }\n get _isTypeahead() {\n return this.typeahead && this.typeahead.observers.length > 0;\n }\n get _validTerm() {\n const term = this.searchTerm && this.searchTerm.trim();\n return term && term.length >= this.minTermLength;\n }\n _mergeGlobalConfig(config) {\n this.placeholder = this.placeholder || config.placeholder;\n this.notFoundText = this.notFoundText || config.notFoundText;\n this.typeToSearchText = this.typeToSearchText || config.typeToSearchText;\n this.addTagText = this.addTagText || config.addTagText;\n this.loadingText = this.loadingText || config.loadingText;\n this.clearAllText = this.clearAllText || config.clearAllText;\n this.virtualScroll = isDefined(this.virtualScroll)\n ? this.virtualScroll\n : isDefined(config.disableVirtualScroll) ? !config.disableVirtualScroll : false;\n this.openOnEnter = isDefined(this.openOnEnter) ? this.openOnEnter : config.openOnEnter;\n this.appendTo = this.appendTo || config.appendTo;\n this.bindValue = this.bindValue || config.bindValue;\n this.bindLabel = this.bindLabel || config.bindLabel;\n this.appearance = this.appearance || config.appearance;\n }\n}\nNgSelectComponent.ɵfac = function NgSelectComponent_Factory(t) { return new (t || NgSelectComponent)(ɵngcc0.ɵɵinjectAttribute('class'), ɵngcc0.ɵɵinjectAttribute('autofocus'), ɵngcc0.ɵɵdirectiveInject(NgSelectConfig), ɵngcc0.ɵɵdirectiveInject(SELECTION_MODEL_FACTORY), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ConsoleService)); };\nNgSelectComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgSelectComponent, selectors: [[\"ng-select\"]], contentQueries: function NgSelectComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgOptionTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgOptgroupTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgLabelTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgMultiLabelTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgHeaderTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgFooterTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgNotFoundTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgTypeToSearchTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgLoadingTextTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgTagTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgLoadingSpinnerTemplateDirective, 5, TemplateRef);\n ɵngcc0.ɵɵcontentQuery(dirIndex, NgOptionComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optionTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.optgroupTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.labelTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.multiLabelTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.headerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.footerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.notFoundTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.typeToSearchTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.loadingTextTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.tagTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.loadingSpinnerTemplate = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.ngOptions = _t);\n } }, viewQuery: function NgSelectComponent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgDropdownPanelComponent, 5);\n ɵngcc0.ɵɵviewQuery(_c5, 7);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.dropdownPanel = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.searchInput = _t.first);\n } }, hostVars: 20, hostBindings: function NgSelectComponent_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"keydown\", function NgSelectComponent_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"ng-select\", ctx.useDefaultClass)(\"ng-select-single\", !ctx.multiple)(\"ng-select-multiple\", ctx.multiple)(\"ng-select-taggable\", ctx.addTag)(\"ng-select-searchable\", ctx.searchable)(\"ng-select-clearable\", ctx.clearable)(\"ng-select-opened\", ctx.isOpen)(\"ng-select-disabled\", ctx.disabled)(\"ng-select-filtered\", ctx.filtered)(\"ng-select-typeahead\", ctx.typeahead);\n } }, inputs: { markFirst: \"markFirst\", dropdownPosition: \"dropdownPosition\", loading: \"loading\", closeOnSelect: \"closeOnSelect\", hideSelected: \"hideSelected\", selectOnTab: \"selectOnTab\", bufferAmount: \"bufferAmount\", selectableGroup: \"selectableGroup\", selectableGroupAsModel: \"selectableGroupAsModel\", searchFn: \"searchFn\", trackByFn: \"trackByFn\", clearOnBackspace: \"clearOnBackspace\", labelForId: \"labelForId\", inputAttrs: \"inputAttrs\", readonly: \"readonly\", searchWhileComposing: \"searchWhileComposing\", minTermLength: \"minTermLength\", editableSearchTerm: \"editableSearchTerm\", keyDownFn: \"keyDownFn\", multiple: \"multiple\", addTag: \"addTag\", searchable: \"searchable\", clearable: \"clearable\", isOpen: \"isOpen\", items: \"items\", compareWith: \"compareWith\", clearSearchOnAdd: \"clearSearchOnAdd\", bindLabel: \"bindLabel\", placeholder: \"placeholder\", notFoundText: \"notFoundText\", typeToSearchText: \"typeToSearchText\", addTagText: \"addTagText\", loadingText: \"loadingText\", clearAllText: \"clearAllText\", virtualScroll: \"virtualScroll\", openOnEnter: \"openOnEnter\", appendTo: \"appendTo\", bindValue: \"bindValue\", appearance: \"appearance\", maxSelectedItems: \"maxSelectedItems\", groupBy: \"groupBy\", groupValue: \"groupValue\", tabIndex: \"tabIndex\", typeahead: \"typeahead\" }, outputs: { blurEvent: \"blur\", focusEvent: \"focus\", changeEvent: \"change\", openEvent: \"open\", closeEvent: \"close\", searchEvent: \"search\", clearEvent: \"clear\", addEvent: \"add\", removeEvent: \"remove\", scroll: \"scroll\", scrollToEnd: \"scrollToEnd\" }, features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgSelectComponent),\n multi: true\n }, NgDropdownPanelService]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 14, vars: 19, consts: [[1, \"ng-select-container\", 3, \"mousedown\"], [1, \"ng-value-container\"], [1, \"ng-placeholder\"], [4, \"ngIf\"], [\"role\", \"combobox\", \"aria-haspopup\", \"listbox\", 1, \"ng-input\"], [\"aria-autocomplete\", \"list\", 3, \"readOnly\", \"disabled\", \"value\", \"input\", \"compositionstart\", \"compositionend\", \"focus\", \"blur\", \"change\"], [\"searchInput\", \"\"], [\"class\", \"ng-clear-wrapper\", 3, \"title\", 4, \"ngIf\"], [1, \"ng-arrow-wrapper\"], [1, \"ng-arrow\"], [\"class\", \"ng-dropdown-panel\", \"role\", \"listbox\", \"aria-label\", \"Options list\", 3, \"virtualScroll\", \"bufferAmount\", \"appendTo\", \"position\", \"headerTemplate\", \"footerTemplate\", \"filterValue\", \"items\", \"markedItem\", \"ng-select-multiple\", \"ngClass\", \"id\", \"update\", \"scroll\", \"scrollToEnd\", \"outsideClick\", 4, \"ngIf\"], [\"class\", \"ng-value\", 3, \"ng-value-disabled\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [1, \"ng-value\"], [\"defaultLabelTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"aria-hidden\", \"true\", 1, \"ng-value-icon\", \"left\", 3, \"click\"], [1, \"ng-value-label\", 3, \"ngItemLabel\", \"escape\"], [\"defaultLoadingSpinnerTemplate\", \"\"], [3, \"ngTemplateOutlet\"], [1, \"ng-spinner-loader\"], [1, \"ng-clear-wrapper\", 3, \"title\"], [\"aria-hidden\", \"true\", 1, \"ng-clear\"], [\"role\", \"listbox\", \"aria-label\", \"Options list\", 1, \"ng-dropdown-panel\", 3, \"virtualScroll\", \"bufferAmount\", \"appendTo\", \"position\", \"headerTemplate\", \"footerTemplate\", \"filterValue\", \"items\", \"markedItem\", \"ngClass\", \"id\", \"update\", \"scroll\", \"scrollToEnd\", \"outsideClick\"], [\"class\", \"ng-option\", 3, \"ng-option-disabled\", \"ng-option-selected\", \"ng-optgroup\", \"ng-option\", \"ng-option-child\", \"ng-option-marked\", \"click\", \"mouseover\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"ng-option\", \"role\", \"option\", 3, \"ng-option-marked\", \"mouseover\", \"click\", 4, \"ngIf\"], [1, \"ng-option\", 3, \"click\", \"mouseover\"], [\"defaultOptionTemplate\", \"\"], [1, \"ng-option-label\", 3, \"ngItemLabel\", \"escape\"], [\"role\", \"option\", 1, \"ng-option\", 3, \"mouseover\", \"click\"], [\"defaultTagTemplate\", \"\"], [1, \"ng-tag-label\"], [\"defaultNotFoundTemplate\", \"\"], [1, \"ng-option\", \"ng-option-disabled\"], [\"defaultTypeToSearchTemplate\", \"\"], [\"defaultLoadingTextTemplate\", \"\"]], template: function NgSelectComponent_Template(rf, ctx) { if (rf & 1) {\n const _r52 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0);\n ɵngcc0.ɵɵlistener(\"mousedown\", function NgSelectComponent_Template_div_mousedown_0_listener($event) { return ctx.handleMousedown($event); });\n ɵngcc0.ɵɵelementStart(1, \"div\", 1)(2, \"div\", 2);\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, NgSelectComponent_ng_container_4_Template, 2, 2, \"ng-container\", 3);\n ɵngcc0.ɵɵtemplate(5, NgSelectComponent_5_Template, 1, 5, null, 3);\n ɵngcc0.ɵɵelementStart(6, \"div\", 4)(7, \"input\", 5, 6);\n ɵngcc0.ɵɵlistener(\"input\", function NgSelectComponent_Template_input_input_7_listener() { ɵngcc0.ɵɵrestoreView(_r52); const _r2 = ɵngcc0.ɵɵreference(8); return ctx.filter(_r2.value); })(\"compositionstart\", function NgSelectComponent_Template_input_compositionstart_7_listener() { return ctx.onCompositionStart(); })(\"compositionend\", function NgSelectComponent_Template_input_compositionend_7_listener() { ɵngcc0.ɵɵrestoreView(_r52); const _r2 = ɵngcc0.ɵɵreference(8); return ctx.onCompositionEnd(_r2.value); })(\"focus\", function NgSelectComponent_Template_input_focus_7_listener($event) { return ctx.onInputFocus($event); })(\"blur\", function NgSelectComponent_Template_input_blur_7_listener($event) { return ctx.onInputBlur($event); })(\"change\", function NgSelectComponent_Template_input_change_7_listener($event) { return $event.stopPropagation(); });\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵtemplate(9, NgSelectComponent_ng_container_9_Template, 4, 1, \"ng-container\", 3);\n ɵngcc0.ɵɵtemplate(10, NgSelectComponent_span_10_Template, 3, 1, \"span\", 7);\n ɵngcc0.ɵɵelementStart(11, \"span\", 8);\n ɵngcc0.ɵɵelement(12, \"span\", 9);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵtemplate(13, NgSelectComponent_ng_dropdown_panel_13_Template, 7, 19, \"ng-dropdown-panel\", 10);\n } if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"ng-appearance-outline\", ctx.appearance === \"outline\")(\"ng-has-value\", ctx.hasValue);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵtextInterpolate(ctx.placeholder);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", (!ctx.multiLabelTemplate || !ctx.multiple) && ctx.selectedItems.length > 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.multiple && ctx.multiLabelTemplate && ctx.selectedValues.length > 0);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"aria-expanded\", ctx.isOpen)(\"aria-owns\", ctx.isOpen ? ctx.dropdownId : null);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"readOnly\", !ctx.searchable || ctx.itemsList.maxItemsSelected)(\"disabled\", ctx.disabled)(\"value\", ctx.searchTerm ? ctx.searchTerm : \"\");\n ɵngcc0.ɵɵattribute(\"id\", ctx.labelForId)(\"tabindex\", ctx.tabIndex)(\"aria-activedescendant\", ctx.isOpen ? ctx.itemsList == null ? null : ctx.itemsList.markedItem == null ? null : ctx.itemsList.markedItem.htmlId : null)(\"aria-controls\", ctx.isOpen ? ctx.dropdownId : null);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.loading);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showClear());\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isOpen);\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, NgItemLabelDirective, ɵngcc1.NgTemplateOutlet, NgDropdownPanelComponent, ɵngcc1.NgClass], styles: [\".ng-select{display:block;position:relative}.ng-select,.ng-select div,.ng-select input,.ng-select span{box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;cursor:default;user-select:none}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{background:none transparent;border:0;box-shadow:none;box-sizing:content-box;cursor:default;outline:none;padding:0;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;padding:0;user-select:none;width:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{left:0;position:absolute;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{z-index:1}.ng-select .ng-clear-wrapper{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;cursor:pointer;position:relative;user-select:none;width:17px}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{-webkit-animation:load8 .8s linear infinite;animation:load8 .8s linear infinite;border:2px solid rgba(66,66,66,.2);border-left-color:#424242;border-radius:50%;font-size:10px;height:17px;margin-right:5px;position:relative;text-indent:-9999em;transform:translateZ(0);width:17px}.ng-select .ng-spinner-loader:after{border-radius:50%;height:17px;width:17px}@-webkit-keyframes load8{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes load8{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.ng-select .ng-arrow-wrapper{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;cursor:pointer;position:relative;text-align:center;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{display:inline-block;height:0;pointer-events:none;position:relative;width:0}.ng-dropdown-panel{-webkit-overflow-scrolling:touch;box-sizing:border-box;opacity:0;position:absolute;width:100%;z-index:1050}.ng-dropdown-panel .ng-dropdown-panel-items{box-sizing:border-box;display:block;height:auto;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-option-label:empty:before{content:\\\"\\\\200b\\\"}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{-webkit-overflow-scrolling:touch;display:block;overflow:hidden;overflow-y:auto;position:relative}.ng-dropdown-panel .scrollable-content{height:100%;left:0;position:absolute;top:0;width:100%}.ng-dropdown-panel .total-padding{opacity:0;width:1px}\"], encapsulation: 2, changeDetection: 0 });\nNgSelectComponent.ctorParameters = () => [\n { type: String, decorators: [{ type: Attribute, args: ['class',] }] },\n { type: undefined, decorators: [{ type: Attribute, args: ['autofocus',] }] },\n { type: NgSelectConfig },\n { type: undefined, decorators: [{ type: Inject, args: [SELECTION_MODEL_FACTORY,] }] },\n { type: ElementRef },\n { type: ChangeDetectorRef },\n { type: ConsoleService }\n];\nNgSelectComponent.propDecorators = {\n bindLabel: [{ type: Input }],\n bindValue: [{ type: Input }],\n markFirst: [{ type: Input }],\n placeholder: [{ type: Input }],\n notFoundText: [{ type: Input }],\n typeToSearchText: [{ type: Input }],\n addTagText: [{ type: Input }],\n loadingText: [{ type: Input }],\n clearAllText: [{ type: Input }],\n appearance: [{ type: Input }],\n dropdownPosition: [{ type: Input }],\n appendTo: [{ type: Input }],\n loading: [{ type: Input }],\n closeOnSelect: [{ type: Input }],\n hideSelected: [{ type: Input }],\n selectOnTab: [{ type: Input }],\n openOnEnter: [{ type: Input }],\n maxSelectedItems: [{ type: Input }],\n groupBy: [{ type: Input }],\n groupValue: [{ type: Input }],\n bufferAmount: [{ type: Input }],\n virtualScroll: [{ type: Input }],\n selectableGroup: [{ type: Input }],\n selectableGroupAsModel: [{ type: Input }],\n searchFn: [{ type: Input }],\n trackByFn: [{ type: Input }],\n clearOnBackspace: [{ type: Input }],\n labelForId: [{ type: Input }],\n inputAttrs: [{ type: Input }],\n tabIndex: [{ type: Input }],\n readonly: [{ type: Input }],\n searchWhileComposing: [{ type: Input }],\n minTermLength: [{ type: Input }],\n editableSearchTerm: [{ type: Input }],\n keyDownFn: [{ type: Input }],\n typeahead: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-typeahead',] }],\n multiple: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-multiple',] }],\n addTag: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-taggable',] }],\n searchable: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-searchable',] }],\n clearable: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-clearable',] }],\n isOpen: [{ type: Input }, { type: HostBinding, args: ['class.ng-select-opened',] }],\n items: [{ type: Input }],\n compareWith: [{ type: Input }],\n clearSearchOnAdd: [{ type: Input }],\n blurEvent: [{ type: Output, args: ['blur',] }],\n focusEvent: [{ type: Output, args: ['focus',] }],\n changeEvent: [{ type: Output, args: ['change',] }],\n openEvent: [{ type: Output, args: ['open',] }],\n closeEvent: [{ type: Output, args: ['close',] }],\n searchEvent: [{ type: Output, args: ['search',] }],\n clearEvent: [{ type: Output, args: ['clear',] }],\n addEvent: [{ type: Output, args: ['add',] }],\n removeEvent: [{ type: Output, args: ['remove',] }],\n scroll: [{ type: Output, args: ['scroll',] }],\n scrollToEnd: [{ type: Output, args: ['scrollToEnd',] }],\n optionTemplate: [{ type: ContentChild, args: [NgOptionTemplateDirective, { read: TemplateRef },] }],\n optgroupTemplate: [{ type: ContentChild, args: [NgOptgroupTemplateDirective, { read: TemplateRef },] }],\n labelTemplate: [{ type: ContentChild, args: [NgLabelTemplateDirective, { read: TemplateRef },] }],\n multiLabelTemplate: [{ type: ContentChild, args: [NgMultiLabelTemplateDirective, { read: TemplateRef },] }],\n headerTemplate: [{ type: ContentChild, args: [NgHeaderTemplateDirective, { read: TemplateRef },] }],\n footerTemplate: [{ type: ContentChild, args: [NgFooterTemplateDirective, { read: TemplateRef },] }],\n notFoundTemplate: [{ type: ContentChild, args: [NgNotFoundTemplateDirective, { read: TemplateRef },] }],\n typeToSearchTemplate: [{ type: ContentChild, args: [NgTypeToSearchTemplateDirective, { read: TemplateRef },] }],\n loadingTextTemplate: [{ type: ContentChild, args: [NgLoadingTextTemplateDirective, { read: TemplateRef },] }],\n tagTemplate: [{ type: ContentChild, args: [NgTagTemplateDirective, { read: TemplateRef },] }],\n loadingSpinnerTemplate: [{ type: ContentChild, args: [NgLoadingSpinnerTemplateDirective, { read: TemplateRef },] }],\n dropdownPanel: [{ type: ViewChild, args: [forwardRef(() => NgDropdownPanelComponent),] }],\n searchInput: [{ type: ViewChild, args: ['searchInput', { static: true },] }],\n ngOptions: [{ type: ContentChildren, args: [NgOptionComponent, { descendants: true },] }],\n disabled: [{ type: HostBinding, args: ['class.ng-select-disabled',] }],\n filtered: [{ type: HostBinding, args: ['class.ng-select-filtered',] }],\n handleKeyDown: [{ type: HostListener, args: ['keydown', ['$event'],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSelectComponent, [{\n type: Component,\n args: [{\n selector: 'ng-select',\n template: \"\\n\\n
    \\n
    {{placeholder}}
    \\n\\n 0\\\">\\n
    \\n \\n \\u00D7\\n \\n \\n\\n \\n \\n
    \\n
    \\n\\n 0\\\"\\n [ngTemplateOutlet]=\\\"multiLabelTemplate\\\"\\n [ngTemplateOutletContext]=\\\"{ items: selectedValues, clear: clearItem }\\\">\\n \\n\\n
    \\n\\n \\n
    \\n
    \\n\\n \\n \\n
    \\n
    \\n\\n \\n \\n
    \\n\\n \\n \\u00D7\\n \\n\\n \\n \\n \\n\\n\\n\\n\\n \\n
    \\n\\n \\n \\n \\n\\n \\n \\n
    \\n\\n
    \\n \\n {{addTagText}}\\\"{{searchTerm}}\\\"\\n \\n\\n \\n \\n
    \\n
    \\n\\n \\n \\n
    {{notFoundText}}
    \\n
    \\n\\n \\n \\n
    \\n\\n \\n \\n
    {{typeToSearchText}}
    \\n
    \\n\\n \\n \\n
    \\n\\n \\n \\n
    {{loadingText}}
    \\n
    \\n\\n \\n \\n
    \\n\\n
    \\n\",\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgSelectComponent),\n multi: true\n }, NgDropdownPanelService],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.ng-select]': 'useDefaultClass',\n '[class.ng-select-single]': '!multiple'\n },\n styles: [\".ng-select{display:block;position:relative}.ng-select,.ng-select div,.ng-select input,.ng-select span{box-sizing:border-box}.ng-select [hidden]{display:none}.ng-select.ng-select-searchable .ng-select-container .ng-value-container .ng-input{opacity:1}.ng-select.ng-select-opened .ng-select-container{z-index:1001}.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-placeholder,.ng-select.ng-select-disabled .ng-select-container .ng-value-container .ng-value{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;cursor:default;user-select:none}.ng-select.ng-select-disabled .ng-arrow-wrapper{cursor:default}.ng-select.ng-select-filtered .ng-placeholder{display:none}.ng-select .ng-select-container{cursor:default;display:flex;outline:none;overflow:hidden;position:relative;width:100%}.ng-select .ng-select-container .ng-value-container{display:flex;flex:1}.ng-select .ng-select-container .ng-value-container .ng-input{opacity:0}.ng-select .ng-select-container .ng-value-container .ng-input>input{background:none transparent;border:0;box-shadow:none;box-sizing:content-box;cursor:default;outline:none;padding:0;width:100%}.ng-select .ng-select-container .ng-value-container .ng-input>input::-ms-clear{display:none}.ng-select .ng-select-container .ng-value-container .ng-input>input[readonly]{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;padding:0;user-select:none;width:0}.ng-select.ng-select-single.ng-select-filtered .ng-select-container .ng-value-container .ng-value{visibility:hidden}.ng-select.ng-select-single .ng-select-container .ng-value-container,.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-single .ng-select-container .ng-value-container .ng-input{left:0;position:absolute;width:100%}.ng-select.ng-select-multiple.ng-select-disabled>.ng-select-container .ng-value-container .ng-value .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container{flex-wrap:wrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{position:absolute}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value{white-space:nowrap}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value.ng-value-disabled .ng-value-icon{display:none}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-value .ng-value-icon{cursor:pointer}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-input{flex:1;z-index:2}.ng-select.ng-select-multiple .ng-select-container .ng-value-container .ng-placeholder{z-index:1}.ng-select .ng-clear-wrapper{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;cursor:pointer;position:relative;user-select:none;width:17px}.ng-select .ng-clear-wrapper .ng-clear{display:inline-block;font-size:18px;line-height:1;pointer-events:none}.ng-select .ng-spinner-loader{-webkit-animation:load8 .8s linear infinite;animation:load8 .8s linear infinite;border:2px solid rgba(66,66,66,.2);border-left-color:#424242;border-radius:50%;font-size:10px;height:17px;margin-right:5px;position:relative;text-indent:-9999em;transform:translateZ(0);width:17px}.ng-select .ng-spinner-loader:after{border-radius:50%;height:17px;width:17px}@-webkit-keyframes load8{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes load8{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.ng-select .ng-arrow-wrapper{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;cursor:pointer;position:relative;text-align:center;user-select:none}.ng-select .ng-arrow-wrapper .ng-arrow{display:inline-block;height:0;pointer-events:none;position:relative;width:0}.ng-dropdown-panel{-webkit-overflow-scrolling:touch;box-sizing:border-box;opacity:0;position:absolute;width:100%;z-index:1050}.ng-dropdown-panel .ng-dropdown-panel-items{box-sizing:border-box;display:block;height:auto;max-height:240px;overflow-y:auto}.ng-dropdown-panel .ng-dropdown-panel-items .ng-optgroup,.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option{box-sizing:border-box;cursor:pointer;display:block}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .ng-option-label:empty:before{content:\\\"\\\\200b\\\"}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option .highlighted{font-weight:700;text-decoration:underline}.ng-dropdown-panel .ng-dropdown-panel-items .ng-option.disabled{cursor:default}.ng-dropdown-panel .scroll-host{-webkit-overflow-scrolling:touch;display:block;overflow:hidden;overflow-y:auto;position:relative}.ng-dropdown-panel .scrollable-content{height:100%;left:0;position:absolute;top:0;width:100%}.ng-dropdown-panel .total-padding{opacity:0;width:1px}\"]\n }]\n }], function () { return [{ type: String, decorators: [{\n type: Attribute,\n args: ['class']\n }] }, { type: undefined, decorators: [{\n type: Attribute,\n args: ['autofocus']\n }] }, { type: NgSelectConfig }, { type: undefined, decorators: [{\n type: Inject,\n args: [SELECTION_MODEL_FACTORY]\n }] }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ConsoleService }]; }, { markFirst: [{\n type: Input\n }], dropdownPosition: [{\n type: Input\n }], loading: [{\n type: Input\n }], closeOnSelect: [{\n type: Input\n }], hideSelected: [{\n type: Input\n }], selectOnTab: [{\n type: Input\n }], bufferAmount: [{\n type: Input\n }], selectableGroup: [{\n type: Input\n }], selectableGroupAsModel: [{\n type: Input\n }], searchFn: [{\n type: Input\n }], trackByFn: [{\n type: Input\n }], clearOnBackspace: [{\n type: Input\n }], labelForId: [{\n type: Input\n }], inputAttrs: [{\n type: Input\n }], readonly: [{\n type: Input\n }], searchWhileComposing: [{\n type: Input\n }], minTermLength: [{\n type: Input\n }], editableSearchTerm: [{\n type: Input\n }], keyDownFn: [{\n type: Input\n }], multiple: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-multiple']\n }], addTag: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-taggable']\n }], searchable: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-searchable']\n }], clearable: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-clearable']\n }], isOpen: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-opened']\n }], blurEvent: [{\n type: Output,\n args: ['blur']\n }], focusEvent: [{\n type: Output,\n args: ['focus']\n }], changeEvent: [{\n type: Output,\n args: ['change']\n }], openEvent: [{\n type: Output,\n args: ['open']\n }], closeEvent: [{\n type: Output,\n args: ['close']\n }], searchEvent: [{\n type: Output,\n args: ['search']\n }], clearEvent: [{\n type: Output,\n args: ['clear']\n }], addEvent: [{\n type: Output,\n args: ['add']\n }], removeEvent: [{\n type: Output,\n args: ['remove']\n }], scroll: [{\n type: Output,\n args: ['scroll']\n }], scrollToEnd: [{\n type: Output,\n args: ['scrollToEnd']\n }], items: [{\n type: Input\n }], compareWith: [{\n type: Input\n }], clearSearchOnAdd: [{\n type: Input\n }], disabled: [{\n type: HostBinding,\n args: ['class.ng-select-disabled']\n }], filtered: [{\n type: HostBinding,\n args: ['class.ng-select-filtered']\n }], handleKeyDown: [{\n type: HostListener,\n args: ['keydown', ['$event']]\n }], bindLabel: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], notFoundText: [{\n type: Input\n }], typeToSearchText: [{\n type: Input\n }], addTagText: [{\n type: Input\n }], loadingText: [{\n type: Input\n }], clearAllText: [{\n type: Input\n }], virtualScroll: [{\n type: Input\n }], openOnEnter: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], bindValue: [{\n type: Input\n }], appearance: [{\n type: Input\n }], maxSelectedItems: [{\n type: Input\n }], groupBy: [{\n type: Input\n }], groupValue: [{\n type: Input\n }], tabIndex: [{\n type: Input\n }], typeahead: [{\n type: Input\n }, {\n type: HostBinding,\n args: ['class.ng-select-typeahead']\n }], optionTemplate: [{\n type: ContentChild,\n args: [NgOptionTemplateDirective, { read: TemplateRef }]\n }], optgroupTemplate: [{\n type: ContentChild,\n args: [NgOptgroupTemplateDirective, { read: TemplateRef }]\n }], labelTemplate: [{\n type: ContentChild,\n args: [NgLabelTemplateDirective, { read: TemplateRef }]\n }], multiLabelTemplate: [{\n type: ContentChild,\n args: [NgMultiLabelTemplateDirective, { read: TemplateRef }]\n }], headerTemplate: [{\n type: ContentChild,\n args: [NgHeaderTemplateDirective, { read: TemplateRef }]\n }], footerTemplate: [{\n type: ContentChild,\n args: [NgFooterTemplateDirective, { read: TemplateRef }]\n }], notFoundTemplate: [{\n type: ContentChild,\n args: [NgNotFoundTemplateDirective, { read: TemplateRef }]\n }], typeToSearchTemplate: [{\n type: ContentChild,\n args: [NgTypeToSearchTemplateDirective, { read: TemplateRef }]\n }], loadingTextTemplate: [{\n type: ContentChild,\n args: [NgLoadingTextTemplateDirective, { read: TemplateRef }]\n }], tagTemplate: [{\n type: ContentChild,\n args: [NgTagTemplateDirective, { read: TemplateRef }]\n }], loadingSpinnerTemplate: [{\n type: ContentChild,\n args: [NgLoadingSpinnerTemplateDirective, { read: TemplateRef }]\n }], dropdownPanel: [{\n type: ViewChild,\n args: [forwardRef(() => NgDropdownPanelComponent)]\n }], searchInput: [{\n type: ViewChild,\n args: ['searchInput', { static: true }]\n }], ngOptions: [{\n type: ContentChildren,\n args: [NgOptionComponent, { descendants: true }]\n }] }); })();\n\nfunction DefaultSelectionModelFactory() {\n return new DefaultSelectionModel();\n}\nclass DefaultSelectionModel {\n constructor() {\n this._selected = [];\n }\n get value() {\n return this._selected;\n }\n select(item, multiple, groupAsModel) {\n item.selected = true;\n if (!item.children || (!multiple && groupAsModel)) {\n this._selected.push(item);\n }\n if (multiple) {\n if (item.parent) {\n const childrenCount = item.parent.children.length;\n const selectedCount = item.parent.children.filter(x => x.selected).length;\n item.parent.selected = childrenCount === selectedCount;\n }\n else if (item.children) {\n this._setChildrenSelectedState(item.children, true);\n this._removeChildren(item);\n if (groupAsModel && this._activeChildren(item)) {\n this._selected = [...this._selected.filter(x => x.parent !== item), item];\n }\n else {\n this._selected = [...this._selected, ...item.children.filter(x => !x.disabled)];\n }\n }\n }\n }\n unselect(item, multiple) {\n this._selected = this._selected.filter(x => x !== item);\n item.selected = false;\n if (multiple) {\n if (item.parent && item.parent.selected) {\n const children = item.parent.children;\n this._removeParent(item.parent);\n this._removeChildren(item.parent);\n this._selected.push(...children.filter(x => x !== item && !x.disabled));\n item.parent.selected = false;\n }\n else if (item.children) {\n this._setChildrenSelectedState(item.children, false);\n this._removeChildren(item);\n }\n }\n }\n clear(keepDisabled) {\n this._selected = keepDisabled ? this._selected.filter(x => x.disabled) : [];\n }\n _setChildrenSelectedState(children, selected) {\n for (const child of children) {\n if (child.disabled) {\n continue;\n }\n child.selected = selected;\n }\n ;\n }\n _removeChildren(parent) {\n this._selected = [\n ...this._selected.filter(x => x.parent !== parent),\n ...parent.children.filter(x => x.parent === parent && x.disabled && x.selected)\n ];\n }\n _removeParent(parent) {\n this._selected = this._selected.filter(x => x !== parent);\n }\n _activeChildren(item) {\n return item.children.every(x => !x.disabled || x.selected);\n }\n}\n\nconst ɵ0 = DefaultSelectionModelFactory;\nclass NgSelectModule {\n}\nNgSelectModule.ɵfac = function NgSelectModule_Factory(t) { return new (t || NgSelectModule)(); };\nNgSelectModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgSelectModule });\nNgSelectModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n { provide: SELECTION_MODEL_FACTORY, useValue: ɵ0 }\n ], imports: [[\n CommonModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgSelectModule, [{\n type: NgModule,\n args: [{\n declarations: [\n NgDropdownPanelComponent,\n NgOptionComponent,\n NgSelectComponent,\n NgOptgroupTemplateDirective,\n NgOptionTemplateDirective,\n NgLabelTemplateDirective,\n NgMultiLabelTemplateDirective,\n NgHeaderTemplateDirective,\n NgFooterTemplateDirective,\n NgNotFoundTemplateDirective,\n NgTypeToSearchTemplateDirective,\n NgLoadingTextTemplateDirective,\n NgTagTemplateDirective,\n NgLoadingSpinnerTemplateDirective,\n NgItemLabelDirective\n ],\n imports: [\n CommonModule\n ],\n exports: [\n NgSelectComponent,\n NgOptionComponent,\n NgOptgroupTemplateDirective,\n NgOptionTemplateDirective,\n NgLabelTemplateDirective,\n NgMultiLabelTemplateDirective,\n NgHeaderTemplateDirective,\n NgFooterTemplateDirective,\n NgNotFoundTemplateDirective,\n NgTypeToSearchTemplateDirective,\n NgLoadingTextTemplateDirective,\n NgTagTemplateDirective,\n NgLoadingSpinnerTemplateDirective\n ],\n providers: [\n { provide: SELECTION_MODEL_FACTORY, useValue: ɵ0 }\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgSelectModule, { declarations: function () { return [NgDropdownPanelComponent, NgOptionComponent, NgSelectComponent, NgOptgroupTemplateDirective, NgOptionTemplateDirective, NgLabelTemplateDirective, NgMultiLabelTemplateDirective, NgHeaderTemplateDirective, NgFooterTemplateDirective, NgNotFoundTemplateDirective, NgTypeToSearchTemplateDirective, NgLoadingTextTemplateDirective, NgTagTemplateDirective, NgLoadingSpinnerTemplateDirective, NgItemLabelDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [NgSelectComponent, NgOptionComponent, NgOptgroupTemplateDirective, NgOptionTemplateDirective, NgLabelTemplateDirective, NgMultiLabelTemplateDirective, NgHeaderTemplateDirective, NgFooterTemplateDirective, NgNotFoundTemplateDirective, NgTypeToSearchTemplateDirective, NgLoadingTextTemplateDirective, NgTagTemplateDirective, NgLoadingSpinnerTemplateDirective]; } }); })();\n\n/*\n * Public API Surface of ng-select\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NgSelectComponent, NgSelectConfig, NgSelectModule, SELECTION_MODEL_FACTORY, DefaultSelectionModelFactory as ɵb, DefaultSelectionModel as ɵc, NgDropdownPanelService as ɵd, NgItemLabelDirective as ɵe, NgOptionTemplateDirective as ɵf, NgOptgroupTemplateDirective as ɵg, NgLabelTemplateDirective as ɵh, NgMultiLabelTemplateDirective as ɵi, NgHeaderTemplateDirective as ɵj, NgFooterTemplateDirective as ɵk, NgNotFoundTemplateDirective as ɵl, NgTypeToSearchTemplateDirective as ɵm, NgLoadingTextTemplateDirective as ɵn, NgTagTemplateDirective as ɵo, NgLoadingSpinnerTemplateDirective as ɵp, NgDropdownPanelComponent as ɵq, NgOptionComponent as ɵr, ConsoleService as ɵs };\n\n","/**\n * index\n */\nexport * from './src/index';\n","import { getValue, setValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { clearTemplate, registerEvents } from './util';\nvar refRegex = /Ref$/;\nvar ComplexBase = /** @class */ (function () {\n function ComplexBase() {\n this.hasChanges = false;\n this.propCollection = {};\n this.dataSource = {};\n this.tags = [];\n this.tagObjects = [];\n }\n ComplexBase.prototype.ngOnInit = function () {\n this.registeredTemplate = {};\n for (var _i = 0, _a = this.tags; _i < _a.length; _i++) {\n var tag = _a[_i];\n var objInstance = getValue('child' + tag.substring(0, 1).toUpperCase() + tag.substring(1), this);\n if (objInstance) {\n this.tagObjects.push({ instance: objInstance, name: tag });\n }\n }\n var templateProperties = Object.keys(this);\n for (var i = 0; i < templateProperties.length; i++) {\n var tempProp = getValue(templateProperties[i], this);\n if (typeof tempProp === 'object' && tempProp && tempProp.elementRef) {\n if (!getValue(templateProperties[i].indexOf('Ref') !== -1 ? templateProperties[i] : templateProperties[i] + 'Ref', this)) {\n setValue(templateProperties[i].indexOf('Ref') !== -1 ? templateProperties[i] : templateProperties[i] + 'Ref', tempProp, this);\n }\n if (getValue(\"viewContainerRef\", this) && !getValue(\"_viewContainerRef\", tempProp.elementRef.nativeElement) && !getValue(\"propName\", tempProp.elementRef.nativeElement)) {\n setValue(\"_viewContainerRef\", getValue(\"viewContainerRef\", this), tempProp.elementRef.nativeElement);\n setValue(\"propName\", templateProperties[i].replace(\"Ref\", ''), tempProp.elementRef.nativeElement);\n }\n }\n }\n templateProperties = Object.keys(this);\n templateProperties = templateProperties.filter(function (val) {\n return /Ref$/i.test(val);\n });\n for (var _b = 0, templateProperties_1 = templateProperties; _b < templateProperties_1.length; _b++) {\n var tempName = templateProperties_1[_b];\n var propName = tempName.replace('Ref', '');\n setValue(propName.replace('_', '.'), getValue(propName, this), this.propCollection);\n }\n // Angular 9 compatibility to overcome ngOnchange not get triggered issue\n // To Update properties to \"this.propCollection\"\n var propList = Object.keys(this);\n /* istanbul ignore next */\n if (this.directivePropList) {\n for (var k = 0; k < this.directivePropList.length; k++) {\n var dirPropName = this.directivePropList[k];\n if (propList.indexOf(dirPropName) !== -1 && (getValue(dirPropName, this) === false || getValue(dirPropName, this))) {\n setValue(dirPropName, getValue(dirPropName, this), this.propCollection);\n }\n }\n this.hasChanges = true;\n }\n this.isInitChanges = true;\n };\n ComplexBase.prototype.registerEvents = function (eventList) {\n registerEvents(eventList, this, true);\n };\n ComplexBase.prototype.ngOnChanges = function (changes) {\n for (var _i = 0, _a = Object.keys(changes); _i < _a.length; _i++) {\n var propName = _a[_i];\n var changedVal = changes[propName];\n this.propCollection[propName] = changedVal.currentValue;\n }\n this.isUpdated = false;\n this.hasChanges = true;\n };\n /* istanbul ignore next */\n ComplexBase.prototype.clearTemplate = function (templateNames) {\n clearTemplate(this, templateNames);\n };\n ComplexBase.prototype.getProperties = function () {\n /* istanbul ignore next */\n for (var _i = 0, _a = this.tagObjects; _i < _a.length; _i++) {\n var tagObject = _a[_i];\n this.propCollection[tagObject.name] = tagObject.instance.getProperties();\n }\n return this.propCollection;\n };\n ComplexBase.prototype.isChanged = function () {\n var result = this.hasChanges;\n if (!isNullOrUndefined(this.propCollection[this.property])) {\n var tempProps = this.propCollection[this.property];\n var props = Object.keys(tempProps[0]);\n for (var d = 0; d < props.length; d++) {\n if (!isNullOrUndefined(this.propCollection[props[d]])) {\n var val = getValue(props[d], this);\n var propVal = this.propCollection[this.property][0][props[d]];\n if (!isNullOrUndefined(val) && this.propCollection[props[d]] !== val\n && propVal !== val) {\n setValue(props[d], val, this.propCollection[this.property][0]);\n setValue(props[d], val, this.propCollection);\n this.hasChanges = true;\n this.isUpdated = false;\n }\n }\n }\n }\n /* istanbul ignore next */\n for (var _i = 0, _a = this.tagObjects; _i < _a.length; _i++) {\n var item = _a[_i];\n result = result || item.instance.hasChanges;\n }\n return result || this.hasChanges;\n };\n ComplexBase.prototype.ngAfterContentChecked = function () {\n this.hasChanges = this.isChanged();\n if (this.isInitChanges || this.hasChanges) {\n var templateProperties = Object.keys(this);\n templateProperties = templateProperties.filter(function (val) {\n return refRegex.test(val);\n });\n for (var _i = 0, templateProperties_2 = templateProperties; _i < templateProperties_2.length; _i++) {\n var tempName = templateProperties_2[_i];\n var propName = tempName.replace('Ref', '');\n setValue(propName.replace('_', '.'), getValue(propName, this), this.propCollection);\n }\n }\n };\n ComplexBase.prototype.ngAfterViewChecked = function () {\n /* istanbul ignore next */\n if (this.isUpdated) {\n this.hasChanges = false;\n }\n };\n ComplexBase.prototype.ngAfterViewInit = function () {\n /* istanbul ignore next */\n this.isInitChanges = false;\n };\n ComplexBase.prototype.ngOnDestroy = function () {\n /* istanbul ignore next */\n this.directivePropList = [];\n };\n return ComplexBase;\n}());\nexport { ComplexBase };\nvar ArrayBase = /** @class */ (function () {\n function ArrayBase(propertyName) {\n this.list = [];\n this.hasChanges = false;\n this.propertyName = propertyName;\n }\n ArrayBase.prototype.ngOnInit = function () {\n this.isInitChanges = true;\n };\n ArrayBase.prototype.ngAfterContentInit = function () {\n var _this = this;\n var index = 0;\n /* istanbul ignore next */\n this.list = this.children.map(function (child) {\n child.dirIndex = index++;\n child.property = _this.propertyName;\n return child;\n });\n this.hasChanges = true;\n };\n ArrayBase.prototype.getProperties = function () {\n var onlyProp = [];\n for (var _i = 0, _a = this.list; _i < _a.length; _i++) {\n var item = _a[_i];\n onlyProp.push(item.getProperties());\n }\n return onlyProp;\n };\n ArrayBase.prototype.isChanged = function () {\n var _this = this;\n var result = false;\n var index = 0;\n var isSourceChanged = false;\n // tslint:disable-next-line\n var childrenDataSource = this.children.map(function (child) {\n return child;\n });\n /* istanbul ignore next */\n if (this.list.length === this.children.length) {\n for (var i = 0; i < this.list.length; i++) {\n if (this.list[i].propCollection.dataSource) {\n if (this.list[i].dataSource && this.list[i].propCollection.dataSource !== this.list[i].dataSource) {\n this.list[i].propCollection.dataSource = this.list[i].dataSource;\n this.list[i].hasChanges = true;\n }\n isSourceChanged = (JSON.stringify(this.list[i].propCollection.dataSource) !==\n JSON.stringify(childrenDataSource[i].propCollection.dataSource));\n }\n isSourceChanged = this.list[i].hasChanges !== childrenDataSource[i].hasChanges;\n }\n }\n this.hasNewChildren = (this.list.length !== this.children.length || isSourceChanged) ? true : null;\n if (this.hasNewChildren) {\n this.list = this.children.map(function (child) {\n child.dirIndex = index++;\n child.property = _this.propertyName;\n return child;\n });\n }\n /* istanbul ignore end */\n for (var _i = 0, _a = this.list; _i < _a.length; _i++) {\n var item = _a[_i];\n result = result || item.hasChanges;\n }\n return !!this.list.length && result;\n };\n ArrayBase.prototype.clearTemplate = function (templateNames) {\n var _this = this;\n /* istanbul ignore next */\n for (var _i = 0, _a = this.list; _i < _a.length; _i++) {\n var item = _a[_i];\n item.clearTemplate(templateNames && templateNames.map(function (val) {\n return new RegExp(_this.propertyName).test(val) ? val.replace(_this.propertyName + '.', '') : val;\n }));\n }\n };\n ArrayBase.prototype.ngAfterContentChecked = function () {\n this.hasChanges = this.isChanged();\n for (var i = 0; i < this.list.length; i++) {\n if (getValue('childColumns', this.list[i]) && getValue('property', this.list[i]) === 'columns') {\n setValue('columns', getValue('childColumns', this.list[i]).getProperties(), this.list[i].propCollection);\n }\n this.list[i].isUpdated = true;\n }\n };\n ArrayBase.prototype.ngAfterViewInit = function () {\n this.isInitChanges = false;\n };\n ArrayBase.prototype.ngOnDestroy = function () {\n this.list = [];\n };\n return ArrayBase;\n}());\nexport { ArrayBase };\n","/**\n * Angular Component Base Module\n */\nimport { getValue, isUndefined, setValue, isNullOrUndefined, attributes, createElement } from '@syncfusion/ej2-base';\nimport { EventEmitter } from '@angular/core';\nimport { clearTemplate, registerEvents } from './util';\nvar SVG_REG = /^svg|^path|^g/;\nvar ComponentBase = /** @class */ (function () {\n function ComponentBase() {\n this.isProtectedOnChange = true;\n this.isFormInit = true;\n }\n ComponentBase.prototype.saveChanges = function (key, newValue, oldValue) {\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.finalUpdate();\n // tslint:disable-next-line:no-any\n var changeTime = setTimeout(this.dataBind.bind(this));\n var clearUpdate = function () {\n clearTimeout(changeTime);\n };\n this.finalUpdate = clearUpdate;\n };\n ;\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.ngOnInit = function (isTempRef) {\n // tslint:disable-next-line:no-any\n var tempOnThis = isTempRef || this;\n tempOnThis.registeredTemplate = {};\n tempOnThis.ngBoundedEvents = {};\n tempOnThis.isAngular = true;\n tempOnThis.isFormInit = true;\n /* istanbul ignore next */\n if (isTempRef) {\n this.tags = isTempRef.tags;\n }\n tempOnThis.tags = this.tags || [];\n tempOnThis.complexTemplate = this.complexTemplate || [];\n tempOnThis.tagObjects = [];\n tempOnThis.ngAttr = this.getAngularAttr(tempOnThis.element);\n /* istanbul ignore next */\n tempOnThis.createElement = function (tagName, prop) {\n //tslint:disable-next-line\n var ele = tempOnThis.srenderer ? tempOnThis.srenderer.createElement(tagName) : createElement(tagName);\n if (typeof (prop) === 'undefined') {\n return ele;\n }\n ele.innerHTML = (prop.innerHTML ? prop.innerHTML : '');\n if (prop.className !== undefined) {\n ele.className = prop.className;\n }\n if (prop.id !== undefined) {\n ele.id = prop.id;\n }\n if (prop.styles !== undefined) {\n ele.setAttribute('style', prop.styles);\n }\n if (tempOnThis.ngAttr !== undefined) {\n ele.setAttribute(tempOnThis.ngAttr, '');\n }\n if (prop.attrs !== undefined) {\n attributes(ele, prop.attrs);\n }\n return ele;\n };\n for (var _i = 0, _a = tempOnThis.tags; _i < _a.length; _i++) {\n var tag = _a[_i];\n var tagObject = {\n instance: getValue('child' + tag.substring(0, 1).toUpperCase() + tag.substring(1), tempOnThis),\n name: tag\n };\n tempOnThis.tagObjects.push(tagObject);\n }\n var complexTemplates = Object.keys(tempOnThis);\n for (var i = 0; i < complexTemplates.length; i++) {\n var compProp = getValue(complexTemplates[i], tempOnThis);\n if (typeof compProp === 'object' && compProp && compProp.elementRef) {\n if (typeof compProp === 'object' && compProp && compProp.elementRef && complexTemplates[i].indexOf('_') !== -1 && complexTemplates[i].indexOf('Ref') === -1) {\n setValue(complexTemplates[i] + 'Ref', compProp, tempOnThis);\n }\n if (tempOnThis.viewContainerRef && !getValue(\"_viewContainerRef\", compProp.elementRef.nativeElement) && !getValue(\"propName\", compProp.elementRef.nativeElement)) {\n setValue(\"_viewContainerRef\", tempOnThis.viewContainerRef, compProp.elementRef.nativeElement);\n setValue(\"propName\", complexTemplates[i].replace(\"Ref\", ''), compProp.elementRef.nativeElement);\n }\n }\n }\n complexTemplates = Object.keys(tempOnThis);\n complexTemplates = complexTemplates.filter(function (val) {\n return /Ref$/i.test(val) && /\\_/i.test(val);\n });\n for (var _b = 0, complexTemplates_1 = complexTemplates; _b < complexTemplates_1.length; _b++) {\n var tempName = complexTemplates_1[_b];\n var propName = tempName.replace('Ref', '');\n var val = {};\n setValue(propName.replace('_', '.'), getValue(propName, tempOnThis), val);\n tempOnThis.setProperties(val, true);\n }\n };\n ComponentBase.prototype.getAngularAttr = function (ele) {\n var attributes = ele.attributes;\n var length = attributes.length;\n var ngAr;\n for (var i = 0; i < length; i++) {\n /* istanbul ignore next */\n if (/_ngcontent/g.test(attributes[i].name)) {\n ngAr = attributes[i].name;\n }\n }\n return ngAr;\n };\n ;\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.ngAfterViewInit = function (isTempRef) {\n // tslint:disable-next-line:no-any\n var tempAfterViewThis = isTempRef || this;\n var regExp = /ejs-tab|ejs-accordion/g;\n /* istanbul ignore next */\n if (regExp.test(tempAfterViewThis.ngEle.nativeElement.outerHTML)) {\n tempAfterViewThis.ngEle.nativeElement.style.visibility = 'hidden';\n }\n /**\n * Root level template properties are not getting rendered,\n * Due to ngonchanges not get triggered.\n * so that we have set template value for root level template properties,\n * for example: refer below syntax\n * ```html\n * \n * \n * \n * \n * ```\n */\n var templateProperties = Object.keys(tempAfterViewThis);\n templateProperties = templateProperties.filter(function (val) {\n return /Ref$/i.test(val);\n });\n var ngtempRef = tempAfterViewThis.getModuleName() === 'DocumentEditor';\n for (var _i = 0, templateProperties_1 = templateProperties; _i < templateProperties_1.length; _i++) {\n var tempName = templateProperties_1[_i];\n var propName = tempName.replace('Ref', '');\n setValue(propName.replace('_', '.'), getValue(propName + 'Ref', tempAfterViewThis), tempAfterViewThis);\n }\n // Used setTimeout for template binding\n // Refer Link: https://github.com/angular/angular/issues/6005\n var appendToComponent = function (tempAfterViewThis) {\n /* istanbul ignore else */\n if (typeof window !== 'undefined' && tempAfterViewThis.element || tempAfterViewThis.getModuleName().includes('btn')) {\n tempAfterViewThis.appendTo(tempAfterViewThis.element);\n tempAfterViewThis.ngEle.nativeElement.style.visibility = '';\n }\n };\n if (!ngtempRef) {\n setTimeout(function () {\n appendToComponent(tempAfterViewThis);\n });\n }\n else {\n appendToComponent(tempAfterViewThis);\n }\n };\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.ngOnDestroy = function (isTempRef) {\n // tslint:disable-next-line:no-any\n var tempOnDestroyThis = isTempRef || this;\n /* istanbul ignore else */\n setTimeout(function () {\n if (typeof window !== 'undefined' && (tempOnDestroyThis.element.classList.contains('e-control'))) {\n tempOnDestroyThis.destroy();\n tempOnDestroyThis.clearTemplate(null);\n // removing bounded events and tagobjects from component after destroy\n setTimeout(function () {\n for (var _i = 0, _a = Object.keys(tempOnDestroyThis); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = tempOnDestroyThis[key];\n if (value && /object/.test(typeof value) && Object.keys(value).length !== 0) {\n if (/properties|changedProperties|childChangedProperties|oldProperties|moduleLoader/.test(key)) {\n for (var _b = 0, _c = Object.keys(tempOnDestroyThis[key]); _b < _c.length; _b++) {\n var propKey = _c[_b];\n var propValue = value[propKey];\n if (propValue && /object/.test(typeof propValue) && Object.keys(propValue).length !== 0 && (propValue.parent || propValue.parentObj)) {\n tempOnDestroyThis[key][propKey] = null;\n }\n }\n }\n else {\n if (value.parent || value.parentObj) {\n tempOnDestroyThis[key] = null;\n }\n }\n }\n }\n });\n }\n });\n };\n //tslint:disable-next-line\n ComponentBase.prototype.clearTemplate = function (templateNames, index) {\n clearTemplate(this, templateNames, index);\n };\n ;\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.ngAfterContentChecked = function (isTempRef) {\n // tslint:disable-next-line:no-any\n var tempAfterContentThis = isTempRef || this;\n for (var _i = 0, _a = tempAfterContentThis.tagObjects; _i < _a.length; _i++) {\n var tagObject = _a[_i];\n if (!isUndefined(tagObject.instance) &&\n (tagObject.instance.isInitChanges || tagObject.instance.hasChanges || tagObject.instance.hasNewChildren)) {\n if (tagObject.instance.isInitChanges) {\n var propObj = {};\n // For angular 9 compatibility\n // Not able to get complex directive properties reference ni Onint hook\n // So we have constructed property here and used\n var complexDirProps = void 0;\n var list = getValue('instance.list', tagObject);\n if (list && list.length) {\n complexDirProps = list[0].directivePropList;\n }\n var skip = true;\n if (tempAfterContentThis.getModuleName && tempAfterContentThis.getModuleName() === 'gantt') {\n skip = false;\n }\n if (complexDirProps && skip && complexDirProps.indexOf(tagObject.instance.propertyName) === -1) {\n var compDirPropList = Object.keys(tagObject.instance.list[0].propCollection);\n for (var h = 0; h < tagObject.instance.list.length; h++) {\n tagObject.instance.list[h].propCollection[tagObject.instance.propertyName] = [];\n var obj = {};\n for (var k = 0; k < compDirPropList.length; k++) {\n var complexPropName = compDirPropList[k];\n obj[complexPropName] = tagObject.instance.list[h].propCollection[complexPropName];\n }\n var _loop_1 = function (i) {\n var tag = tagObject.instance.list[h].tags[i];\n var childObj = getValue('child' + tag.substring(0, 1).toUpperCase() + tag.substring(1), tagObject.instance.list[h]);\n if (childObj) {\n var innerchildObj = tagObject.instance.list[h]['child' + tag.substring(0, 1).toUpperCase() + tag.substring(1)];\n // Update the inner child tag objects\n var updateChildTag_1 = function (innerchild) {\n var innerLevelTag = [];\n if (innerchild) {\n for (var j = 0; j < innerchild.list.length; j++) {\n var innerTag = innerchild.list[0].tags[0];\n if (innerTag) {\n var innerchildTag = getValue('child' + innerTag.substring(0, 1).toUpperCase() + innerTag.substring(1), innerchild.list[j]);\n if (innerchildTag) {\n innerchild.list[j].tagObjects.push({ instance: innerchildTag, name: innerTag });\n innerLevelTag.push(innerchildTag);\n }\n }\n }\n }\n // check for inner level tag\n if (innerLevelTag.length !== 0) {\n for (var l = 0; l < innerLevelTag.length; l++) {\n updateChildTag_1(innerLevelTag[l]);\n }\n }\n ;\n };\n updateChildTag_1(innerchildObj);\n tagObject.instance.list[h].tagObjects.push({ instance: childObj, name: tag });\n }\n };\n for (var i = 0; i < tagObject.instance.list[h].tags.length; i++) {\n _loop_1(i);\n }\n tagObject.instance.list[h].propCollection[tagObject.instance.propertyName].push(obj);\n }\n }\n // End angular 9 compatibility\n propObj[tagObject.name] = tagObject.instance.getProperties();\n tempAfterContentThis.setProperties(propObj, tagObject.instance.isInitChanges);\n }\n else {\n /* istanbul ignore next */\n if ((tempAfterContentThis[tagObject.name].length !== tagObject.instance.list.length) || (/diagram|tab|DashboardLayout/.test(tempAfterContentThis.getModuleName()))) {\n tempAfterContentThis[tagObject.name] = tagObject.instance.list;\n }\n for (var _b = 0, _c = tagObject.instance.list; _b < _c.length; _b++) {\n var list = _c[_b];\n var curIndex = tagObject.instance.list.indexOf(list);\n var curChild = getValue(tagObject.name, tempAfterContentThis)[curIndex];\n var complexTemplates = Object.keys(curChild);\n complexTemplates = complexTemplates.filter(function (val) {\n return /Ref$/i.test(val);\n });\n if (curChild.properties && Object.keys(curChild.properties).length !== 0) {\n for (var _d = 0, complexTemplates_2 = complexTemplates; _d < complexTemplates_2.length; _d++) {\n var complexPropName = complexTemplates_2[_d];\n complexPropName = complexPropName.replace(/Ref/, '');\n curChild.properties[complexPropName] = !curChild.properties[complexPropName] ?\n curChild.propCollection[complexPropName] : curChild.properties[complexPropName];\n }\n }\n if (!isUndefined(curChild) && !isUndefined(curChild.setProperties)) {\n if (/diagram|DashboardLayout/.test(tempAfterContentThis.getModuleName())) {\n curChild.setProperties(list.getProperties(), true);\n }\n else {\n curChild.setProperties(list.getProperties());\n }\n }\n list.isUpdated = true;\n }\n }\n }\n }\n };\n ComponentBase.prototype.registerEvents = function (eventList) {\n registerEvents(eventList, this);\n };\n ComponentBase.prototype.twoWaySetter = function (newVal, prop) {\n var oldVal = getValue(prop, this.properties);\n if (oldVal === newVal) {\n return;\n }\n this.saveChanges(prop, newVal, oldVal);\n setValue(prop, (isNullOrUndefined(newVal) ? null : newVal), this.properties);\n getValue(prop + 'Change', this).emit(newVal);\n };\n ComponentBase.prototype.addTwoWay = function (propList) {\n var _this = this;\n var _loop_2 = function (prop) {\n getValue(prop, this_1);\n Object.defineProperty(this_1, prop, {\n get: function () {\n return getValue(prop, _this.properties);\n },\n set: function (newVal) { return _this.twoWaySetter(newVal, prop); }\n });\n setValue(prop + 'Change', new EventEmitter(), this_1);\n };\n var this_1 = this;\n for (var _i = 0, propList_1 = propList; _i < propList_1.length; _i++) {\n var prop = propList_1[_i];\n _loop_2(prop);\n }\n };\n ComponentBase.prototype.addEventListener = function (eventName, handler) {\n var eventObj = getValue(eventName, this);\n if (!isUndefined(eventObj)) {\n if (!this.ngBoundedEvents[eventName]) {\n this.ngBoundedEvents[eventName] = new Map();\n }\n this.ngBoundedEvents[eventName].set(handler, eventObj.subscribe(handler));\n }\n };\n ComponentBase.prototype.removeEventListener = function (eventName, handler) {\n var eventObj = getValue(eventName, this);\n if (!isUndefined(eventObj)) {\n this.ngBoundedEvents[eventName].get(handler).unsubscribe();\n }\n };\n ComponentBase.prototype.trigger = function (eventName, eventArgs, success) {\n var eventObj = getValue(eventName, this);\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventArgs) {\n eventArgs.name = eventName;\n }\n if (!isUndefined(eventObj)) {\n eventObj.next(eventArgs);\n }\n var localEventObj = getValue('local' + eventName.charAt(0).toUpperCase() + eventName.slice(1), this);\n if (!isUndefined(localEventObj)) {\n localEventObj.call(this, eventArgs);\n }\n this.isProtectedOnChange = prevDetection;\n /* istanbul ignore else */\n if (success) {\n this.preventChange = this.isPreventChange;\n success.call(this, eventArgs);\n }\n this.isPreventChange = false;\n };\n return ComponentBase;\n}());\nexport { ComponentBase };\n","import { getValue, setValue, isNullOrUndefined, isObject } from '@syncfusion/ej2-base';\n/**\n * Angular Form Base Module\n */\nvar FormBase = /** @class */ (function () {\n function FormBase() {\n }\n FormBase.prototype.propagateChange = function (_) { return; };\n FormBase.prototype.propagateTouch = function () { return; };\n FormBase.prototype.localChange = function (e) {\n //tslint:disable-next-line\n var value = (e.checked === undefined ? e.value : e.checked);\n this.objCheck = isObject(value);\n if (this.isUpdated === true) {\n this.angularValue = this.oldValue;\n }\n if (this.objCheck === true) {\n this.duplicateValue = JSON.stringify(value);\n this.duplicateAngularValue = JSON.stringify(this.angularValue);\n if (this.duplicateValue !== this.duplicateAngularValue && this.propagateChange !== undefined && value !== undefined) {\n // Update angular from our control\n this.propagateChange(value);\n this.angularValue = value;\n }\n }\n else {\n if (value !== this.angularValue && this.propagateChange !== undefined && value !== undefined) {\n // While reset form using reset() method ng-dirty not get updated, so while value is empty just update angularValue only\n if (value !== '' && value !== null) {\n // Update angular from our control\n this.propagateChange(value);\n this.angularValue = value;\n }\n else {\n //tslint:disable-next-line\n var optionalValue = value;\n this.propagateChange(optionalValue);\n this.angularValue = value;\n }\n }\n }\n };\n FormBase.prototype.registerOnChange = function (registerFunction) {\n this.propagateChange = registerFunction;\n };\n FormBase.prototype.registerOnTouched = function (registerFunction) {\n this.propagateTouch = registerFunction;\n };\n FormBase.prototype.twoWaySetter = function (newVal, prop) {\n var oldVal = this.oldValue || getValue(prop, this.properties);\n var ele = this.inputElement || this.element;\n if (ele && oldVal === newVal && this.value === newVal &&\n (ele.value === undefined || ele.value === '')) {\n return;\n }\n this.saveChanges(prop, newVal, oldVal);\n setValue(prop, (isNullOrUndefined(newVal) ? null : newVal), this.properties);\n getValue(prop + 'Change', this).emit(newVal);\n };\n // tslint:disable-next-line:no-any\n FormBase.prototype.ngAfterViewInit = function (isTempRef) {\n // tslint:disable-next-line:no-any\n var tempFormAfterViewThis = isTempRef || this;\n // Used setTimeout for template binding\n // Refer Link: https://github.com/angular/angular/issues/6005\n // Removed setTimeout, Because we have called markForCheck() method in Angular Template Compiler\n /* istanbul ignore else */\n if (typeof window !== 'undefined') {\n tempFormAfterViewThis.appendTo(tempFormAfterViewThis.element);\n var ele = tempFormAfterViewThis.inputElement || tempFormAfterViewThis.element;\n ele.addEventListener('focus', tempFormAfterViewThis.ngOnFocus.bind(tempFormAfterViewThis));\n ele.addEventListener('blur', tempFormAfterViewThis.ngOnBlur.bind(tempFormAfterViewThis));\n }\n this.isFormInit = false;\n };\n FormBase.prototype.setDisabledState = function (disabled) {\n this.enabled = !disabled;\n this.disabled = disabled;\n };\n FormBase.prototype.writeValue = function (value) {\n var regExp = /ejs-radiobutton/g;\n //update control value from angular\n if (this.checked === undefined) {\n this.value = value;\n }\n else {\n // To resolve boolean type formControl value is not working for radio button control.\n /* istanbul ignore next */\n if (this.ngEle) {\n if (typeof value === 'boolean') {\n if (regExp.test(this.ngEle.nativeElement.outerHTML)) {\n this.checked = value === this.value;\n }\n else {\n this.checked = value;\n }\n }\n else {\n this.checked = value === this.value;\n }\n }\n }\n this.angularValue = value;\n this.isUpdated = true;\n // When binding Html textbox value to syncfusion textbox, change event triggered dynamically.\n // To prevent change event, trigger change in component side based on `preventChange` value\n this.preventChange = this.isFormInit ? false : true;\n if (value === null) {\n return;\n }\n };\n FormBase.prototype.ngOnFocus = function (e) {\n /* istanbul ignore else */\n if (this.skipFromEvent !== true) {\n this.focus.emit(e);\n }\n };\n FormBase.prototype.ngOnBlur = function (e) {\n this.propagateTouch();\n /* istanbul ignore else */\n if (this.skipFromEvent !== true) {\n this.blur.emit(e);\n }\n };\n FormBase.isFormBase = true;\n return FormBase;\n}());\nexport { FormBase };\n","/**\n * Index\n */\nexport * from './complex-array-base';\nexport * from './component-base';\nexport * from './form-base';\nexport * from './util';\nexport * from './template';\n","import { setTemplateEngine, getTemplateEngine } from '@syncfusion/ej2-base';\nimport { setValue, getValue } from '@syncfusion/ej2-base';\nvar stringCompiler = getTemplateEngine();\n/**\n * Angular Template Compiler\n */\nexport function compile(templateEle, helper) {\n if (typeof templateEle === 'string' || (typeof templateEle === 'function' && templateEle.prototype && templateEle.prototype.CSPTemplate)) {\n return stringCompiler(templateEle, helper);\n }\n else {\n var contRef_1 = templateEle.elementRef.nativeElement._viewContainerRef;\n var pName_1 = templateEle.elementRef.nativeElement.propName;\n //tslint:disable-next-line \n return function (data, component, propName) {\n var context = { $implicit: data };\n /* istanbul ignore next */\n var conRef = contRef_1 ? contRef_1 : component.viewContainerRef;\n var viewRef = conRef.createEmbeddedView(templateEle, context);\n if (getValue('currentInstance.element.nodeName', conRef) === 'EJS-MENTION') {\n viewRef.detectChanges();\n }\n else {\n viewRef.markForCheck();\n }\n /* istanbul ignore next */\n var viewCollection = (component && component.registeredTemplate) ?\n component.registeredTemplate : getValue('currentInstance.registeredTemplate', conRef);\n propName = (propName && component.registeredTemplate) ? propName : pName_1;\n if (typeof viewCollection[propName] === 'undefined') {\n viewCollection[propName] = [];\n }\n viewCollection[propName].push(viewRef);\n return viewRef.rootNodes;\n };\n }\n}\n/**\n * Property decorator for angular.\n */\nexport function Template(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: setter(key),\n get: getter(key, defaultValue),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, propertyDescriptor);\n };\n}\nfunction setter(key) {\n return function (val) {\n if (val === undefined) {\n return;\n }\n setValue(key + 'Ref', val, this);\n if (typeof val !== 'string') {\n val.elementRef.nativeElement._viewContainerRef = this.viewContainerRef;\n val.elementRef.nativeElement.propName = key;\n }\n else {\n if (this.saveChanges) {\n this.saveChanges(key, val, undefined);\n this.dataBind();\n }\n }\n };\n}\nfunction getter(key, defaultValue) {\n return function () {\n /* istanbul ignore next */\n return getValue(key + 'Ref', this) || defaultValue;\n };\n}\n//tslint:disable-next-line\nsetTemplateEngine({ compile: compile });\n","import { EventEmitter } from '@angular/core';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Angular Utility Module\n */\n/* tslint:disable */\nexport function applyMixins(derivedClass, baseClass) {\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (!derivedClass.prototype.hasOwnProperty(name) || (baseClass.isFormBase && name !== 'constructor')) {\n derivedClass.prototype[name] = baseClass.prototype[name];\n }\n });\n });\n}\n/* tslint:disable */\nexport function ComponentMixins(baseClass) {\n return function (derivedClass) {\n applyMixins(derivedClass, baseClass);\n };\n}\n/**\n * @private\n */\nexport function registerEvents(eventList, obj, direct) {\n var ngEventsEmitter = {};\n if (eventList && eventList.length) {\n for (var _i = 0, eventList_1 = eventList; _i < eventList_1.length; _i++) {\n var event_1 = eventList_1[_i];\n if (direct === true) {\n obj.propCollection[event_1] = new EventEmitter(false);\n obj[event_1] = obj.propCollection[event_1];\n }\n else {\n ngEventsEmitter[event_1] = new EventEmitter(false);\n }\n }\n if (direct !== true) {\n obj.setProperties(ngEventsEmitter, true);\n }\n }\n}\n/**\n * @private\n */\nexport function clearTemplate(_this, templateNames, index) {\n var regTemplates = Object.keys(_this.registeredTemplate);\n if (regTemplates.length) {\n /* istanbul ignore next */\n var regProperties = templateNames && templateNames.filter(function (val) {\n return (/\\./g.test(val) ? false : true);\n });\n var tabTemp = _this.getModuleName() === 'tab';\n for (var _i = 0, _a = (regProperties && regProperties || regTemplates); _i < _a.length; _i++) {\n var registeredTemplate = _a[_i];\n /* istanbul ignore next */\n if (index && index.length) {\n for (var e = 0; e < index.length; e++) {\n if (tabTemp) {\n for (var m = 0; m < _this.registeredTemplate[registeredTemplate].length; m++) {\n var value = _this.registeredTemplate[registeredTemplate][m];\n if (value && value === index[e]) {\n value.destroy();\n _this.registeredTemplate[registeredTemplate].splice(m, 1);\n }\n }\n }\n else {\n for (var m = 0; m < _this.registeredTemplate.template.length; m++) {\n var value = _this.registeredTemplate.template[m].rootNodes[0];\n if (value === index[e]) {\n var rt = _this.registeredTemplate[registeredTemplate];\n rt[m].destroy();\n }\n }\n }\n }\n }\n else {\n if (_this.registeredTemplate[registeredTemplate]) {\n for (var _b = 0, _c = _this.registeredTemplate[registeredTemplate]; _b < _c.length; _b++) {\n var rt = _c[_b];\n if (!rt.destroyed) {\n if (rt._view) {\n var pNode = rt._view.renderer.parentNode(rt.rootNodes[0]);\n if (!isNullOrUndefined(pNode)) {\n for (var m = 0; m < rt.rootNodes.length; m++) {\n pNode.appendChild(rt.rootNodes[m]);\n }\n }\n }\n rt.destroy();\n }\n }\n }\n }\n if (!tabTemp || !index) {\n delete _this.registeredTemplate[registeredTemplate];\n }\n }\n }\n var _loop_1 = function (tagObject) {\n if (tagObject.instance) {\n /* istanbul ignore next */\n tagObject.instance.clearTemplate((templateNames && templateNames.filter(function (val) {\n return (new RegExp(tagObject.name).test(val) ? true : false);\n })));\n }\n };\n for (var _d = 0, _e = _this.tagObjects; _d < _e.length; _d++) {\n var tagObject = _e[_d];\n _loop_1(tagObject);\n }\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 {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @return {void}\n * @private\n */\nexport function setValue(nameSpace, value, object) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n /* istanbul ignore next */\n var fromObj = object || {};\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (i + 1 === keys.length) {\n fromObj[key] = value === undefined ? {} : value;\n }\n else if (fromObj[key] === undefined) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return fromObj;\n}\n","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nfunction disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nfunction createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nfunction setImmediate(handler) {\n var unbind;\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nfunction getValue(nameSpace, obj) {\n // eslint-disable-next-line\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nfunction setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\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[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\n// eslint-disable-next-line\nfunction deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\n// eslint-disable-next-line\nvar containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\n// eslint-disable-next-line\nfunction isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nfunction getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nfunction merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nfunction extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n // eslint-disable-next-line\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n // eslint-disable-next-line\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n // eslint-disable-next-line\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {Object} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nfunction isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {Object} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nfunction isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nfunction getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nfunction debounce(eventFunction, delay) {\n // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\n// eslint-disable-next-line\nfunction queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nfunction isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nfunction compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nfunction throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n // eslint-disable-next-line\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nfunction print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\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 var regExp = RegExp;\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 var regExp = RegExp;\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, option);\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, option) {\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, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\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 if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\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, option) {\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 var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\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 var regExp = RegExp;\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 regExp$1 = RegExp;\nvar parseRegex = new regExp$1('^([^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 regExp = RegExp;\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 /* eslint-disable */\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 = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[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 dOptions.isCustomFormat = true;\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 // eslint-disable-next-line\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\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNullOrUndefined(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n }\n else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNullOrUndefined(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNullOrUndefined(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNullOrUndefined(this.fetchRequest)) {\n this.data = !isNullOrUndefined(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: { 'Content-Type': this.contentType },\n body: this.data\n });\n }\n var eventArgs = { cancel: false, fetchRequest: this.fetchRequest };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n // eslint-disable-next-line\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n // eslint-disable-next-line\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n }\n catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNullOrUndefined(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\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 * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\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 && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\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 var regExp = RegExp;\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 if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\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', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', '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 = '22';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/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=MjI=&utm_source=license&utm_medium=listing&utm_campaign=license-information\";\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 var regExp = RegExp;\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.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : 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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : 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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : 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.isSafari() ? 'touchstart' : 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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : 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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : 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.enableAutoScroll) {\n this.setDragArea();\n }\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 var isDialogEle = this.helperElement.classList.contains('e-dialog');\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 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n 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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : 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 (document.scrollingElement && (!isdragscroll && !this.clone)) {\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.isSafari() ? 'touchend' : 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.isSafari() ? 'touchend' : 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 | Function} 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 if (typeof template === 'function') {\n return template;\n }\n else {\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}\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 && str !== \"true\" && str !== \"false\") ? 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, Fetch, 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, initializeCSPTemplate, 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.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || this.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) {\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.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || this.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) {\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 this.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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\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 var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !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.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE$1)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE$1)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE$1)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\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 var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\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.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, 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', 'role'];\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n evt.stopPropagation();\n evt.preventDefault();\n }\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 var attributeArray = [];\n for (var i = 0; i < data.length; i++) {\n var fieldsData = this.getFieldValues(data[i]);\n var attributesValue = fieldsData.htmlAttributes;\n attributeArray.push(attributesValue);\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 if (!isNullOrUndefined(attributeArray[i])) {\n if (attributeArray.length > i && Object.keys(attributeArray[i]).length) {\n var htmlAttr = [];\n htmlAttr = (Object.keys(attributeArray[i]));\n for (var j = 0; j < htmlAttr.length; j++) {\n wrapper.setAttribute(htmlAttr[j], attributeArray[i][htmlAttr[j]]);\n }\n }\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 htmlAttributes: typeof data === 'object' ? (data.htmlAttributes ? data.htmlAttributes : this.htmlAttributes) : this.htmlAttributes\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 * @param {number | HTMLElement } fields - We can pass index number or element of chip.\n * {% codeBlock src='chips/find/index.md' %}{% endcodeBlock %}\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 * @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 * {% codeBlock src='chips/add/index.md' %}{% endcodeBlock %}\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 * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/select/index.md' %}{% endcodeBlock %}\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 * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/remove/index.md' %}{% endcodeBlock %}\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 * {% 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 * {% 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, \"htmlAttributes\", 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), FIXEDFAB);\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 (typeof template !== 'function' && 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.removeRippleEffect = null;\n this.keyboardModule.destroy();\n this.popupKeyboardModule.destroy();\n this.keyboardModule = null;\n this.popupKeyboardModule = null;\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, Touch, 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/* eslint-disable @typescript-eslint/no-unused-expressions */\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 =\n 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 &&\n 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 (!isNullOrUndefined(date) && 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;\n if (!isNullOrUndefined(date)) {\n value = date.valueOf();\n }\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].\n 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 !Browser.isDevice && 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 !Browser.isDevice && 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 (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (!isNullOrUndefined(this.contentElement) && 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 // eslint-disable-next-line use-isnan\n if (!this.isMultiSelection && +this.value !== Number.NaN && (!isNullOrUndefined(this.value) &&\n !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 if (this.calendarInstance.locale === 'ar') {\n startHdrYr = Number(startHdrYr.replace(/[٠١٢٣٤٥٦٧٨٩]/g, function (d) { return String.fromCharCode(d.charCodeAt(0) - 1632 + 48); }));\n endHdrYr = Number(endHdrYr.replace(/[٠١٢٣٤٥٦٧٨٩]/g, function (d) { return String.fromCharCode(d.charCodeAt(0) - 1632 + 48); }));\n }\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 // eslint-disable-next-line no-var\n for (var i = 0; i <= splityear.length; i++) {\n endHdrYr = endHdrYr - splityear[i] === 2 || splityear[i]\n - endHdrYr === 2 ? (parseInt(endHdrYr, 10) + 1).toString() :\n endHdrYr - splityear[i] === 3 || splityear[i] - endHdrYr === 3 ?\n (parseInt(endHdrYr, 10) + 2).toString() : endHdrYr - splityear[i] === 4 ||\n splityear[i] - endHdrYr === 4 ? (parseInt(endHdrYr, 10) + 3).toString() :\n endHdrYr - splityear[i] === 5 || splityear[i] - endHdrYr === 5 ?\n (parseInt(endHdrYr, 10) + 4).toString() : endHdrYr;\n if (endHdrYr - splityear[i] === 0 || splityear[i] - endHdrYr === 0) {\n endHdrYr = (parseInt(endHdrYr, 10) - 1).toString();\n }\n }\n if (endHdrYr - splityear[i] === 8 || splityear[i] - endHdrYr === 8) {\n endHdrYr = (parseInt(endHdrYr, 10) - 9).toString();\n startHdrYr = (parseInt(endHdrYr, 10) - 9).toString();\n }\n if (endHdrYr - splityear[i] === 7 || splityear[i] - endHdrYr === 7) {\n endHdrYr = (parseInt(endHdrYr, 10) - 8).toString();\n startHdrYr = (parseInt(endHdrYr, 10) - 9).toString();\n }\n startHdrYr = endHdrYr - startHdrYr === 10\n ? (parseInt(startHdrYr, 10) + 1).toString() : endHdrYr - startHdrYr === 11\n ? (parseInt(startHdrYr, 10) + 2).toString() : endHdrYr - startHdrYr === 12\n ? (parseInt(startHdrYr, 10) + 3).toString() : startHdrYr;\n if (endHdrYr - startHdrYr === 8) {\n startHdrYr = (parseInt(startHdrYr, 10) - 1).toString();\n }\n }\n if (this.calendarInstance.nextIconClicked) {\n for (var i_1 = 0; i_1 <= splityear.length; i_1++) {\n if (startHdrYr - splityear[i_1] === 0 || splityear[i_1] - startHdrYr === 0) {\n startHdrYr = (parseInt(startHdrYr, 10) + 1).toString();\n }\n if (startHdrYr - splityear[i_1] === 2 && startHdrYr > splityear[i_1].trim()) {\n startHdrYr = (parseInt(startHdrYr, 10) - 1).toString();\n }\n if (splityear[i_1] - startHdrYr === 1 && startHdrYr < splityear[i_1].trim()) {\n startHdrYr = (parseInt(startHdrYr, 10) + 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(), 10) + 1).toString();\n endHdrYr = (parseInt(startHdrYr, 10) + 9).toString();\n }\n endHdrYr = endHdrYr - startHdrYr === 10 ? (parseInt(endHdrYr, 10) - 1).toString() : endHdrYr;\n endHdrYr = endHdrYr - startHdrYr === 7\n ? (parseInt(endHdrYr, 10) + 2).toString() : endHdrYr - startHdrYr === 8\n ? (parseInt(endHdrYr, 10) + 1).toString() : endHdrYr;\n }\n if (this.calendarInstance.locale === 'ar') {\n var startHeaderYear = this.calendarInstance.globalize.formatDate(startYr, { type: 'dateTime', format: 'y', calendar: 'islamic' });\n var endHeaderYear = this.calendarInstance.globalize.formatDate(endYr, { type: 'dateTime', format: 'y', calendar: 'islamic' });\n this.calendarInstance.headerTitleElement.textContent = startHeaderYear + ' - ' + (endHeaderYear);\n }\n else {\n this.calendarInstance.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n }\n this.calendarInstance.nextIconClicked = this.calendarInstance.previousIconClicked = false;\n var year = (parseInt(startHdrYr, 10) - 2).toString();\n startFullYr = Math.round(parseInt(startHdrYr, 10) * 0.97 + 622);\n endFullYr = Math.round(parseInt(endHdrYr, 10) * 0.97 + 622);\n var startYear = Math.round(parseInt(year, 10) * 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, 10) - 1 || islamicDate.year >= startHdrYr &&\n islamicDate.year <= endFullYr || islamicDate.year === parseInt(endHdrYr, 10) + 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, 10) - 1 || (year_1 < startFullYr) ||\n (year_1 > endFullYr) && islamicDate.year !== parseInt(endHdrYr, 10)) {\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() &&\n !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.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.isBlur = 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 if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\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 if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInput(true);\n this.updateInputValue(this.maskedDateValue);\n }\n else if (!this.enableMask) {\n this.updateInput(true);\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 if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\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, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n this.disabledDates(isDynamic, isBlur);\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.isBlur = true;\n this.updateInput(false, true);\n this.isBlur = false;\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 {\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 }\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 pattern = /^y/;\n var charPattern = /[^a-zA-Z]/;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else if (!pattern.test(this.formatString) || charPattern.test(this.formatString)) {\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 else {\n format = this.formatString;\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 (Browser.isDevice && _this.fullScreenMode) {\n _this.iconRight = parseInt(window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).marginRight, 10) > 16 ? true : false;\n _this.touchModule = new Touch(_this.calendarElement.querySelector(\".e-content.e-month\"), {\n swipe: _this.CalendarSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector(\".e-content.e-month\"), \"touchstart\", _this.TouchStartHandler, _this);\n }\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.CalendarSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRight) {\n switch (e.swipeDirection) {\n case \"Left\":\n direction = 1;\n break;\n case \"Right\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case \"Up\":\n direction = 1;\n break;\n case \"Down\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n if (this.touchStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchStart = false;\n }\n };\n DatePicker.prototype.TouchStartHandler = function (e) {\n this.touchStart = true;\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 if (this.fullScreenMode) {\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelCloseHandler, this);\n var modelTodayButton = this.calendarElement.querySelector(\"button.e-today\");\n h2.classList.add(\"e-day-wrapper\");\n modelTodayButton.classList.add(\"e-outline\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTodayButton);\n }\n if (!this.fullScreenMode)\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.modelCloseHandler = function (e) {\n this.hide();\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 && !this.isBlur) {\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 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))\n && +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 popupLeft = parseFloat(_this.popupWrapper.style.left) - (_this.popupWrapper.offsetWidth - _this.inputWrapper.container.offsetWidth);\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 if (_this.enableRtl && popupLeft > 0) {\n _this.popupWrapper.style.left = popupLeft + \"px\";\n }\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) && (prevent && (isNullOrUndefined(this.preventArgs) || !this.preventArgs.cancel))) {\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, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = 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', isBlur: isBlur\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) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 if (!isNullOrUndefined(this.inputWrapper)) {\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 if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n this.updateInputValue('');\n }\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(false)\n ], DatePicker.prototype, \"fullScreenMode\", 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 if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\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 = (Browser.isDevice && this.fullScreenMode) ? true : 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] =\n 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 = { format: this.formatString, 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) &&\n !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 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 // eslint-disable-next-line @typescript-eslint/tslint/config\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) &&\n (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 if (this.isMobile && this.fullScreenMode) {\n var modelHeaderIconWrapper = this.createElement(\"div\", { className: \"e-model-header-wrapper\" });\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelRangeCloseHandler, this);\n var modelApplyButton = this.createElement(\"span\", { className: \"e-apply\" });\n EventHandler.add(modelApplyButton, 'mousedown touchstart', this.applyFunction, this);\n modelHeaderIconWrapper.appendChild(modelCloseIcon);\n modelHeaderIconWrapper.appendChild(modelApplyButton);\n headerContainer.appendChild(modelHeaderIconWrapper);\n }\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.modelRangeCloseHandler = function (e) {\n this.hide();\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 if (this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-range-mob-popup-wrap' });\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select Preset\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelRangeCloseHandler, this);\n var presetContent = this.presetElement;\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(presetContent);\n this.popupWrapper.insertBefore(modelWrapper, this.popupWrapper.firstElementChild);\n this.presetElement.style.width = '100%';\n }\n else {\n this.presetElement.style.width = this.inputWrapper.container.getBoundingClientRect().width + 'px';\n }\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 if (_this.isMobile && _this.fullScreenMode) {\n _this.iconRangeRight = _this.calendarElement && window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).cssFloat;\n if (_this.iconRangeRight) {\n _this.touchRangeModule = new Touch(_this.calendarElement.querySelector(\".e-content.e-month\"), {\n swipe: _this.dateRangeSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector(\".e-content.e-month\"), \"touchstart\", _this.touchStartRangeHandler, _this);\n }\n }\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 if (_this.enableRtl) {\n var popupLeft = parseFloat(_this.popupWrapper.style.left) - (_this.popupWrapper.offsetWidth - _this.inputWrapper.container.offsetWidth);\n _this.popupWrapper.style.left = popupLeft > 0 ? popupLeft + \"px\" : _this.popupWrapper.style.left;\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.dateRangeSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRangeRight == 'left') {\n switch (e.swipeDirection) {\n case \"Left\":\n direction = 1;\n break;\n case \"Right\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case \"Up\":\n direction = 1;\n break;\n case \"Down\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n if (this.touchRangeStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchRangeStart = false;\n }\n };\n DateRangePicker.prototype.touchStartRangeHandler = function (e) {\n this.touchRangeStart = true;\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 if (this.fullScreenMode && this.isMobile) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\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) &&\n !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 // eslint-disable-next-line @typescript-eslint/tslint/config\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 Property(false)\n ], DateRangePicker.prototype, \"fullScreenMode\", 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 if (!isNullOrUndefined(this.value)) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n }\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 if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\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.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 if (Browser.isDevice && this.fullScreenMode) {\n this.popupObj.element.style.maxHeight = \"100%\";\n this.popupObj.element.style.width = \"100%\";\n }\n else {\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.timePopupCloseHandler, this);\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n this.popupWrapper.insertBefore(modelHeader, this.popupWrapper.firstElementChild);\n }\n };\n TimePicker.prototype.timePopupCloseHandler = function (e) {\n this.hide();\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) ||\n (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.isPopupOpen()) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupObj = this.popupWrapper = null;\n }\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.createMask();\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)\n && 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]) ?\n 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 && this.value) {\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 if (this.enableMask && isNullOrUndefined(newProp.value)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\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, \"fullScreenMode\", 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 if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\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 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 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 : 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 if (!Browser.isDevice || (Browser.isDevice && !this.fullScreenMode)) {\n this.popupObject.refreshPosition(this.inputElement);\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.dateTimeWrapper.style.left = '0px';\n }\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 if (Browser.isDevice && this.fullScreenMode) {\n this.popupObject.element.style.display = \"flex\";\n this.popupObject.element.style.maxHeight = \"100%\";\n this.popupObject.element.style.width = \"100%\";\n }\n else {\n this.popupObject.element.style.maxHeight = POPUPDIMENSION$1;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-datetime-mob-popup-wrap' });\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.dateTimeCloseHandler, this);\n var timeContent = this.dateTimeWrapper.querySelector(\".e-content\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(timeContent);\n this.dateTimeWrapper.insertBefore(modelWrapper, this.dateTimeWrapper.firstElementChild);\n }\n };\n DateTimePicker.prototype.dateTimeCloseHandler = function (e) {\n this.hide();\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 if (Browser.isDevice && this.fullScreenMode) {\n return popupHeight;\n }\n else {\n return popupHeight > height ? height : popupHeight;\n }\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 if (Browser.isDevice && this.fullScreenMode) {\n var listContent = this.dateTimeWrapper.querySelector('.e-content');\n listContent.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION$1 + lineHeight / HALFPOSITION$1)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION$1 + lineHeight / HALFPOSITION$1)) : height;\n }\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]) ?\n 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 if (this.enableMask) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n }\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(false)\n ], DateTimePicker.prototype, \"fullScreenMode\", 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.isBlur = 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 (mask) {\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 }\n if (this.parent.maskPlaceholder.month) {\n this.defaultConstant['month'] = this.parent.maskPlaceholder.month;\n }\n if (this.parent.maskPlaceholder.year) {\n this.defaultConstant['year'] = this.parent.maskPlaceholder.year;\n }\n if (this.parent.maskPlaceholder.hour) {\n this.defaultConstant['hour'] = this.parent.maskPlaceholder.hour;\n }\n if (this.parent.maskPlaceholder.minute) {\n this.defaultConstant['minute'] = this.parent.maskPlaceholder.minute;\n }\n if (this.parent.maskPlaceholder.second) {\n this.defaultConstant['second'] = this.parent.maskPlaceholder.second;\n }\n if (this.parent.maskPlaceholder.dayOfTheWeek) {\n this.defaultConstant['dayOfTheWeek'] = this.parent.maskPlaceholder.dayOfTheWeek.toString();\n }\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 = true;\n this.isBlur = mask.isBlur;\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()] =\n this.l10n.getConstant(this.objectString[i].toString());\n }\n };\n MaskedDateTime.prototype.validCharacterCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n if (this.parent.moduleName !== 'timepicker') {\n if (start === this.hiddenMask.length && this.mask === this.parent.inputElement.value) {\n start = 0;\n }\n }\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 if (!this.isBlur) {\n this.validCharacterCheck();\n }\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\n || 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 ||\n 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 {\n var date = (this.isDayPart && newDateValue.getDate().toString().length < 2 &&\n !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 }\n case 'M':\n {\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 {\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 }\n case 'y':\n {\n var year = (this.isYearPart && (newDateValue.getFullYear().toString().length < 4\n && !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 }\n case 'h':\n this.hour = (this.isHourPart && (newDateValue.getHours() % 12 || 12).toString().length < 2\n && !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 &&\n !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 {\n var minutes = (this.isMinutePart && newDateValue.getMinutes().toString().length < 2\n && !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 }\n case 's':\n {\n var seconds = (this.isSecondsPart && newDateValue.getSeconds().toString().length < 2 &&\n !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 }\n case 'a':\n {\n this.periodCharacter += newVal[start - 1].toLowerCase();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var periodString = (this.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n for (var i = 0; this.periodCharacter.length > 0; i++) {\n if ((periodString[periodkeys[0]].toLowerCase().indexOf(this.periodCharacter) === 0\n && newDateValue.getHours() >= 12) || (periodString[periodkeys[1]].toLowerCase().\n 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 }\n break;\n }\n default:\n break;\n }\n this.maskDateValue = newDateValue;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MaskedDateTime.prototype.formatCheck = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n function formatValueSpecifier(formattext) {\n var result;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysAbbreviated = proxy.getCulturedValue('days[stand-alone].abbreviated');\n var dayKeyAbbreviated = Object.keys(daysAbbreviated);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysWide = (proxy.getCulturedValue('days[stand-alone].wide'));\n var dayKeyWide = Object.keys(daysWide);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n this.differenceCheck();\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.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 };\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;\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 {\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 }\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 };\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/* eslint-disable */\nvar Utils = /** @__PURE__ @class */ (function () {\n function Utils() {\n }\n Utils.bitReverse = function (value) {\n return (Utils.reverseBits[value & 15] << 12\n | Utils.reverseBits[(value >> 4) & 15] << 8\n | Utils.reverseBits[(value >> 8) & 15] << 4\n | Utils.reverseBits[value >> 12]);\n };\n Utils.bitConverterToInt32 = function (value, index) {\n return value[index] | value[index + 1] << 8 | value[index + 2] << 16 | value[index + 3] << 24;\n };\n Utils.bitConverterToInt16 = function (value, index) {\n return value[index] | value[index + 1] << 8;\n };\n Utils.bitConverterToUInt32 = function (value) {\n var uint = new Uint32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterToUInt16 = function (value, index) {\n var uint = new Uint16Array(1);\n uint[0] = (value[index] | value[index + 1] << 8);\n return uint[0];\n };\n Utils.bitConverterUintToInt32 = function (value) {\n var uint = new Int32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterInt32ToUint = function (value) {\n var uint = new Uint32Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.bitConverterInt32ToInt16 = function (value) {\n var uint = new Int16Array(1);\n uint[0] = value;\n return uint[0];\n };\n Utils.byteToString = function (value) {\n var str = '';\n for (var i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return str;\n };\n Utils.byteIntToString = function (value) {\n var str = '';\n for (var i = 0; i < value.length; i++) {\n str += String.fromCharCode(value[i]);\n }\n return str;\n };\n Utils.arrayCopy = function (source, sourceIndex, destination, destinationIndex, dataToCopy) {\n var temp = new Uint8Array(source.buffer, sourceIndex);\n var data = temp.subarray(0, dataToCopy);\n destination.set(data, destinationIndex);\n };\n Utils.mergeArray = function (arrayOne, arrayTwo) {\n var mergedArray = new Uint8Array(arrayOne.length + arrayTwo.length);\n mergedArray.set(arrayOne);\n mergedArray.set(arrayTwo, arrayOne.length);\n return mergedArray;\n };\n /**\n * @private\n */\n Utils.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var encode1;\n var encode2;\n var encode3;\n var encode4;\n var count = 0;\n var resultIndex = 0;\n /*let dataUrlPrefix: string = 'data:';*/\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 if (input.charAt(input.length - 2) === keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 variant (base64url for example)\n throw new Error('Invalid base64 input, bad content length.');\n }\n var output = new Uint8Array(totalLength | 0);\n while (count < input.length) {\n encode1 = keyStr.indexOf(input.charAt(count++));\n encode2 = keyStr.indexOf(input.charAt(count++));\n encode3 = keyStr.indexOf(input.charAt(count++));\n encode4 = keyStr.indexOf(input.charAt(count++));\n chr1 = (encode1 << 2) | (encode2 >> 4);\n chr2 = ((encode2 & 15) << 4) | (encode3 >> 2);\n chr3 = ((encode3 & 3) << 6) | encode4;\n output[resultIndex++] = chr1;\n if (encode3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (encode4 !== 64) {\n output[resultIndex++] = chr3;\n }\n }\n return output;\n };\n Utils.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n Utils.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return Utils;\n}());\n\n/* eslint-enable */\n\n/* eslint-disable */\nvar CRC32TABLE = [];\n/// \n/// Size of the int value in bytes.\n/// \nvar INT_SIZE = 4;\n/// \n/// Size of the short value in bytes.\n/// \nvar SHORT_SIZE = 2;\n/// \n/// End of central directory signature.\n/// \nvar CentralDirectoryEndSignature = 0x06054b50;\n/// \n/// Offset to the size field in the End of central directory record.\n/// \nvar CentralDirSizeOffset = 12;\n/// \n/// Central header signature.\n/// \nvar CentralHeaderSignature = 0x02014b50;\n/// \n/// Buffer size.\n/// \nvar BufferSize = 4096;\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, \"items\", {\n get: function () {\n return this.files;\n },\n enumerable: true,\n configurable: true\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 ZipArchive.prototype.open = function (base64String) {\n //return promise = new Promise((resolve: Function, reject: Function) => {\n var zipByteArray = Utils.encodedString(base64String);\n if (zipByteArray.length == 0)\n throw new DOMException(\"stream\");\n var stream = new Stream(zipByteArray);\n //let lCentralDirEndPosition = this.findValueFromEnd( arrBuffer, Constants.CentralDirectoryEndSignature, 65557 );\n var lCentralDirEndPosition = ZipArchive.findValueFromEnd(stream, CentralDirectoryEndSignature, 65557);\n if (lCentralDirEndPosition < 0)\n throw new DOMException(\"Can't locate end of central directory record. Possible wrong file format or archive is corrupt.\");\n // Step2. Locate central directory and iterate through all items\n stream.position = lCentralDirEndPosition + CentralDirSizeOffset;\n var iCentralDirSize = ZipArchive.ReadInt32(stream);\n var lCentralDirPosition = lCentralDirEndPosition - iCentralDirSize;\n // verify that this is really central directory\n stream.position = lCentralDirPosition;\n this.readCentralDirectoryDataAndExtractItems(stream);\n //});\n // let zipArchive: ZipArchive = this;\n //let promise: Promise;\n // return promise = new Promise((resolve: Function, reject: Function) => {\n // let reader: FileReader = new FileReader();\n // reader.onload = (e: Event) => {\n // let data: Uint8Array = new Uint8Array((e.target as any).result);\n // let zipReader: ZipReader = new ZipReader(data);\n // zipReader.readEntries().then((entries: ZipEntry[]) => {\n // for (let i: number = 0; i < entries.length; i++) {\n // let entry: ZipEntry = entries[i];\n // let item: ZipArchiveItem = new ZipArchiveItem(zipArchive, entry.fileName);\n // item.data = entry.data;\n // item.compressionMethod = entry.compressionMethod;\n // item.crc = entry.crc;\n // item.lastModified = entry.lastModified;\n // item.lastModifiedDate = entry.lastModifiedDate;\n // item.size = entry.size;\n // item.uncompressedSize = entry.uncompressedSize;\n // zipArchive.addItem(item);\n // }\n // resolve(zipArchive);\n // });\n // };\n // reader.readAsArrayBuffer(fileName);\n // });\n };\n /// \n /// Read central directory record from the stream.\n /// \n /// Stream to read from.\n ZipArchive.prototype.readCentralDirectoryDataAndExtractItems = function (stream) {\n if (stream == null)\n throw new DOMException(\"stream\");\n var itemHelper;\n while (ZipArchive.ReadInt32(stream) == CentralHeaderSignature) {\n itemHelper = new ZipArchiveItemHelper();\n itemHelper.readCentralDirectoryData(stream);\n \n // let item: ZipArchiveItem = new ZipArchiveItem(this);\n // item.ReadCentralDirectoryData(stream);\n // m_arrItems.Add(item);\n }\n itemHelper.readData(stream, itemHelper.checkCrc);\n itemHelper.decompressData();\n this.files.push(new ZipArchiveItem(itemHelper.unCompressedStream.buffer, itemHelper.name));\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 ZipArchive.findValueFromEnd = function (stream, value, maxCount) {\n if (stream == null)\n throw new DOMException(\"stream\");\n // if( !stream.CanSeek || !stream.CanRead )\n // throw new ArgumentOutOfRangeException( \"We need to have seekable and readable stream.\" );\n // read last 4 bytes and compare with required value\n var lStreamSize = stream.inputStream.buffer.byteLength;\n if (lStreamSize < 4)\n return -1;\n var arrBuffer = new Uint8Array(4);\n var lLastPos = Math.max(0, lStreamSize - maxCount);\n var lCurrentPosition = lStreamSize - 1 - INT_SIZE;\n stream.position = lCurrentPosition;\n stream.read(arrBuffer, 0, INT_SIZE);\n var uiCurValue = arrBuffer[0];\n var bFound = (uiCurValue == value);\n if (!bFound) {\n while (lCurrentPosition > lLastPos) {\n // remove unnecessary byte and replace it with new value.\n uiCurValue <<= 8;\n lCurrentPosition--;\n stream.position = lCurrentPosition;\n uiCurValue += stream.readByte();\n if (uiCurValue == value) {\n bFound = true;\n break;\n }\n }\n }\n return bFound ? lCurrentPosition : -1;\n };\n /// \n /// Extracts Int32 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadInt32 = function (stream) {\n var buffer = new Uint8Array(INT_SIZE);\n if (stream.read(buffer, 0, INT_SIZE) != INT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt32(buffer, 0);\n };\n /// \n /// Extracts Int16 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadInt16 = function (stream) {\n var buffer = new Uint8Array(SHORT_SIZE);\n if (stream.read(buffer, 0, SHORT_SIZE) != SHORT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt16(buffer, 0);\n };\n /// \n /// Extracts unsigned Int16 value from the stream.\n /// \n /// Stream to read data from.\n /// Extracted value.\n ZipArchive.ReadUInt16 = function (stream) {\n {\n var buffer = new Uint8Array(SHORT_SIZE);\n if (stream.read(buffer, 0, SHORT_SIZE) != SHORT_SIZE) {\n throw new DOMException(\"Unable to read value at the specified position - end of stream was reached.\");\n }\n return Utils.bitConverterToInt16(buffer, 0);\n }\n };\n return ZipArchive;\n}());\nvar ZipArchiveItemHelper = /** @__PURE__ @class */ (function () {\n function ZipArchiveItemHelper() {\n /// \n /// Zip header signature.\n /// \n this.headerSignature = 0x04034b50;\n /// \n /// Indicates whether we should check Crc value when reading item's data. Check\n /// is performed when user gets access to decompressed data for the first time.\n /// \n this.checkCrc = true;\n /// \n /// Crc.\n /// \n this.crc32 = 0;\n }\n /// \n /// Read data from the stream based on the central directory.\n /// \n /// Stream to read data from, stream.Position must point at just after correct file header.\n ZipArchiveItemHelper.prototype.readCentralDirectoryData = function (stream) {\n // on the current moment we ignore \"version made by\" and \"version needed to extract\" fields.\n stream.position += 4;\n this.options = ZipArchive.ReadInt16(stream);\n this.compressionMethod = ZipArchive.ReadInt16(stream);\n this.checkCrc = (this.compressionMethod != 99); //COmpression.Defalte != SecurityConstants.AES\n //m_bCompressed = true;\n // on the current moment we ignore \"last mod file time\" and \"last mod file date\" fields.\n var lastModified = ZipArchive.ReadInt32(stream);\n //LastModified = ConvertToDateTime(lastModified);\n this.crc32 = Utils.bitConverterToUInt32(ZipArchive.ReadInt32(stream));\n this.compressedSize = ZipArchive.ReadInt32(stream);\n this.originalSize = ZipArchive.ReadInt32(stream);\n var iFileNameLength = ZipArchive.ReadInt16(stream);\n var iExtraFieldLenth = ZipArchive.ReadInt16(stream);\n var iCommentLength = ZipArchive.ReadInt16(stream);\n // on the current moment we ignore and \"disk number start\" (2 bytes),\n // \"internal file attributes\" (2 bytes).\n stream.position += 4;\n this.externalAttributes = ZipArchive.ReadInt32(stream);\n this.localHeaderOffset = ZipArchive.ReadInt32(stream);\n var arrBuffer = new Uint8Array(iFileNameLength);\n stream.read(arrBuffer, 0, iFileNameLength);\n var m_strItemName = Utils.byteToString(arrBuffer);\n m_strItemName = m_strItemName.replace(\"\\\\\", \"/\");\n this.name = m_strItemName;\n stream.position += iExtraFieldLenth + iCommentLength;\n if (this.options != 0)\n this.options = 0;\n };\n /// \n /// Reads zipped data from the stream.\n /// \n /// Stream to read data from.\n /// Indicates whether we should check crc value after data decompression.\n ZipArchiveItemHelper.prototype.readData = function (stream, checkCrc) {\n if (stream.length == 0)\n throw new DOMException(\"stream\");\n stream.position = this.localHeaderOffset;\n this.checkCrc = checkCrc;\n this.readLocalHeader(stream);\n this.readCompressedData(stream);\n };\n ZipArchiveItemHelper.prototype.decompressData = function () {\n if (this.compressionMethod == 8) {\n if (this.originalSize > 0) {\n this.decompressDataOld();\n }\n }\n };\n ZipArchiveItemHelper.prototype.decompressDataOld = function () {\n var reader = new CompressedStreamReader(this.compressedStream, true);\n var decompressedData;\n if (this.originalSize > 0)\n decompressedData = new Stream(new Uint8Array(this.originalSize));\n var arrBuffer = new Uint8Array(BufferSize);\n var iReadBytes;\n while ((iReadBytes = reader.read(arrBuffer, 0, BufferSize)) > 0) {\n // past = new Uint8Array(decompressedData.length);\n // let currentBlock: Uint8Array = arrBuffer.subarray(0, iReadBytes);\n decompressedData.write(arrBuffer.subarray(0, iReadBytes), 0, iReadBytes);\n }\n this.unCompressedStream = decompressedData.toByteArray();\n // this.originalSize = decompressedData.Length;\n // m_bControlStream = true;\n // m_streamData = decompressedData;\n // decompressedData.SetLength( m_lOriginalSize );\n // decompressedData.Capacity = ( int )m_lOriginalSize;\n if (this.checkCrc) {\n //TODO: fix this\n //CheckCrc(decompressedData.ToArray());\n }\n //m_streamData.Position = 0;\n };\n /// \n /// Extracts local header from the stream.\n /// \n /// Stream to read data from.\n ZipArchiveItemHelper.prototype.readLocalHeader = function (stream) {\n if (stream.length == 0)\n throw new DOMException(\"stream\");\n if (ZipArchive.ReadInt32(stream) != this.headerSignature)\n throw new DOMException(\"Can't find local header signature - wrong file format or file is corrupt.\");\n // TODO: it is good to verify data read from the central directory record,\n // but on the current moment we simply skip it.\n stream.position += 22;\n var iNameLength = ZipArchive.ReadInt16(stream);\n var iExtraLength = ZipArchive.ReadUInt16(stream);\n if (this.compressionMethod == 99) //SecurityConstants.AES\n {\n // stream.Position += iNameLength + 8;\n // m_archive.EncryptionAlgorithm = (EncryptionAlgorithm)stream.ReadByte();\n // m_actualCompression = new byte[2];\n // stream.Read(m_actualCompression, 0, 2);\n }\n else if (iExtraLength > 2) {\n stream.position += iNameLength;\n var headerVal = ZipArchive.ReadInt16(stream);\n if (headerVal == 0x0017) //PKZipEncryptionHeader\n throw new DOMException(\"UnSupported\");\n else\n stream.position += iExtraLength - 2;\n }\n else\n stream.position += iNameLength + iExtraLength;\n };\n /// \n /// Extracts compressed data from the stream.\n /// \n /// Stream to read data from.\n ZipArchiveItemHelper.prototype.readCompressedData = function (stream) {\n var dataStream;\n if (this.compressedSize > 0) {\n var iBytesLeft = this.compressedSize;\n dataStream = new Stream(new Uint8Array(iBytesLeft));\n var arrBuffer = new Uint8Array(BufferSize);\n while (iBytesLeft > 0) {\n var iBytesToRead = Math.min(iBytesLeft, BufferSize);\n if (stream.read(arrBuffer, 0, iBytesToRead) != iBytesToRead)\n throw new DOMException(\"End of file reached - wrong file format or file is corrupt.\");\n dataStream.write(arrBuffer.subarray(0, iBytesToRead), 0, iBytesToRead);\n iBytesLeft -= iBytesToRead;\n }\n // if(m_archive.Password != null)\n // {\n // byte[] dataBuffer = new byte[dataStream.Length];\n // dataBuffer = dataStream.ToArray();\n // dataStream=new MemoryStream( Decrypt(dataBuffer));\n // }\n this.compressedStream = new Uint8Array(dataStream.inputStream);\n // m_bControlStream = true;\n }\n else if (this.compressedSize < 0) //If compression size is negative, then read until the next header signature reached.\n {\n // MemoryStream dataStream = new MemoryStream();\n // int bt = 0;\n // bool proceed=true;\n // while (proceed)\n // {\n // if ((bt = stream.ReadByte()) == Constants.HeaderSignatureStartByteValue)\n // {\n // stream.Position -= 1;\n // int headerSignature = ZipArchive.ReadInt32(stream);\n // if (headerSignature==Constants.CentralHeaderSignature || headerSignature==Constants.CentralHeaderSignature)\n // {\n // proceed = false;\n // }\n // stream.Position -= 3;\n // }\n // if (proceed)\n // dataStream.WriteByte((byte)bt);\n // }\n // m_streamData = dataStream;\n // m_lCompressedSize = m_streamData.Length;\n // m_bControlStream = true;\n }\n else if (this.compressedSize == 0) {\n // m_streamData = new MemoryStream();\n }\n };\n return ZipArchiveItemHelper;\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, \"dataStream\", {\n get: function () {\n return this.decompressedStream;\n },\n enumerable: true,\n configurable: true\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/* eslint-enable */\n\n/* eslint-disable */\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\n/* eslint-enable */\n\n/* eslint-disable */\nvar DecompressorHuffmanTree = /** @__PURE__ @class */ (function () {\n function DecompressorHuffmanTree(lengths) {\n this.buildTree(lengths);\n }\n DecompressorHuffmanTree.init = function () {\n var lengths;\n var index;\n // Generate huffman tree for lengths.\n lengths = new Uint8Array(288);\n index = 0;\n while (index < 144) {\n lengths[index++] = 8;\n }\n while (index < 256) {\n lengths[index++] = 9;\n }\n while (index < 280) {\n lengths[index++] = 7;\n }\n while (index < 288) {\n lengths[index++] = 8;\n }\n DecompressorHuffmanTree.m_LengthTree = new DecompressorHuffmanTree(lengths);\n // Generate huffman tree for distances.\n lengths = new Uint8Array(32);\n index = 0;\n while (index < 32) {\n lengths[index++] = 5;\n }\n DecompressorHuffmanTree.m_DistanceTree = new DecompressorHuffmanTree(lengths);\n };\n /// \n /// Prepares data for generating huffman tree.\n /// \n /// Array of counts of each code length.\n /// Numerical values of the smallest code for each code length.\n /// Array of code lengths.\n /// Calculated tree size.\n /// Code.\n DecompressorHuffmanTree.prototype.prepareData = function (blCount, nextCode, lengths) {\n var code = 0;\n var treeSize = 512;\n // Count number of codes for each code length.\n for (var i = 0; i < lengths.length; i++) {\n var length_1 = lengths[i];\n if (length_1 > 0) {\n blCount[length_1]++;\n }\n }\n for (var bits = 1; bits <= DecompressorHuffmanTree.MAX_BITLEN; bits++) {\n nextCode[bits] = code;\n code += blCount[bits] << (16 - bits);\n if (bits >= 10) {\n var start = nextCode[bits] & 0x1ff80;\n var end = code & 0x1ff80;\n treeSize += (end - start) >> (16 - bits);\n }\n }\n /* if( code != 65536 )\n throw new ZipException( \"Code lengths don't add up properly.\" );*/\n return { 'code': code, 'treeSize': treeSize };\n };\n /// \n /// Generates huffman tree.\n /// \n /// Array of counts of each code length.\n /// Numerical values of the smallest code for each code length.\n /// Precalculated code.\n /// Array of code lengths.\n /// Calculated size of the tree.\n /// Generated tree.\n DecompressorHuffmanTree.prototype.treeFromData = function (blCount, nextCode, lengths, code, treeSize) {\n var tree = new Int16Array(treeSize);\n var pointer = 512;\n var increment = 1 << 7;\n for (var bits = DecompressorHuffmanTree.MAX_BITLEN; bits >= 10; bits--) {\n var end = code & 0x1ff80;\n code -= blCount[bits] << (16 - bits);\n var start = code & 0x1ff80;\n for (var i = start; i < end; i += increment) {\n tree[Utils.bitReverse(i)] = Utils.bitConverterInt32ToInt16((-pointer << 4) | bits);\n pointer += 1 << (bits - 9);\n }\n }\n for (var i = 0; i < lengths.length; i++) {\n var bits = lengths[i];\n if (bits == 0) {\n continue;\n }\n code = nextCode[bits];\n var revcode = Utils.bitReverse(code);\n if (bits <= 9) {\n do {\n tree[revcode] = Utils.bitConverterInt32ToInt16((i << 4) | bits);\n revcode += 1 << bits;\n } while (revcode < 512);\n }\n else {\n var subTree = tree[revcode & 511];\n var treeLen = 1 << (subTree & 15);\n subTree = -(subTree >> 4);\n do {\n tree[subTree | (revcode >> 9)] = Utils.bitConverterInt32ToInt16((i << 4) | bits);\n revcode += 1 << bits;\n } while (revcode < treeLen);\n }\n nextCode[bits] = code + (1 << (16 - bits));\n }\n return tree;\n };\n /// \n /// Builds huffman tree from array of code lengths.\n /// \n /// Array of code lengths.\n DecompressorHuffmanTree.prototype.buildTree = function (lengths) {\n // Count of codes for each code length.\n var blCount = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n // Numerical value of the smallest code for each code length.\n var nextCode = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n var prepareData = this.prepareData(blCount, nextCode, lengths);\n this.m_Tree = this.treeFromData(blCount, nextCode, lengths, prepareData.code, prepareData.treeSize);\n };\n /// \n /// Reads and decompresses one symbol.\n /// \n /// \n /// \n DecompressorHuffmanTree.prototype.unpackSymbol = function (input) {\n var lookahead;\n var symbol;\n if ((lookahead = input.peekBits(9)) >= 0) {\n if ((symbol = this.m_Tree[lookahead]) >= 0) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n var subtree = -(symbol >> 4);\n var bitlen = symbol & 15;\n if ((lookahead = input.peekBits(bitlen)) >= 0) {\n symbol = this.m_Tree[subtree | (lookahead >> 9)];\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n var bits = input.availableBits;\n lookahead = input.peekBits(bits);\n symbol = this.m_Tree[subtree | (lookahead >> 9)];\n if ((symbol & 15) <= bits) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n return -1;\n }\n }\n }\n else {\n var bits = input.availableBits;\n lookahead = input.peekBits(bits);\n symbol = this.m_Tree[lookahead];\n if (symbol >= 0 && (symbol & 15) <= bits) {\n input.skipBits((symbol & 15));\n return symbol >> 4;\n }\n else {\n return -1;\n }\n }\n };\n Object.defineProperty(DecompressorHuffmanTree, \"lengthTree\", {\n /// \n /// GET huffman tree for encoding and decoding lengths.\n /// \n get: function () {\n return this.m_LengthTree;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DecompressorHuffmanTree, \"distanceTree\", {\n /// \n /// GET huffman tree for encoding and decoding distances.\n /// \n get: function () {\n return this.m_DistanceTree;\n },\n enumerable: true,\n configurable: true\n });\n /// \n /// Maximum count of bits.\n /// \n DecompressorHuffmanTree.MAX_BITLEN = 15;\n return DecompressorHuffmanTree;\n}());\n\n/* eslint-enable */\n\n/* eslint-disable */\n/// \n/// Checksum calculator, based on Adler32 algorithm.\n/// \nvar ChecksumCalculator$1 = /** @__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 /// \n /// Current checksum.\n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n ChecksumCalculator.ChecksumUpdate = function (checksum, buffer, offset, length) {\n var checkSumUInt = checksum;\n var s1 = checkSumUInt & 65535;\n var s2 = checkSumUInt >> this.DEF_CHECKSUM_BIT_OFFSET;\n while (length > 0) {\n var steps = Math.min(length, this.DEF_CHECKSUM_ITERATIONSCOUNT);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (buffer[offset++] & 255);\n s2 = s2 + s1;\n }\n s1 %= this.DEF_CHECKSUM_BASE;\n s2 %= this.DEF_CHECKSUM_BASE;\n }\n checkSumUInt = (s2 << this.DEF_CHECKSUM_BIT_OFFSET) | s1;\n checksum = checkSumUInt;\n };\n /// \n /// Generates checksum by calculating checksum of the\n /// given buffer.\n /// \n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n ChecksumCalculator.ChecksumGenerate = function (buffer, offset, length) {\n var result = 1;\n ChecksumCalculator.ChecksumUpdate(result, buffer, offset, length);\n return result;\n };\n /// \n /// Bits offset, used in adler checksum calculation.\n /// \n ChecksumCalculator.DEF_CHECKSUM_BIT_OFFSET = 16;\n /// \n /// Lagrest prime, less than 65535\n /// \n ChecksumCalculator.DEF_CHECKSUM_BASE = 65521;\n /// \n /// Count of iteration used in calculated of the adler checksumm.\n /// \n ChecksumCalculator.DEF_CHECKSUM_ITERATIONSCOUNT = 3800;\n return ChecksumCalculator;\n}());\n\n/* eslint-enable */\n\n/* eslint-disable */\nvar CompressedStreamReader = /** @__PURE__ @class */ (function () {\n function CompressedStreamReader(stream, bNoWrap) {\n /// \n /// Code lengths for the code length alphabet.\n /// \n this.defaultHuffmanDynamicTree = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n /// \n /// Mask for compression method to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_METHOD_MASK = 15 << 8;\n /// \n /// Mask for compression info to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_INFO_MASK = 240 << 8;\n /// \n /// Mask for check bits to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FCHECK = 31;\n /// \n /// Mask for dictionary presence to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FDICT = 32;\n /// \n /// Mask for compression level to be decoded from 16-bit header.\n /// \n this.DEF_HEADER_FLAGS_FLEVEL = 192;\n /// \n /// Maximum size of the data window.\n /// \n this.DEF_MAX_WINDOW_SIZE = 65535;\n /// \n /// Maximum length of the repeatable block.\n /// \n this.DEF_HUFFMAN_REPEATE_MAX = 258;\n /// \n /// End of the block sign.\n /// \n this.DEF_HUFFMAN_END_BLOCK = 256;\n /// \n /// Minimal length code.\n /// \n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE = 257;\n /// \n /// Maximal length code.\n /// \n this.DEF_HUFFMAN_LENGTH_MAXIMUMCODE = 285;\n /// \n /// Maximal distance code.\n /// \n this.DEF_HUFFMAN_DISTANCE_MAXIMUMCODE = 29;\n /// \n /// Currently calculated checksum,\n /// based on Adler32 algorithm.\n /// \n this.mCheckSum = 1;\n /// \n /// Currently read 4 bytes.\n /// \n this.tBuffer = 0;\n /// \n /// Count of bits that are in buffer.\n /// \n this.mBufferedBits = 0;\n /// \n /// Temporary buffer.\n /// \n this.mTempBuffer = new Uint8Array(4);\n /// \n /// 32k buffer for unpacked data.\n /// \n this.mBlockBuffer = new Uint8Array(this.DEF_MAX_WINDOW_SIZE);\n /// \n /// No wrap mode.\n /// \n this.mbNoWrap = false;\n /// \n /// Window size, can not be larger than 32k.\n /// \n this.mWindowSize = 0;\n /// \n /// Current position in output stream.\n /// Current in-block position can be extracted by applying Int16.MaxValue mask.\n /// \n this.mCurrentPosition = 0;\n /// \n /// Data length.\n /// Current in-block position can be extracted by applying Int16.MaxValue mask.\n /// \n this.mDataLength = 0;\n /// \n /// Specifies wheather next block can to be read.\n /// Reading can be denied because the header of the last block have been read.\n /// \n this.mbCanReadNextBlock = true;\n /// \n /// Specifies wheather user can read more data from stream.\n /// \n this.mbCanReadMoreData = true;\n /// \n /// Specifies wheather checksum has been read.\n /// \n this.mbCheckSumRead = false;\n if (stream == null) {\n throw new DOMException('stream');\n }\n if (stream.length === 0) {\n throw new DOMException('stream - string can not be empty');\n }\n DecompressorHuffmanTree.init();\n this.mInputStream = new Stream(stream);\n this.mbNoWrap = bNoWrap;\n if (!this.mbNoWrap) {\n this.readZLibHeader();\n }\n this.decodeBlockHeader();\n }\n Object.defineProperty(CompressedStreamReader.prototype, \"mBuffer\", {\n get: function () {\n return this.tBuffer;\n },\n set: function (value) {\n this.tBuffer = value;\n },\n enumerable: true,\n configurable: true\n });\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 /// \n /// Reads specified count of bits without adjusting position.\n /// \n /// Count of bits to be read.\n /// Read value.\n CompressedStreamReader.prototype.peekBits = function (count) {\n if (count < 0) {\n throw new DOMException('count', 'Bits count can not be less than zero.');\n }\n if (count > 32) {\n throw new DOMException('count', 'Count of bits is too large.');\n }\n // If buffered data is not enough to give result,\n // fill buffer.\n if (this.mBufferedBits < count) {\n this.fillBuffer();\n }\n // If you want to read 4 bytes and there is partial data in\n // buffer, than you will fail.\n if (this.mBufferedBits < count) {\n return -1;\n }\n // Create bitmask for reading of count bits\n var bitMask = ~(4294967295 << count);\n var result = Utils.bitConverterUintToInt32(this.mBuffer & bitMask);\n //Debug.WriteLine( /*new string( ' ', 32 - mBufferedBits + (int)( ( 32 - mBufferedBits ) / 8 ) ) + BitsToString( (int)mBuffer, mBufferedBits ) + \" \" + BitsToString( result, count ) +*/ \" \" + result.ToString() );\n return result;\n };\n CompressedStreamReader.prototype.fillBuffer = function () {\n var length = 4 - (this.mBufferedBits >> 3) -\n (((this.mBufferedBits & 7) !== 0) ? 1 : 0);\n if (length === 0) {\n return;\n }\n //TODO: fix this\n var bytesRead = this.mInputStream.read(this.mTempBuffer, 0, length);\n for (var i = 0; i < bytesRead; i++) {\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer |\n (Utils.bitConverterInt32ToUint(this.mTempBuffer[i] << this.mBufferedBits)));\n this.mBufferedBits += 8;\n }\n //TODO: fix this\n };\n /// \n /// Skips specified count of bits.\n /// \n /// Count of bits to be skipped.\n CompressedStreamReader.prototype.skipBits = function (count) {\n if (count < 0) {\n throw new DOMException('count', 'Bits count can not be less than zero.');\n }\n if (count === 0) {\n return;\n }\n if (count >= this.mBufferedBits) {\n count -= this.mBufferedBits;\n this.mBufferedBits = 0;\n this.mBuffer = 0;\n // if something left, skip it.\n if (count > 0) {\n // Skip entire bytes.\n this.mInputStream.position += (count >> 3); //TODO: fix this\n count &= 7;\n // Skip bits.\n if (count > 0) {\n this.fillBuffer();\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n }\n }\n }\n else {\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n }\n };\n Object.defineProperty(CompressedStreamReader.prototype, \"availableBits\", {\n get: function () {\n return this.mBufferedBits;\n },\n enumerable: true,\n configurable: true\n });\n /// \n /// Reads ZLib header with compression method and flags.\n /// \n CompressedStreamReader.prototype.readZLibHeader = function () {\n // first 8 bits - compression Method and flags\n // 8 other - flags\n var header = this.readInt16();\n //Debug.WriteLine( BitsToString( header ) );\n if (header === -1) {\n throw new DOMException('Header of the stream can not be read.');\n }\n if (header % 31 !== 0) {\n throw new DOMException('Header checksum illegal');\n }\n if ((header & this.DEF_HEADER_METHOD_MASK) !== (8 << 8)) {\n throw new DOMException('Unsupported compression method.');\n }\n this.mWindowSize = Math.pow(2, ((header & this.DEF_HEADER_INFO_MASK) >> 12) + 8);\n if (this.mWindowSize > 65535) {\n throw new DOMException('Unsupported window size for deflate compression method.');\n }\n if ((header & this.DEF_HEADER_FLAGS_FDICT) >> 5 === 1) {\n // Get dictionary.\n throw new DOMException('Custom dictionary is not supported at the moment.');\n }\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt16 = function () {\n var result = (this.readBits(8) << 8);\n result |= this.readBits(8);\n return result;\n };\n /// \n /// Reads specified count of bits from stream.\n /// \n /// Count of bits to be read.\n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readBits = function (count) {\n var result = this.peekBits(count);\n if (result === -1) {\n return -1;\n }\n this.mBufferedBits -= count;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> count);\n return result;\n };\n /// \n /// Reads and decodes block of data.\n /// \n /// True if buffer was empty and new data was read, otherwise - False.\n CompressedStreamReader.prototype.decodeBlockHeader = function () {\n if (!this.mbCanReadNextBlock) {\n return false;\n }\n var bFinalBlock = this.readBits(1);\n if (bFinalBlock === -1) {\n return false;\n }\n var blockType = this.readBits(2);\n if (blockType === -1) {\n return false;\n }\n this.mbCanReadNextBlock = (bFinalBlock === 0);\n // ChecksumReset();\n switch (blockType) {\n case 0:\n // Uncompressed data\n this.mbReadingUncompressed = true;\n this.skipToBoundary();\n var length_1 = this.readInt16Inverted();\n var lengthComplement = this.readInt16Inverted();\n if (length_1 !== (lengthComplement ^ 0xffff)) {\n throw new DOMException('Wrong block length.');\n }\n if (length_1 > 65535) {\n throw new DOMException('Uncompressed block length can not be more than 65535.');\n }\n this.mUncompressedDataLength = length_1;\n this.mCurrentLengthTree = null;\n this.mCurrentDistanceTree = null;\n break;\n case 1:\n // Compressed data with fixed huffman codes.\n this.mbReadingUncompressed = false;\n this.mUncompressedDataLength = -1;\n this.mCurrentLengthTree = DecompressorHuffmanTree.lengthTree;\n this.mCurrentDistanceTree = DecompressorHuffmanTree.distanceTree;\n break;\n case 2:\n // Compressed data with dynamic huffman codes.\n this.mbReadingUncompressed = false;\n this.mUncompressedDataLength = -1;\n var trees = this.decodeDynamicHeader(this.mCurrentLengthTree, this.mCurrentDistanceTree);\n this.mCurrentLengthTree = trees.lengthTree;\n this.mCurrentDistanceTree = trees.distanceTree;\n break;\n default:\n throw new DOMException('Wrong block type.');\n }\n return true;\n };\n /// \n /// Discards left-most partially used byte.\n /// \n CompressedStreamReader.prototype.skipToBoundary = function () {\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> (this.mBufferedBits & 7));\n this.mBufferedBits &= ~7;\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt16Inverted = function () {\n var result = (this.readBits(8));\n result |= this.readBits(8) << 8;\n return result;\n };\n /// \n /// Reades dynamic huffman codes from block header.\n /// \n /// Literals/Lengths tree.\n /// Distances tree.\n CompressedStreamReader.prototype.decodeDynamicHeader = function (lengthTree, distanceTree) {\n var bLastSymbol = 0;\n var iLengthsCount = this.readBits(5);\n var iDistancesCount = this.readBits(5);\n var iCodeLengthsCount = this.readBits(4);\n if (iLengthsCount < 0 || iDistancesCount < 0 || iCodeLengthsCount < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n iLengthsCount += 257;\n iDistancesCount += 1;\n var iResultingCodeLengthsCount = iLengthsCount + iDistancesCount;\n var arrResultingCodeLengths = new Uint8Array(iResultingCodeLengthsCount);\n var arrDecoderCodeLengths = new Uint8Array(19);\n iCodeLengthsCount += 4;\n var iCurrentCode = 0;\n while (iCurrentCode < iCodeLengthsCount) {\n var len = this.readBits(3);\n if (len < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n arrDecoderCodeLengths[this.defaultHuffmanDynamicTree[iCurrentCode++]] = len;\n }\n var treeInternalDecoder = new DecompressorHuffmanTree(arrDecoderCodeLengths);\n iCurrentCode = 0;\n for (;;) {\n var symbol = void 0;\n var bNeedBreak = false;\n symbol = treeInternalDecoder.unpackSymbol(this);\n while ((symbol & ~15) === 0) {\n arrResultingCodeLengths[iCurrentCode++] = bLastSymbol = symbol;\n if (iCurrentCode === iResultingCodeLengthsCount) {\n bNeedBreak = true;\n break;\n }\n symbol = treeInternalDecoder.unpackSymbol(this);\n }\n if (bNeedBreak) {\n break;\n }\n if (symbol < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n if (symbol >= 17) {\n bLastSymbol = 0;\n }\n else if (iCurrentCode === 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n var miRepSymbol = symbol - 16;\n var bits = CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_BITS[miRepSymbol];\n var count = this.readBits(bits);\n if (count < 0) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n count += CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS[miRepSymbol];\n if (iCurrentCode + count > iResultingCodeLengthsCount) {\n throw new DOMException('Wrong dynamic huffman codes.');\n }\n while (count-- > 0) {\n arrResultingCodeLengths[iCurrentCode++] = bLastSymbol;\n }\n if (iCurrentCode === iResultingCodeLengthsCount) {\n break;\n }\n }\n var tempArray = new Uint8Array(iLengthsCount);\n tempArray.set(arrResultingCodeLengths.subarray(0, iLengthsCount), 0);\n //sourceArray, sourceIndex, destinationArray, destinationIndex, length\n //Array.copy( arrResultingCodeLengths, 0, tempArray, 0, iLengthsCount );\n lengthTree = new DecompressorHuffmanTree(tempArray);\n tempArray = arrResultingCodeLengths.slice(iLengthsCount, iLengthsCount + iDistancesCount);\n //Array.copy( arrResultingCodeLengths, iLengthsCount, tempArray, 0, iDistancesCount );\n distanceTree = new DecompressorHuffmanTree(tempArray);\n return { 'lengthTree': lengthTree, 'distanceTree': distanceTree };\n };\n /// \n /// Decodes huffman codes.\n /// \n /// True if some data was read.\n CompressedStreamReader.prototype.readHuffman = function () {\n var free = this.DEF_MAX_WINDOW_SIZE - (this.mDataLength - this.mCurrentPosition);\n var dataRead = false;\n //long maxdistance = DEF_MAX_WINDOW_SIZE >> 1;\n var readdata = {};\n // DEF_HUFFMAN_REPEATE_MAX - longest repeatable block, we should always reserve space for it because\n // if we should not, we will have buffer overrun.\n while (free >= this.DEF_HUFFMAN_REPEATE_MAX) {\n var symbol = void 0;\n symbol = this.mCurrentLengthTree.unpackSymbol(this);\n // Only codes 0..255 are valid independent symbols.\n while (((symbol) & ~0xff) === 0) {\n readdata[(this.mDataLength + 1) % this.DEF_MAX_WINDOW_SIZE] = symbol;\n this.mBlockBuffer[this.mDataLength++ % this.DEF_MAX_WINDOW_SIZE] = symbol;\n dataRead = true;\n if (--free < this.DEF_HUFFMAN_REPEATE_MAX) {\n return true;\n }\n //if( (mDataLength - mCurrentPosition ) < maxdistance ) return true;\n symbol = this.mCurrentLengthTree.unpackSymbol(this);\n }\n if (symbol < this.DEF_HUFFMAN_LENGTH_MINIMUMCODE) {\n if (symbol < this.DEF_HUFFMAN_END_BLOCK) {\n throw new DOMException('Illegal code.');\n }\n var numDataRead = dataRead ? 1 : 0;\n this.mbCanReadMoreData = this.decodeBlockHeader();\n var numReadMore = (this.mbCanReadMoreData) ? 1 : 0;\n return (numDataRead | numReadMore) ? true : false;\n }\n if (symbol > this.DEF_HUFFMAN_LENGTH_MAXIMUMCODE) {\n throw new DOMException('Illegal repeat code length.');\n }\n var iRepeatLength = CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_BASE[symbol -\n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE];\n var iRepeatExtraBits = CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION[symbol -\n this.DEF_HUFFMAN_LENGTH_MINIMUMCODE];\n if (iRepeatExtraBits > 0) {\n var extra = this.readBits(iRepeatExtraBits);\n if (extra < 0) {\n throw new DOMException('Wrong data.');\n }\n iRepeatLength += extra;\n }\n // Unpack repeat distance.\n symbol = this.mCurrentDistanceTree.unpackSymbol(this);\n if (symbol < 0 || symbol > CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE.length) {\n throw new DOMException('Wrong distance code.');\n }\n var iRepeatDistance = CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE[symbol];\n iRepeatExtraBits = CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION[symbol];\n if (iRepeatExtraBits > 0) {\n var extra = this.readBits(iRepeatExtraBits);\n if (extra < 0) {\n throw new DOMException('Wrong data.');\n }\n iRepeatDistance += extra;\n }\n // Copy data in slow repeat mode\n for (var i = 0; i < iRepeatLength; i++) {\n this.mBlockBuffer[this.mDataLength % this.DEF_MAX_WINDOW_SIZE] =\n this.mBlockBuffer[(this.mDataLength - iRepeatDistance) % this.DEF_MAX_WINDOW_SIZE];\n this.mDataLength++;\n free--;\n }\n dataRead = true;\n }\n return dataRead;\n };\n /// \n /// Reads data to buffer.\n /// \n /// Output buffer for data.\n /// Offset in output data.\n /// Length of the data to be read.\n /// Count of bytes actually read.\n CompressedStreamReader.prototype.read = function (buffer, offset, length) {\n if (buffer == null) {\n throw new DOMException('buffer');\n }\n if (offset < 0 || offset > buffer.length - 1) {\n throw new DOMException('offset', 'Offset does not belong to specified buffer.');\n }\n if (length < 0 || length > buffer.length - offset) {\n throw new DOMException('length', 'Length is illegal.');\n }\n var initialLength = length;\n while (length > 0) {\n // Read from internal buffer.\n if (this.mCurrentPosition < this.mDataLength) {\n // Position in buffer array.\n var inBlockPosition = (this.mCurrentPosition % this.DEF_MAX_WINDOW_SIZE);\n // We can not read more than we have in buffer at once,\n // and we not read more than till the array end.\n var dataToCopy = Math.min(this.DEF_MAX_WINDOW_SIZE - inBlockPosition, (this.mDataLength - this.mCurrentPosition));\n // Reading not more, than the rest of the buffer.\n dataToCopy = Math.min(dataToCopy, length);\n //sourceArray, sourceIndex, destinationArray, destinationIndex, length\n // Copy data.\n //Array.Copy( mBlockBuffer, inBlockPosition, buffer, offset, dataToCopy );\n //buffer.set(this.mBlockBuffer.slice(inBlockPosition, dataToCopy), offset);\n Utils.arrayCopy(this.mBlockBuffer, inBlockPosition, buffer, offset, dataToCopy);\n // Correct position, length,\n this.mCurrentPosition += dataToCopy;\n offset += dataToCopy;\n length -= dataToCopy;\n }\n else {\n if (!this.mbCanReadMoreData) {\n break;\n }\n var oldDataLength = this.mDataLength;\n if (!this.mbReadingUncompressed) {\n if (!this.readHuffman()) {\n break;\n }\n }\n else {\n if (this.mUncompressedDataLength === 0) {\n // If there is no more data in stream, just exit.\n this.mbCanReadMoreData = this.decodeBlockHeader();\n if (!(this.mbCanReadMoreData)) {\n break;\n }\n }\n else {\n // Position of the data end in block buffer.\n var inBlockPosition = (this.mDataLength % this.DEF_MAX_WINDOW_SIZE);\n var dataToRead = Math.min(this.mUncompressedDataLength, this.DEF_MAX_WINDOW_SIZE - inBlockPosition);\n var dataRead = this.readPackedBytes(this.mBlockBuffer, inBlockPosition, dataToRead);\n if (dataToRead !== dataRead) {\n throw new DOMException('Not enough data in stream.');\n }\n this.mUncompressedDataLength -= dataRead;\n this.mDataLength += dataRead;\n }\n }\n if (oldDataLength < this.mDataLength) {\n var start = (oldDataLength % this.DEF_MAX_WINDOW_SIZE);\n var end = (this.mDataLength % this.DEF_MAX_WINDOW_SIZE);\n if (start < end) {\n this.checksumUpdate(this.mBlockBuffer, start, end - start);\n }\n else {\n this.checksumUpdate(this.mBlockBuffer, start, this.DEF_MAX_WINDOW_SIZE - start);\n if (end > 0) {\n this.checksumUpdate(this.mBlockBuffer, 0, end);\n }\n }\n }\n }\n }\n if (!this.mbCanReadMoreData && !this.mbCheckSumRead && !this.mbNoWrap) {\n this.skipToBoundary();\n var checkSum = this.readInt32();\n //Debug.Assert( checkSum == mCheckSum, \"\" );\n if (checkSum !== this.mCheckSum) {\n throw new DOMException('Checksum check failed.');\n }\n this.mbCheckSumRead = true;\n }\n return initialLength - length;\n };\n /// \n /// Reads array of bytes.\n /// \n /// Output buffer.\n /// Offset in output buffer.\n /// Length of the data to be read.\n /// Count of bytes actually read to the buffer.\n CompressedStreamReader.prototype.readPackedBytes = function (buffer, offset, length) {\n if (buffer == null) {\n throw new DOMException('buffer');\n }\n if (offset < 0 || offset > buffer.length - 1) {\n throw new DOMException('offset\", \"Offset can not be less than zero or greater than buffer length - 1.');\n }\n if (length < 0) {\n throw new DOMException('length\", \"Length can not be less than zero.');\n }\n if (length > buffer.length - offset) {\n throw new DOMException('length\", \"Length is too large.');\n }\n if ((this.mBufferedBits & 7) !== 0) {\n throw new DOMException('Reading of unalligned data is not supported.');\n }\n if (length === 0) {\n return 0;\n }\n var result = 0;\n while (this.mBufferedBits > 0 && length > 0) {\n buffer[offset++] = (this.mBuffer);\n this.mBufferedBits -= 8;\n this.mBuffer = Utils.bitConverterInt32ToUint(this.mBuffer >>> 8);\n length--;\n result++;\n }\n if (length > 0) {\n //TODO: Fix this.\n result += this.mInputStream.read(buffer, offset, length);\n }\n return result;\n };\n /// \n /// TODO: place correct comment here\n /// \n /// \n /// TODO: place correct comment here\n /// \n CompressedStreamReader.prototype.readInt32 = function () {\n var result = this.readBits(8) << 24;\n result |= this.readBits(8) << 16;\n result |= this.readBits(8) << 8;\n result |= this.readBits(8);\n return result;\n };\n /// \n /// Updates checksum by calculating checksum of the\n /// given buffer and adding it to current value.\n /// \n /// Data byte array.\n /// Offset in the buffer.\n /// Length of data to be used from the stream.\n CompressedStreamReader.prototype.checksumUpdate = function (buffer, offset, length) {\n ChecksumCalculator$1.ChecksumUpdate(this.mCheckSum, buffer, offset, length);\n };\n CompressedStreamReader.DEF_REVERSE_BITS = new Uint8Array([0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15]);\n /// \n /// Minimum count of repetions.\n /// \n CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS = [3, 3, 11];\n /// \n /// Bits, that responds for different repetion modes.\n /// \n CompressedStreamReader.DEF_HUFFMAN_DYNTREE_REPEAT_BITS = [2, 3, 7];\n /// \n /// Length bases.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_BASE = [\n 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,\n 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258\n ];\n /// \n /// Length extended bits count.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION = [\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,\n 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0\n ];\n /// \n /// Distance bases.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_BASE = [\n 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,\n 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,\n 8193, 12289, 16385, 24577\n ];\n /// \n /// Distance extanded bits count.\n /// \n CompressedStreamReader.DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION = [\n 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,\n 7, 7, 8, 8, 9, 9, 10, 10, 11, 11,\n 12, 12, 13, 13\n ];\n return CompressedStreamReader;\n}());\nvar Stream = /** @__PURE__ @class */ (function () {\n function Stream(input) {\n this.position = 0;\n this.inputStream = new Uint8Array(input.buffer);\n }\n Object.defineProperty(Stream.prototype, \"length\", {\n get: function () {\n return this.inputStream.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n Stream.prototype.read = function (buffer, start, length) {\n var temp = new Uint8Array(this.inputStream.buffer, this.position + start);\n var data = temp.subarray(0, length);\n buffer.set(data, 0);\n this.position += data.byteLength;\n return data.byteLength;\n };\n Stream.prototype.readByte = function () {\n return this.inputStream[this.position++];\n };\n Stream.prototype.write = function (inputBuffer, offset, count) {\n Utils.arrayCopy(inputBuffer, 0, this.inputStream, this.position + offset, count);\n // this.inputStream = new Uint8Array(this.inputStream.buffer, this.position + offset);\n // this.inputStream.set(inputBuffer, offset);\n this.position += count;\n };\n Stream.prototype.toByteArray = function () {\n return new Uint8Array(this.inputStream.buffer);\n };\n return Stream;\n}());\n\n/* eslint-enable */\n\n/**\n * export ZipArchive class\n */\n\nexport { ZipArchive, ZipArchiveItemHelper, ZipArchiveItem, CompressedStreamWriter, CompressorHuffmanTree, ChecksumCalculator, Utils, DecompressorHuffmanTree, CompressedStreamReader, Stream };\n","import { Ajax, extend, getValue, isNullOrUndefined, merge, setValue } from '@syncfusion/ej2-base';\n\n/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\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 *\n * @param {string|string[]} from?\n * @param 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 *\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 *\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 *\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 *\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 *\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 *\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 * @param fields\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 *\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 *\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 * @param ignoreAccent\n * @param matchCase\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 *\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 * @param ignoreAccent\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 *\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 isFromGroup\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 *\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 isFromGroup\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 *\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 *\n * @param {string} fieldName - Defines the column field.\n * @param fn\n * @param format\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @param ignoreAccent\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 *\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 *\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 * @param ignoreCase\n * @param ignoreAccent\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 *\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 *\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 * @param ignoreCase\n * @param ignoreAccent\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 * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.ornot = 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 not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\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 * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.ornot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'ornot', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.andnot = 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 not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\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 * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.andnot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'andnot', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n *\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 *\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var ret;\n var isAnd;\n if (!this.isComplex && this.comparer) {\n if (this.condition && this.condition.indexOf('not') !== -1) {\n this.condition = this.condition.split('not')[0] === '' ? undefined : this.condition.split('not')[0];\n return !this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n else {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.condition && this.condition.indexOf('not') !== -1) {\n isAnd = this.condition.indexOf('and') !== -1;\n }\n else {\n isAnd = this.condition === 'and';\n }\n for (var i = 0; i < predicate.length; i++) {\n if (i > 0 && this.condition && this.condition.indexOf('not') !== -1) {\n predicate[i].condition = predicate[i].condition ? predicate[i].condition + 'not' : 'not';\n }\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\n/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n *\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 *\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @param 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 *\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 not ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.notEndsWith = 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 *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * Returns true if the input string not starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.notStartsWith = function (input, start) {\n return input.slice(0, start.length) !== start;\n };\n /**\n * Returns true if the input string pattern(wildcard) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.wildCard = function (input, pattern) {\n var asteriskSplit;\n var optionalSplit;\n // special character allowed search\n if (pattern.indexOf('[') !== -1) {\n pattern = pattern.split('[').join('[[]');\n }\n if (pattern.indexOf('(') !== -1) {\n pattern = pattern.split('(').join('[(]');\n }\n if (pattern.indexOf(')') !== -1) {\n pattern = pattern.split(')').join('[)]');\n }\n if (pattern.indexOf('*') !== -1) {\n if (pattern.charAt(0) !== '*') {\n pattern = '^' + pattern;\n }\n if (pattern.charAt(pattern.length - 1) !== '*') {\n pattern = pattern + '$';\n }\n asteriskSplit = pattern.split('*');\n for (var i = 0; i < asteriskSplit.length; i++) {\n if (asteriskSplit[i].indexOf('.') === -1) {\n asteriskSplit[i] = asteriskSplit[i] + '.*';\n }\n else {\n asteriskSplit[i] = asteriskSplit[i] + '*';\n }\n }\n pattern = asteriskSplit.join('');\n }\n if (pattern.indexOf('%3f') !== -1 || pattern.indexOf('?') !== -1) {\n optionalSplit = pattern.indexOf('%3f') !== -1 ? pattern.split('%3f') : pattern.split('?');\n pattern = optionalSplit.join('.');\n }\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regexPattern = new RegExp(pattern, 'g');\n return regexPattern.test(input);\n };\n /**\n * Returns true if the input string pattern(like) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.like = function (input, pattern) {\n if (pattern.indexOf('%') !== -1) {\n if (pattern.charAt(0) === '%' && pattern.lastIndexOf('%') < 2) {\n pattern = pattern.substring(1, pattern.length);\n return DataUtil.startsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.charAt(pattern.length - 1) === '%' && pattern.indexOf('%') > pattern.length - 3) {\n pattern = pattern.substring(0, pattern.length - 1);\n return DataUtil.endsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.lastIndexOf('%') !== pattern.indexOf('%') && pattern.lastIndexOf('%') > pattern.indexOf('%') + 1) {\n pattern = pattern.substring(pattern.indexOf('%') + 1, pattern.lastIndexOf('%'));\n return input.indexOf(pattern) !== -1;\n }\n else {\n return input.indexOf(pattern) !== -1;\n }\n }\n else {\n return false;\n }\n };\n /**\n * To return the sorting function based on the string.\n *\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 *\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 *\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 *\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 *\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n * @param field\n * @param aggregates\n * @param level\n * @param groupDs\n * @param format\n * @param isLazyLoad\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 *\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @param lookup\n * @param 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 *\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @param fields\n * @param 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 *\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 var lowerCaseNameSpace = nameSpace.charAt(0).toLowerCase() + nameSpace.slice(1);\n var upperCaseNameSpace = nameSpace.charAt(0).toUpperCase() + nameSpace.slice(1);\n if (!isNullOrUndefined(from[nameSpace])) {\n return from[nameSpace];\n }\n else {\n if (!isNullOrUndefined(from[lowerCaseNameSpace])) {\n return from[lowerCaseNameSpace];\n }\n else if (!isNullOrUndefined(from[upperCaseNameSpace])) {\n return from[upperCaseNameSpace];\n }\n else {\n return null;\n }\n }\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 if (value === undefined) {\n var casing = splits[i].charAt(0).toUpperCase() + splits[i].slice(1);\n value = from[casing] || from[casing.charAt(0).toLowerCase() + casing.slice(1)] || null;\n }\n from = value;\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n *\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 *\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 *\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @param param1\n * @param 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 *\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 *\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 *\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 *\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 *\n * @param {Object[]} json\n * @param {string} field\n * @param fieldName\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 *\n * @param {string} datamanager\n * @param dm\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 /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n var result = sampledata.executeLocal(query);\n /* eslint-enable @typescript-eslint/no-explicit-any */\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 // tslint:disable-next-line:no-string-literal\n search.filter(function (e) { return query.search(e.key, e.fields, e['operator'], \n // tslint:disable-next-line:no-string-literal\n 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 // tslint:disable-next-line:typedef\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 *\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n *\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n *\n * @param {string} er\n * @param error\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n // eslint-disable-next-line no-throw-literal\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n *\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 *\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 *\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 *\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 *\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 *\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 *\n * @param {Object[]} ds\n * @param {string} field?\n * @param 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 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not substringof',\n 'wildcard': 'wildcard',\n 'like': 'like'\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 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not contains',\n 'wildcard': 'wildcard',\n 'like': 'like'\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 *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n * @param ignoreCase\n * @param 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 *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\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 *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param 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 *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param 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 *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param 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 *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param 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 *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\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 actual input not contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n doesnotcontain: 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 *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotnull: function (actual) {\n return actual !== null && actual !== undefined;\n },\n /**\n * Returns true when the given input value is null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null || actual === undefined;\n },\n /**\n * Returns true when the actual input starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\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 not starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotstartwith: 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.notStartsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notStartsWith(actual, expected);\n },\n /**\n * Returns true when the actual input like with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n like: 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.like(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.like(actual, expected);\n },\n /**\n * Returns true when the given input value is empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isempty: function (actual) {\n return actual === undefined || actual === '';\n },\n /**\n * Returns true when the given input value is not empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotempty: function (actual) {\n return actual !== undefined && actual !== '';\n },\n /**\n * Returns true when the actual input pattern(wildcard) matches with the given string.\n *\n * @param {string|Date} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n wildcard: 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 || typeof actual === 'boolean') && expected && typeof actual !== 'object' &&\n DataUtil.wildCard(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return (actual || typeof actual === 'boolean') && expected && DataUtil.wildCard(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\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 * Returns true when the actual input not ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotendwith: 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.notEndsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notEndsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n *\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 *\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 *\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 *\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 // eslint-disable-next-line no-useless-escape\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 *\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 *\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\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 // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\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] ? arr[5] : '00', 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] ? arr[5] : '00', 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 else if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n var arr = value.split(/[^0-9.]/);\n return new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n *\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 *\n * @param {string} value\n */\n isGuid: function (value) {\n // eslint-disable-next-line security/detect-unsafe-regex\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 *\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 *\n * @param {string} key\n * @param {Object} val\n * @param stringify\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 *\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 *\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\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 // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\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 *\n * @hidden\n */\nvar Adaptor = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for Adaptor class\n *\n * @param {DataOptions} ds?\n * @param 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 *\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 *\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param ds\n * @param query\n * @param 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 *\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 *\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 *\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 *\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 *\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 *\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n * @param e.validate\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 *\n * @param {Object[]} ds\n * @param e\n * @param {string} } type\n * @param e.field\n * @param e.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 *\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 *\n * @param {Object[]} ds\n * @param e\n * @param {Object} b\n * @param e.comparer\n * @param e.fieldName\n * @param query\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 *\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 *\n * @param {Object[]} ds\n * @param e\n * @param {number} } pageIndex\n * @param e.pageSize\n * @param {Query} query\n * @param e.pageIndex\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 *\n * @param {Object[]} ds\n * @param e\n * @param {number} } end\n * @param e.start\n * @param e.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 *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\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 *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\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 *\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n * @param e.fieldNames\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 *\n * @param {DataManager} dm\n * @param {Object} data\n * @param tableName\n * @param query\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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param 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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param 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 *\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 *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param 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 *\n * @param {Object} req\n * @param request\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 *\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 * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param 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 *\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 *\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 *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param query\n * @param original\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 *\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 *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n * @param query\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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n * @param query\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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n * @param query\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 *\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 *\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 *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param 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 if (predicate.operator !== 'like') {\n val = encodeURIComponent(val);\n }\n if (predicate.operator !== 'wildcard' && predicate.operator !== 'like') {\n val = '\\'' + val + '\\'';\n }\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 if (predicate.operator === 'isempty' || predicate.operator === 'isnull' || predicate.operator === 'isnotempty' ||\n predicate.operator === 'isnotnull') {\n operator = predicate.operator.indexOf('isnot') !== -1 ? DataUtil.odBiOperator['notequal'] : DataUtil.odBiOperator['equal'];\n val = predicate.operator === 'isnull' || predicate.operator === 'isnotnull' ? null : '\\'\\'';\n }\n else {\n operator = DataUtil.odBiOperator[predicate.operator];\n }\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 === 'like') {\n val = val;\n if (val.indexOf('%') !== -1) {\n if (val.charAt(0) === '%' && val.lastIndexOf('%') < 2) {\n val = val.substring(1, val.length);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n }\n else if (val.charAt(val.length - 1) === '%' && val.indexOf('%') > val.length - 3) {\n val = val.substring(0, val.length - 1);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n }\n else if (val.lastIndexOf('%') !== val.indexOf('%') && val.lastIndexOf('%') > val.indexOf('%') + 1) {\n val = val.substring(val.indexOf('%') + 1, val.lastIndexOf('%'));\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n }\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n }\n else if (operator === 'wildcard') {\n val = val;\n if (val.indexOf('*') !== -1) {\n var splittedStringValue = val.split('*');\n var splittedValue = void 0;\n var count = 0;\n if (val.indexOf('*') !== 0 && splittedStringValue[0].indexOf('%3f') === -1 &&\n splittedStringValue[0].indexOf('?') === -1) {\n splittedValue = splittedStringValue[0];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (val.lastIndexOf('*') !== val.length - 1 && splittedStringValue[splittedStringValue.length - 1].indexOf('%3f') === -1 &&\n splittedStringValue[splittedStringValue.length - 1].indexOf('?') === -1) {\n splittedValue = splittedStringValue[splittedStringValue.length - 1];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n if (count > 0) {\n returnValue += ' and ';\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (splittedStringValue.length > 2) {\n for (var i = 1; i < splittedStringValue.length - 1; i++) {\n if (splittedStringValue[i].indexOf('%3f') === -1 && splittedStringValue[i].indexOf('?') === -1) {\n splittedValue = splittedStringValue[i];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (count > 0) {\n returnValue += ' and ';\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = splittedValue;\n splittedValue = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n }\n }\n if (count === 0) {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n else {\n operator = 'wildcard';\n }\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n if (operator !== 'wildcard') {\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n }\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 *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param 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 *\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n * @param query\n * @param 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 *\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 *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n * @param 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 *\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 * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param 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 *\n * @param {Object} req\n * @param request\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 *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param 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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param 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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @param query\n * @param original\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 *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\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 *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\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 *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\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 *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @param org\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 *\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 *\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 *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param 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 *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.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 *\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 *\n * @param {string} e\n * @param e.selects\n * @param e.expands\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 *\n * @param {string} e\n * @param distinctFields\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 *\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 *\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 *\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 * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n var metaV4Name = '@context';\n if ((request && request.type === 'GET') && !this.rootUrl && (data[metaName] || data[metaV4Name])) {\n var dataUrl = data[metaName] ? data[metaName].split('/$metadata#') : data[metaV4Name].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 var dataV4Count = '@count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n else if (dataV4Count in data) {\n count = data[dataV4Count];\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 *\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 *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param 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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param 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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param 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 *\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 *\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 * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param 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 *\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 *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param 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 *\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 *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\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 *\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: function () { },\n addRecord: function () { },\n updateRecord: function () { },\n deleteRecord: function () { },\n batchUpdate: 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 *\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 /* eslint-disable @typescript-eslint/no-empty-function */\n // tslint:disable-next-line:no-empty\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () { };\n /* eslint-enable @typescript-eslint/no-empty-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 *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param datamanager\n * @param 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 // tslint:disable-next-line:no-string-literal\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 *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param resData\n * @param ds\n * @param query\n * @param xhr\n * @param 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 *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param e.key\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 // tslint:disable-next-line:typedef\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 *\n * @hidden\n */\nvar CacheAdaptor = /** @__PURE__ @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n *\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @param adaptor\n * @param timeStamp\n * @param 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 = 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 *\n * @param {string} url\n * @param {Query} query?\n * @param 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 *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n * @param query\n * @param hierarchyFilters\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var 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 /* eslint-disable prefer-spread */\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\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 * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param 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 /* eslint-disable prefer-spread */\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\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 *\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n * @param 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 *\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 *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param 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 *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param 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 *\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/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for DataManager class\n *\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @param dataSource\n * @param query\n * @param 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.persistQuery = {};\n this.isInitialLoad = false;\n this.requests = [];\n this.isInitialLoad = true;\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 if (!dataSource.enablePersistence) {\n dataSource.enablePersistence = false;\n }\n if (!dataSource.id) {\n dataSource.id = '';\n }\n if (!dataSource.ignoreOnPersist) {\n dataSource.ignoreOnPersist = [];\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 enablePersistence: dataSource.enablePersistence,\n id: dataSource.id,\n ignoreOnPersist: dataSource.ignoreOnPersist\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 (this.dataSource.enablePersistence && this.dataSource.id) {\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\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 * Get the queries maintained in the persisted state.\n * @param {string} id - The identifier of the persisted query to retrieve.\n * @returns {object} The persisted data object.\n */\n DataManager.prototype.getPersistedData = function (id) {\n var persistedData = localStorage.getItem(id || this.dataSource.id);\n return JSON.parse(persistedData);\n };\n /**\n * Set the queries to be maintained in the persisted state.\n * @param {Event} e - The event parameter that triggers the setPersistData method.\n * @param {string} id - The identifier of the persisted query to set.\n * @param {object} persistData - The data to be persisted.\n * @returns {void} .\n */\n DataManager.prototype.setPersistData = function (e, id, persistData) {\n localStorage.setItem(id || this.dataSource.id, JSON.stringify(persistData || this.persistQuery));\n };\n DataManager.prototype.setPersistQuery = function (query) {\n var _this = this;\n var persistedQuery = this.getPersistedData();\n if (this.isInitialLoad && persistedQuery && Object.keys(persistedQuery).length) {\n this.persistQuery = persistedQuery;\n this.persistQuery.queries = this.persistQuery.queries.filter(function (query) {\n if (_this.dataSource.ignoreOnPersist && _this.dataSource.ignoreOnPersist.length) {\n if (query.fn && _this.dataSource.ignoreOnPersist.some(function (keyword) { return query.fn === keyword; })) {\n return false; // Exclude the matching query\n }\n }\n if (query.fn === 'onWhere') {\n var e = query.e;\n if (e && e.isComplex && e.predicates instanceof Array) {\n var allPredicates = e.predicates.map(function (predicateObj) {\n if (predicateObj.predicates && predicateObj.predicates instanceof Array) {\n // Process nested predicate array\n var nestedPredicates = predicateObj.predicates.map(function (nestedPredicate) {\n var field = nestedPredicate.field, operator = nestedPredicate.operator, value = nestedPredicate.value, ignoreCase = nestedPredicate.ignoreCase, ignoreAccent = nestedPredicate.ignoreAccent, matchCase = nestedPredicate.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n });\n return predicateObj.condition === 'and' ? Predicate.and(nestedPredicates) : Predicate.or(nestedPredicates);\n }\n else {\n // Process individual predicate\n var field = predicateObj.field, operator = predicateObj.operator, value = predicateObj.value, ignoreCase = predicateObj.ignoreCase, ignoreAccent = predicateObj.ignoreAccent, matchCase = predicateObj.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n });\n query.e = new Predicate(allPredicates[0], e.condition, allPredicates.slice(1));\n }\n }\n return true; // Keep all other queries\n });\n var newQuery = extend(new Query(), this.persistQuery);\n this.isInitialLoad = false;\n return (newQuery);\n }\n else {\n this.persistQuery = query;\n this.isInitialLoad = false;\n return query;\n }\n };\n /**\n * Overrides DataManager's default query with given query.\n *\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 *\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 if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\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 *\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 (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\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 /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n (window.setImmediate || window.setTimeout)(fn, 0);\n /* eslint-enable @typescript-eslint/no-explicit-any */\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 // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\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 *\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 * @param original\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 // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\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 *\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 * @param position\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 *\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 *\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 * @param original\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 // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\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 DataManager.prototype.failureFunc = function (e) {\n this.ajaxDeffered.reject([{ error: e }]);\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 DataManager.prototype.clearPersistence = function () {\n window.removeEventListener('unload', this.setPersistData.bind(this));\n this.dataSource.enablePersistence = false;\n this.persistQuery = {};\n window.localStorage.setItem(this.dataSource.id, '[]');\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[parseInt(i.toString(), 10)];\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 // eslint-disable-next-line\n if (!window[path]) {\n // eslint-disable-next-line\n window[path] = {};\n }\n if (data) {\n var measureElement = 'measureElement';\n // eslint-disable-next-line\n window[measureElement].style.visibility = 'visible';\n // eslint-disable-next-line\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 // eslint-disable-next-line\n if (window[path][data]) {\n // eslint-disable-next-line\n bounds = window[path][data];\n }\n else {\n // eslint-disable-next-line\n window[path][data] = bounds = element.getBBox();\n if ((bounds.x === 0 || bounds.y === 0) && (bounds.width === 0 || bounds.height === 0)) {\n // eslint-disable-next-line\n window[path][data] = bounds = getBBox(data);\n }\n }\n var svgBounds = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n // eslint-disable-next-line\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[parseInt(i.toString(), 10)].length > 1) {\n currentValue = currentpath[parseInt(i.toString(), 10)].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[parseInt(i.toString(), 10)].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[parseInt(j.toString(), 10)].split(' ') : eachLine;\n for (i = 0; i < words.length; i++) {\n bounds1 = bBoxText(words[parseInt(i.toString(), 10)], text);\n if (bounds1 > text.width && words[parseInt(i.toString(), 10)].length > 0 && text.textWrapping !== 'NoWrap') {\n if (eachLine.length > 1) {\n words[parseInt(i.toString(), 10)] = words[parseInt(i.toString(), 10)] + '\\n';\n }\n text.content = words[parseInt(i.toString(), 10)];\n childNodes = wrapText(text, txtValue, childNodes);\n }\n else {\n txtValue += (((i !== 0 || words.length === 1) && wrap && txtValue.length > 0) ? ' ' : '') + words[parseInt(i.toString(), 10)];\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 textValue = txtValue;\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[parseInt(k.toString(), 10)].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[parseInt(k.toString(), 10)].dy = text.fontSize * 1.2;\n childNodes[parseInt(k.toString(), 10)].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[parseInt(i.toString(), 10)], attributes[keys[parseInt(i.toString(), 10)]]);\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n window[measureElement] = divElement;\n // eslint-disable-next-line\n window[measureElement].usageCount = 1;\n document.body.appendChild(divElement);\n }\n else {\n // eslint-disable-next-line\n window[measureElement].usageCount += 1;\n }\n}\n/** @private */\nfunction measureImage(source, contentSize) {\n var measureElement = 'measureElement';\n // eslint-disable-next-line\n window[measureElement].style.visibility = 'visible';\n // eslint-disable-next-line\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 // eslint-disable-next-line\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 // eslint-disable-next-line\n window[measureElement].style.visibility = 'visible';\n // eslint-disable-next-line\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 // eslint-disable-next-line\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[parseInt(i.toString(), 10)];\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[parseInt(i.toString(), 10)];\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[parseInt(i.toString(), 10)];\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[parseInt(j.toString(), 10)], 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[parseInt(j.toString(), 10)], 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[parseInt(j.toString(), 10)] });\n }\n break;\n case 'v':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, y: ob[parseInt(j.toString(), 10)] });\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[parseInt(j.toString(), 10)], 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[parseInt(j.toString(), 10)], 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[parseInt(j.toString(), 10)], 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[parseInt(j.toString(), 10)], 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 // eslint-disable-next-line\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[parseInt(i.toString(), 10)];\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[parseInt(i.toString(), 10)];\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[parseInt(i.toString(), 10)] = 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[parseInt(i.toString(), 10)];\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[parseInt(i.toString(), 10)];\n break;\n }\n if (newSeg) {\n arrayCollection[parseInt(i.toString(), 10)] = 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[parseInt(i.toString(), 10)]);\n }\n else {\n getNewString += ' ' + getString(arrayCollection[parseInt(i.toString(), 10)]);\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[parseInt(j.toString(), 10)], 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[parseInt(i.toString(), 10)];\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[parseInt(i.toString(), 10)];\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[parseInt(i.toString(), 10)], 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 // eslint-disable-next-line\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 // eslint-disable-next-line\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[parseInt(i.toString(), 10)];\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[parseInt(i.toString(), 10)], attributes[keys[parseInt(i.toString(), 10)]]);\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[parseInt(i.toString(), 10)];\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, JsonAdaptor, 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\n/**\n * IncrementalSearch module file\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 /* eslint-disable security/detect-object-injection */\n if (type === 'object' && (!data.isHeader && 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 /* eslint-disable security/detect-non-literal-regexp */\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 /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/* eslint-enable security/detect-object-injection */\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/**\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 // eslint-disable-next-line security/detect-non-literal-regexp\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 _this.isAddNewItemTemplate = 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 (typeof baseTemplate !== 'function' && 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 (typeof template !== 'function' && 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 if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataCompTemp[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataCompTemp[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataCompTemp[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataCompTemp[i]);\n }\n }\n else {\n ele.appendChild(noDataCompTemp[i]);\n }\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') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\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 = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\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 if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\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 (typeof this.groupTemplate !== 'function' && 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 (typeof this.itemTemplate !== 'function' && 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 if (element) {\n element.dispatchEvent(evt);\n }\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 if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n }\n else {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content });\n }\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 = typeof this.itemTemplate !== 'function' &&\n 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 this.isAddNewItemTemplate = true;\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 (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\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) &&\n 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 if (htmlAttr === 'aria-label') {\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\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 EventHandler.add(window, 'resize', this.windowResize, 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.windowResize = function () {\n if (this.isPopupOpen) {\n this.popupObj.refreshPosition(this.inputWrapper.container);\n }\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 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 = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\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 EventHandler.remove(window, 'resize', this.windowResize);\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 = li.getAttribute('data-value') !== \"null\" ? this.getFormattedValue(li.getAttribute('data-value')) : null;\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-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 (typeof dropdownTemplate !== 'function' && 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 (typeof this.valueTemplate !== 'function' && 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 append(valueCompTemp, this.valueTempElement);\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 if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\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) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === _this.value : x[checkField_1] === _this.value;\n });\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\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.\n 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_1 = _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_1);\n _this.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle_1);\n }\n append([_this.list], popupEle_1);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle_1);\n }\n document.body.appendChild(popupEle_1);\n popupEle_1.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_1.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_1.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_1.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle_1.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_1);\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_1, offsetValue, left);\n _this.checkCollision(popupEle_1);\n var popupLeft_1 = _this.enableRtl ? parseFloat(popupEle_1.style.left) - (_this.ulElement.parentElement.offsetWidth - _this.inputWrapper.container.offsetWidth) : 0;\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_1.style.visibility = 'visible';\n addClass([popupEle_1], '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 if (_this.enableRtl && popupLeft_1 > 0) {\n popupEle_1.style.left = popupLeft_1 + \"px\";\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 _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.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)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\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 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 if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\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 if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\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 if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n }\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 (typeof this.footerTemplate !== 'function' && 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 append(footerCompTemp, this.footer);\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 (typeof this.headerTemplate !== 'function' && 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 append(headerCompTemp, this.header);\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 = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\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]) ||\n 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 if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\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 if (this.floatLabelType === 'Auto' && this.inputElement.value === '') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\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 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 this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\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 _this.isFromFilterChange = 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 this.isFromFilterChange = true;\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 if (_this.hasTemplate && _this.portals) {\n _this.portals = [].concat(_this.treeObj.portals);\n if (_this.isReact) {\n _this.renderReactTemplates();\n }\n }\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-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.checkWrapper) {\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-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 (!isNullOrUndefined(this.inputWrapper) && !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 && (args.isInteracted || 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 (isNullOrUndefined(this.value) || (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: this.isFromFilterChange && newValues && newValues.length == 0 ? this.value : newValues }, true);\n this.isFromFilterChange = false;\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 (typeof template !== 'function' && 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 EventHandler.add(window, 'resize', this.windowResize, 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 EventHandler.remove(window, 'resize', this.windowResize);\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 /* eslint-disable valid-jsdoc, jsdoc/require-param */\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 /* eslint-enable valid-jsdoc, jsdoc/require-param */\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 = null;\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 if (_this.popupObj) {\n document.body.appendChild(_this.popupObj.element);\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 if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n }\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 if (_this.enableRtl) {\n _this.popupWrapper.style.visibility = 'hidden';\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 if (this.dataSource instanceof DataManager && this.dataSource.adaptor instanceof JsonAdaptor) {\n return new Query().where(predicate);\n }\n else {\n return this.getQuery(this.query).clone().where(predicate);\n }\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)) {\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 if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\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 this.focusFirstListItem = !isNullOrUndefined(this.liCollections[0]) ? this.liCollections[0].classList.contains('e-item-focus') : false;\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 e.preventDefault();\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 var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && !selectAllParent.classList.contains('e-item-focus')) {\n e.preventDefault();\n }\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n var selectAllCheckBox = selectAllParent.childNodes[0];\n if (!selectAllCheckBox.classList.contains('e-check')) {\n selectAllCheckBox.classList.add('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(true, e, li);\n }\n else {\n selectAllCheckBox.classList.remove('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(false, e, li);\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 else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\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 var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (this.mode === 'CheckBox' && this.showSelectAll && position == 1 && !isNullOrUndefined(selectAllParent) && !selectAllParent.classList.contains('e-item-focus') && this.list.getElementsByClassName('e-item-focus').length == 0 && this.liCollections.length > 1) {\n selectAllParent.classList.add('e-item-focus');\n }\n else if (elements.length) {\n if (this.mode === 'CheckBox' && this.showSelectAll && !isNullOrUndefined(selectAllParent)) {\n selectAllParent.classList.remove('e-item-focus');\n if (this.showSelectAll && position == -1 && !isNullOrUndefined(selectAllParent) && this.liCollections.length > 1 && (this.focusFirstListItem || this.list.getElementsByClassName('e-item-focus').length == 0)) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\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 + '.' + CHIP_SELECTED);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE$1.split(' ')[0]);\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 (typeof multiselectTemplate !== 'function' && 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 (typeof this.valueTemplate !== 'function' && 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 append(valueCompTemp, chipContent);\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.enableRtl) {\n var popupLeft = parseFloat(_this.popupWrapper.style.left) - (_this.popupWrapper.offsetWidth - _this.overAllWrapper.offsetWidth);\n _this.popupWrapper.style.left = popupLeft > 0 ? popupLeft + \"px\" : _this.popupWrapper.style.left;\n _this.popupWrapper.style.visibility = 'hidden';\n }\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 (typeof this.headerTemplate !== 'function' && 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 append(elements, this.header);\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 (typeof this.footerTemplate !== 'function' && 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 append(elements, this.footer);\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 var valueLength = this.value.length;\n var hiddenElementContent = '';\n for (var index = 0; index < valueLength; index++) {\n var valueItem = this.value[index];\n var listValue = this.findListElement((!isNullOrUndefined(this.mainList) ? this.mainList : this.ulElement), 'li', 'data-value', valueItem);\n if (isNullOrUndefined(listValue) && !this.allowCustomValue) {\n this.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this.listData) {\n temp = this.getTextByValue(valueItem);\n }\n else {\n temp = valueItem;\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n hiddenElementContent += \"\";\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = hiddenElementContent;\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-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-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-labelledby', 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 if (this.parent && this.parent.popupObj) {\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 };\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_1 = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n if (activeLiCount > 0) {\n var activeListItems = this.parent.ulElement.querySelectorAll('li.e-active');\n activeListItems.forEach(function (item) {\n ulEle_1.appendChild(item);\n });\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n prepend([ulEle_1], 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.replace(/\\s+/g, ' ').trim().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 var scrollHeight = 10;\n if (this.itemTemplate && args.target) {\n if (args.target && args.target.closest('.e-list-item')) {\n scrollHeight = args.target.closest('.e-list-item').scrollHeight;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var listItem = args.element.querySelector('.e-list-item');\n if (listItem) {\n scrollHeight = listItem.scrollHeight;\n }\n }\n }\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 || args.target.closest('.e-list-item'))) {\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 || args.target.closest('.e-list-item')) {\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.clientY + scrollMoved) < 1) {\n scrollParent.scrollTop = scrollParent.scrollTop + scrollHeight;\n }\n else if ((event.clientY - scrollMoved) - boundRect.y < 1) {\n scrollParent.scrollTop = scrollParent.scrollTop - scrollHeight;\n }\n }\n if (args.target === null) {\n return;\n }\n this.trigger('drag', this.getDragArgs(args));\n };\n ListBox.prototype.beforeDragEnd = function (args) {\n var items = [];\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 extend(items, args.items);\n this.trigger('beforeDrop', args);\n if (args.items !== items) {\n this.customDraggedItem = args.items;\n }\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 var targetListObj = this.getComponent(args.target);\n if (targetListObj && targetListObj.listData.length === 0) {\n var noRecElem = targetListObj.ulElement.childNodes[0];\n if (noRecElem) {\n targetListObj.ulElement.removeChild(noRecElem);\n }\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 if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\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 if (!isNullOrUndefined(this.customDraggedItem)) {\n selectedOptions = [];\n this.customDraggedItem.forEach(function (item) {\n selectedOptions.push(getValue(_this.fields.value, item));\n });\n }\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 if (!isNullOrUndefined(this.customDraggedItem)) {\n dragArgs.items = this.customDraggedItem;\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 if (state && !this.selectionSettings.showCheckbox && this.selectionSettings.mode === 'Single') {\n this.getSelectedItems().forEach(function (li) {\n li.classList.remove('e-active');\n li.removeAttribute('aria-selected');\n removeClass([li], cssClass.selected);\n });\n }\n this.setSelection(items, state, !isValue);\n this.updateSelectedOptions();\n var selElems = [];\n for (var i = 0; i < items.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (items[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n selElems.push(liColl[j]);\n }\n }\n }\n this.triggerChange(selElems, null);\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) in Top of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveTop = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(null, false, elem, true);\n };\n /**\n * Moves the given value(s) / selected value(s) in bottom of the list.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveBottom = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem, false, true);\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 if (this.list) {\n this.checkMaxSelection();\n }\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, isTop, isBottom) {\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 if (isTop) {\n moveTo(_this.ulElement, _this.ulElement, [idx], 0);\n _this.changeData(idx, 0, jsonToIdx, ele);\n }\n else if (isBottom) {\n moveTo(_this.ulElement, _this.ulElement, [idx], _this.ulElement.querySelectorAll('.e-list-item').length);\n _this.changeData(idx, _this.ulElement.querySelectorAll('.e-list-item').length, jsonToIdx, ele);\n }\n else {\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 });\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.childNodes[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 li = _this.list.querySelector('[data-value=\"' + text.replace(/\"/g, '\\\\\"') + '\"]');\n }\n else {\n li = _this.list.querySelector('[data-value=\"' + text + '\"]');\n }\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 li.focus();\n }\n else {\n if (isSelect) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\n li.focus();\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 for (var i = 0, len = ele.childNodes.length; i < len; i++) {\n ele.childNodes[i].setAttribute('value', this.value[i].toString());\n }\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.replace(/\\s+/g, ' ').trim().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 var isSelector = typeof this.target === 'string';\n this.inputElement = !isNullOrUndefined(this.target) ?\n this.checkAndUpdateInternalComponent(isSelector\n ? document.querySelector(this.target)\n : 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.inputElement.setAttribute('role', 'textbox');\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 Mention.prototype.checkAndUpdateInternalComponent = function (targetElement) {\n if (!this.isVue && targetElement.classList.contains('e-richtexteditor')) {\n return targetElement.querySelector('.e-content');\n }\n if (this.isVue && targetElement.nodeName === 'TEXTAREA' && targetElement.classList.contains('e-rte-hidden')) {\n var parentElement = targetElement.parentElement;\n if (parentElement && parentElement.classList.contains('e-richtexteditor')) {\n return parentElement.querySelector('.e-content');\n }\n }\n return targetElement;\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.isUpDownKey = true;\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.updateSelectedItem(this.selectedLI, e, false, true);\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.isUpDownKey && this.isPopupOpen && e.keyCode === 229) {\n this.isUpDownKey = false;\n return;\n }\n this.isTyped = e.code !== 'Enter' && e.code !== 'Space' && e.code !== 'ArrowDown' && e.code !== 'ArrowUp' ? true : false;\n if (document.activeElement != this.inputElement) {\n this.inputElement.focus();\n }\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 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) && (e.code !== 'ArrowDown' && e.code !== 'ArrowUp')) {\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.didPopupOpenByTypingInitialChar = true;\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 (document.activeElement != this.inputElement) {\n this.inputElement.focus();\n }\n this.queryString = this.didPopupOpenByTypingInitialChar ? this.queryString : '';\n this.didPopupOpenByTypingInitialChar = false;\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n if (!this.isTyped) {\n this.resetList(this.dataSource, this.fields);\n }\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.inputElement.parentElement && _this.inputElement.parentElement.parentElement &&\n _this.inputElement.parentElement.parentElement.classList.contains('e-richtexteditor')) {\n if (popupEle_1.firstElementChild && popupEle_1.firstElementChild.childElementCount > 0) {\n popupEle_1.firstElementChild.setAttribute('aria-owns', _this.inputElement.parentElement.parentElement.id);\n }\n }\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' && this.list) {\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 ? mostRecentTriggerCharPos : 0;\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 if (this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, selectedNodePosition);\n range.setEnd(globalRange.startContainer, selectedNodePosition);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n this.isTyped = false;\n range.collapse(false);\n rect = range.getBoundingClientRect().top === 0 ? range.startContainer.getClientRects()[0] : 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 var width = 0;\n if (!isNullOrUndefined(range) && range.getBoundingClientRect().top === 0) {\n for (var i = 0; i < this.range.startContainer.childNodes.length; i++) {\n if (this.range.startContainer.childNodes[i].nodeType !== Node.TEXT_NODE && this.range.startContainer.childNodes[i].textContent.trim() !== '') {\n width += this.range.startContainer.childNodes[i].getClientRects()[0].width;\n }\n else if (this.range.startContainer.childNodes[i].textContent !== '') {\n var span_1 = document.createElement(\"span\");\n span_1.innerHTML = this.range.startContainer.childNodes[i].nodeValue;\n document.body.appendChild(span_1);\n var textNodeWidth = span_1.offsetWidth;\n document.body.removeChild(span_1);\n width += textNodeWidth;\n }\n }\n }\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 + width\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.isSelected = true;\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) && !(e.action === \"down\" || e.action === \"up\")) {\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 _this.isSelected = false;\n _this.isSelectCancel = true;\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 (this.isSelectCancel) {\n this.isSelectCancel = false;\n return;\n }\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 if (((this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) || this.getTextRange() && this.getTextRange().trim() === this.mentionChar)) {\n range.setStart(globalRange.startContainer, startPos);\n range.setEnd(globalRange.startContainer, endPos);\n }\n else {\n if (globalRange.commonAncestorContainer.textContent.trim() !== '' && !isNullOrUndefined(globalRange.commonAncestorContainer.textContent.trim()) && this.getTextRange() && this.getTextRange().lastIndexOf(this.mentionChar) !== -1) {\n range.setStart(globalRange.startContainer, globalRange.startOffset - 1);\n range.setEnd(globalRange.startContainer, globalRange.endOffset - 1);\n }\n else {\n range.setStart(globalRange.startContainer, globalRange.startOffset);\n range.setEnd(globalRange.startContainer, globalRange.endOffset);\n }\n }\n this.isTyped = false;\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 append(displayCompTemp, this.displayTempElement);\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 || value.indexOf('\\\"') !== -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.changeNumberFormats = function (value) {\n if (typeof value == \"string\") {\n var regex = new RegExp(this.currency, 'g');\n value = value.replace(regex, '[$' + this.currency + ']');\n }\n else if (typeof value == \"object\") {\n for (var i = 0; i < value.length; i++) {\n value[i] = value[i].replace(this.currency, '[$' + this.currency + ']');\n }\n }\n return value;\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 if (this.currency.length > 1) {\n returnFormat = this.changeNumberFormats(returnFormat);\n }\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, initializeCSPTemplate, 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: initializeCSPTemplate(function (data) {\n return \"\" + data.name + \"\";\n }),\n 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',\n template: initializeCSPTemplate(function (data) {\n return \"\" + data.size + \"\";\n }), format: 'n2'\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, localeString, dateFormat) {\n for (var i = 0; i < args.length; i++) {\n var createdDate = new Date(getValue('dateCreated', args[i]));\n var modifiedDate = new Date(getValue('dateModified', args[i]));\n if (isNullOrUndefined(dateFormat)) {\n dateFormat = \"MM/dd/yyyy\";\n }\n setValue('_fm_created', localeString.formatDate(createdDate, { format: dateFormat }), args[i]);\n setValue('_fm_modified', localeString.formatDate(modifiedDate, { format: dateFormat }), 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, parent);\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, parent) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n var column;\n if (parent) {\n column = parent.detailsViewSettings.columns;\n }\n switch (text) {\n case 'date':\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].field === 'dateModified' || column[i].field === 'dateCreated') {\n field = column[i].field;\n break;\n }\n else {\n field = '_fm_modified';\n }\n }\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 getDateFormat(parent) {\n var columns = parent.detailsViewSettings.columns;\n var dateFormat;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === '_fm_modified') {\n if (!isNullOrUndefined(columns[i].format)) {\n dateFormat = columns[i].format.toString();\n }\n break;\n }\n }\n return dateFormat;\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 var intl = new Internationalization(parent.locale);\n if (!isNullOrUndefined(result.files)) {\n setDateObject(result.files, intl, getDateFormat(parent));\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 = Array.isArray(result.files) ? result.files[0] : result.files;\n if (getValue('filterPath', parent.renamedItem) === getValue('filterPath', parent.itemData[0]) && parent.pathNames.length > 1) {\n parent.pathNames[parent.pathNames.length - 1] = parent.renameText;\n }\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, getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/'));\n parent.itemData[0] = parent.renamedItem;\n read(parent, pathChanged, parent.path === '/' ? parent.path : getValue('filterPath', parent.renamedItem).replace(/\\\\/g, '/') + parent.renamedItem.name + '/');\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') ? getValue('filterPath', parent.itemData[0]).replace(/\\\\/g, '/') : 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.isSelectAllCalled = false;\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.showItemCheckBoxes) {\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 if (e.ctrlKey && e.shiftKey) {\n this.isSelectAllCalled = true;\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 if (this.parent.selectedItems.length === this.itemList.length) {\n this.isSelectAllCalled = true;\n }\n this.clearSelection();\n }\n if (!isNullOrUndefined(item)) {\n this.isSelectAllCalled = false;\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.showItemCheckBoxes) {\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 = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n }\n else {\n data[0] = this.getItemObject(item);\n }\n var eventArgs = {\n action: action, fileDetails: data.length > 1 ? data : data[0], isInteracted: this.isInteraction, cancel: false, target: this.isSelectAllCalled ? null : 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 = [];\n if (this.isSelectAllCalled) {\n for (var i = 0, len = this.itemList.length; i < len; i++) {\n data[i] = this.getItemObject(this.itemList[i]);\n }\n this.isSelectAllCalled = false;\n }\n else {\n data[0] = this.getItemObject(item);\n }\n this.parent.visitedData = data.length > 1 ? data[data.length - 1] : data[0];\n var eventArgs = { action: action, fileDetails: data.length > 1 ? data : data[0], 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 var selectedTreeNode = select('[data-uid=\"' + this.parent.navigationpaneModule.treeObj.selectedNodes[0] + '\"]', this.parent.navigationpaneModule.treeObj.element);\n if (this.parent.pathNames[this.parent.pathNames.length - 1] === selectedTreeNode.querySelector('.e-list-text').innerHTML && this.parent.activeModule === 'navigationpane') {\n this.disabledItems.push('Open');\n }\n }\n else if (this.parent.selectedItems.length !== 1 && this.parent.activeModule !== 'navigationpane') {\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 && _this.parent.activeModule !== 'navigationpane') {\n _this.parent.notify(openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n if (_this.parent.visitedItem) {\n _this.parent.notify(openInit, { target: _this.parent.visitedItem });\n }\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 if (this.toolbarSettings.items.indexOf('Upload') != -1) {\n uploadEle = select('#' + this.element.id + UPLOAD_ID, this.element);\n uploadEle.click();\n }\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 Property(true)\n ], FileManager.prototype, \"showItemCheckBoxes\", 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 if (this.parent.sortBy === 'dateModified' || this.parent.sortBy === 'dateCreated') {\n items[itemCount].iconCss = this.parent.sortBy === this.parent.sortBy ? TB_OPTION_DOT : '';\n }\n else {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? TB_OPTION_DOT : '';\n }\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.isSameNodeClicked = false;\n this.isNodeExpandCalled = 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 (directories[0].filterPath == null || this.getTreeData(target)[0].filterPath == null || directories[0].filterPath !== this.getTreeData(target)[0].filterPath)) {\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.isSameNodeClicked && !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 if (args.node.getAttribute('data-uid') !== this.parent.pathId[this.parent.pathId.length - 1] && !this.isRightClick && !this.isNodeClickCalled || this.isSameNodeClicked) {\n this.isNodeClickCalled = false;\n if (!this.isSameNodeClicked) {\n this.isSameNodeClicked = true;\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n }\n if (!this.isRightClick) {\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n args.cancel = eventArgs.cancel;\n }\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.isNodeClickCalled = true;\n this.isSameNodeClicked = false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.selectedNodes = [args.node.getAttribute(\"data-uid\")];\n }\n }\n else if (this.previousSelected[0] !== args.node.getAttribute('data-uid')) {\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: this.isNodeClickCalled };\n this.parent.trigger('fileSelect', selecEventArgs);\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 var eventArgs = { cancel: false, fileDetails: data[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n this.isNodeClickCalled = true;\n if (!eventArgs.cancel) {\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 };\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 this.isNodeClickCalled = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isSameNodeClicked && !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 var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n if (!this.isRightClick && this.isSameNodeClicked && sNode.querySelector('.e-list-text').innerHTML !== this.parent.pathNames[this.parent.pathNames.length - 1]) {\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 this.expandNodeTarget = null;\n if (args.node.querySelector('.' + ICONS) && args.node.querySelector('.' + LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n if (previousPath !== this.parent.path) {\n if (!this.isRightClick && this.isSameNodeClicked) {\n read(this.parent, this.isPathDragged ? pasteEnd : pathChanged, this.parent.path);\n this.isNodeClickCalled = true;\n }\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = this.isSameNodeClicked = 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 this.isNodeExpandCalled = true;\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 this.isNodeExpandCalled = false;\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 else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && !this.isNodeClickCalled && !this.isNodeExpandCalled) {\n if (args.event.which === 3) {\n this.isRightClick = true;\n }\n this.isSameNodeClicked = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\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 if (this.parent.isReact) {\n this.gridObj.isReact = true;\n this.gridObj.portals = [];\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\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 DetailsView.prototype.reactTemplateRender = function (args) {\n this.parent[\"portals\"] = args;\n this.parent.notify('renderReactTemplate', this.parent[\"portals\"]);\n this.parent[\"renderReactTemplates\"]();\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: initializeCSPTemplate(function (data) {\n return \"
    \" + data.name + \"
    \" + data._fm_modified + \"
    ' +\\n '\" + data.size + \"\";\n })\n }\n ];\n }\n else {\n columns = extend([], this.parent.detailsViewSettings.columns, null, true);\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,\n template: initializeCSPTemplate(function (data) {\n return \"\";\n }), allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: initializeCSPTemplate(function () {\n return \"\";\n }),\n };\n columns.unshift(icon);\n if (this.parent.showItemCheckBoxes) {\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 sizeFormat = void 0;\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'size') {\n sizeFormat = !isNullOrUndefined(columns[i].format) ? columns[i].format.toString() : 'n';\n break;\n }\n }\n var value = intl.formatNumber((sizeValue / 1024), { format: sizeFormat });\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 this.interaction = true;\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 if (this.parent.isReact) {\n this.gridObj.on('reactTemplateRender', this.reactTemplateRender, this);\n }\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 if (this.parent.isReact) {\n this.gridObj.off('reactTemplateRender', this.reactTemplateRender);\n }\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 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 '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 { 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.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || this.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) {\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.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || this.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) {\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 this.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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\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 var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !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.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE$1)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE$1)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE$1)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\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 var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\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.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, 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', 'role'];\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n evt.stopPropagation();\n evt.preventDefault();\n }\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 var attributeArray = [];\n for (var i = 0; i < data.length; i++) {\n var fieldsData = this.getFieldValues(data[i]);\n var attributesValue = fieldsData.htmlAttributes;\n attributeArray.push(attributesValue);\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 if (!isNullOrUndefined(attributeArray[i])) {\n if (attributeArray.length > i && Object.keys(attributeArray[i]).length) {\n var htmlAttr = [];\n htmlAttr = (Object.keys(attributeArray[i]));\n for (var j = 0; j < htmlAttr.length; j++) {\n wrapper.setAttribute(htmlAttr[j], attributeArray[i][htmlAttr[j]]);\n }\n }\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 htmlAttributes: typeof data === 'object' ? (data.htmlAttributes ? data.htmlAttributes : this.htmlAttributes) : this.htmlAttributes\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 * @param {number | HTMLElement } fields - We can pass index number or element of chip.\n * {% codeBlock src='chips/find/index.md' %}{% endcodeBlock %}\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 * @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 * {% codeBlock src='chips/add/index.md' %}{% endcodeBlock %}\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 * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/select/index.md' %}{% endcodeBlock %}\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 * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/remove/index.md' %}{% endcodeBlock %}\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 * {% 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 * {% 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, \"htmlAttributes\", 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), FIXEDFAB);\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 isPrimary: this.isPrimary\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 (typeof template !== 'function' && 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.removeRippleEffect = null;\n this.keyboardModule.destroy();\n this.popupKeyboardModule.destroy();\n this.keyboardModule = null;\n this.popupKeyboardModule = null;\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', 'isPrimary'];\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 Property(true)\n ], SpeedDial.prototype, \"isPrimary\", 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 { Browser, ChildProperty, Collection, Complex, Component, Draggable, Droppable, Event as Event$1, EventHandler, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, addClass, append, attributes, blazorTemplates, classList, closest, compile, createElement, debounce, defaultCurrencyCode, detach, extend, formatUnit, getEnumValue, getValue, initializeCSPTemplate, 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, RemoteSaveAdaptor, 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.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\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 * @param {boolean} isAutoCompleteCall - specifies for auto complete call\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 && !gObj.isManualRefresh) &&\n (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ?\n null : 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' || gridColumn.type === 'dateonly')) {\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');\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 if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n tr.classList.add('e-verticalwrap');\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 ? (isNullOrUndefined(args.startIndex) ? args['index'] : 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.groupSettings.columns.length && this.parent.allowRowDragAndDrop) {\n indents.push('e-indentcelltop');\n }\n else 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 if (this.parent.allowRowDragAndDrop && this.parent.groupSettings.columns.length) {\n level -= 1;\n }\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.autoFit) {\n _this.parent.preventAdjustColumns();\n }\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.infiniteScrollSettings.enableCache) && 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' && !this.parent.infiniteScrollSettings.enableCache) && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n if (args.requestType === 'infiniteScroll' && this.parent.infiniteScrollSettings.enableCache) {\n templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'commandsTemplate'\n ];\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 if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n var cells = tbody$$1.querySelectorAll('td');\n for (var i = 0; i < cells.length; i++) {\n var headerCellHeight = parseFloat(document.defaultView.getComputedStyle(cells[parseInt(i.toString(), 10)], '::before').getPropertyValue('height'));\n var cellHeight = cells[parseInt(i.toString(), 10)].offsetHeight;\n if (headerCellHeight > cellHeight) {\n cells[parseInt(i.toString(), 10)].style.height = headerCellHeight + 'px';\n cells[parseInt(i.toString(), 10)].style.boxSizing = 'content-box';\n }\n }\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');\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' });\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: { 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' && cell.column.template.prototype && !(cell.column.template.prototype).CSPTemplate;\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 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' || column.type === 'dateonly') && !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, this.parent.sanitize(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: { 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()] = this.parent.sanitize(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 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, this.parent.sanitize(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', 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] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n ' - ' + data.count + ' ' + (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: '#', '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', 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: '#', '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: '#', '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: { 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 (gObj.allowSelection && (args.action === 'clearFilter' || (args.requestType === 'searching' && args.searchString === '') ||\n args.action === 'add')) {\n gObj.selectionModule['rmtHdrChkbxClicked'] = false;\n }\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage &&\n (args.action === 'add' && args.requestType === 'save') && gObj.pagerModule.pagerObj.checkAll) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + 1 } }, true);\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 gObj = this.parent;\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage && gObj.pagerModule.pagerObj.checkAll) {\n var dataLength = args['changes'].addedRecords.length;\n if (dataLength) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + dataLength } }, true);\n }\n }\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' });\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 if (columns[parseInt(i.toString(), 10)].type === 'dateonly' && !columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = 'yMd';\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\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 if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\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') || !cellCol.isPrimaryKey) && cellCol.allowEditing)\n || !tr.classList.contains('e-row')) {\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) || this.isVirtualScroll);\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.args.requestType === 'paging'))\n || 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, 'touchstart', 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, 'touchstart', 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 this.isCheckboxReset = 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.isCheckboxReset = true;\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 = (gObj.allowPaging && gObj.editSettings.allowAdding && (gObj.editSettings.mode !== 'Batch') &&\n (gObj.editSettings.newRowPosition === 'Bottom')) ? gObj.currentViewData.length - 1 : 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 if (!this.isCheckboxReset) {\n for (var _d = 0, _e = this.parent.currentViewData; _d < _e.length; _d++) {\n var data = _e[_d];\n if (!isNullOrUndefined(data[this.primaryKey])) {\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 }\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.getAvailableSelectedData = function () {\n var filteredSearchedSelectedData = new DataManager(this.persistSelectedData)\n .executeLocal(this.parent.getDataModule().generateQuery(true));\n if (this.parent.groupSettings.columns.length && filteredSearchedSelectedData &&\n filteredSearchedSelectedData.records) {\n filteredSearchedSelectedData = filteredSearchedSelectedData.records.slice();\n }\n return filteredSearchedSelectedData;\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.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') && 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' || this.isCheckboxReset)) {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (this.rmtHdrChkbxClicked && this.isCheckboxReset) {\n this.unSelectedRowState = {};\n }\n this.isCheckboxReset = false;\n if (stateStr === 'Intermediate') {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n if (this.parent.enableVirtualization && this.parent.isPersistSelection) {\n state = true;\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.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) {\n return this.getAvailableSelectedData().length === (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling\n ? this.parent.totalDataRecordsCount : this.totalRecordsCount);\n }\n else {\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 };\n Selection.prototype.someDataSelected = function () {\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n var filteredSearchedSelectedData = this.getAvailableSelectedData();\n for (var i = 0; i < filteredSearchedSelectedData.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, filteredSearchedSelectedData[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n }\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords\n : (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ? [] : 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.isPartialSelection) && (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.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n this.getData().length)) || (!isFiltered && ((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 }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\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 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 addClass([spanEle.parentElement], ['e-checkbox-disabled']);\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) || !this.parent.enablePersistence) {\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`](./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 if (this.parent.autoFit && !this.parent.groupSettings.columns.length) {\n this.parent.preventAdjustColumns();\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 var tlbrElement = this.parent.toolbarModule.toolbar.element;\n var tlbrLeftElement = tlbrElement.querySelector('.e-toolbar-left');\n var tlbrCenterElement = tlbrElement.querySelector('.e-toolbar-center');\n var tlbrRightElement = tlbrElement.querySelector('.e-toolbar-right');\n var tlbrItems = tlbrElement.querySelector('.e-toolbar-items');\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 (!this.parent.enableAdaptiveUI || tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth ||\n tlbrItemsWidth > tlbrWidth) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\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`](./#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 && !_this.parent.isEdit) {\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 (sHeight < clientHeight) {\n _this.setLastRowCell();\n }\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\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 * @returns {void} returns void\n * @hidden\n */\n Scroll.prototype.setLastRowCell = function () {\n var table$$1 = this.parent.getContentTable();\n if (table$$1.querySelector('tr:nth-last-child(2)')) {\n removeClass(table$$1.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(table$$1.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.isFrozenGrid()) {\n var mTable = this.parent.getContent().querySelector('.' + movableContent);\n if (mTable.querySelector('tr:nth-last-child(2)')) {\n removeClass(mTable.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(mTable.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.getFrozenRightColumnsCount()) {\n var frTable = this.parent.getContent().querySelector('.e-frozen-right-content');\n if (frTable.querySelector('tr:nth-last-child(2)')) {\n removeClass(frTable.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n addClass(frTable.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n }\n }\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 this.parent.on(onEmpty, this.initialEnd, 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 this.parent.off(onEmpty, this.initialEnd);\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' || !this.clipBoardTextArea) {\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.getDataRows();\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 var idx = selectedIndexes[parseInt(i.toString(), 10)];\n if (!isGroupAdaptive(this.parent) && (this.parent.enableVirtualization ||\n (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) ||\n (this.parent.groupSettings.columns.length && this.parent.groupSettings.enableLazyLoading))) {\n idx = rows.map(function (m) { return m.getAttribute('data-rowindex'); }).indexOf(selectedIndexes[parseInt(i.toString(), 10)].toString());\n }\n leftCols.push.apply(leftCols, [].slice.call(rows[parseInt(idx.toString(), 10)].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') && this.clipBoardTextArea) {\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) {\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('OnEnter')\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 /** @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', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\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 NotStartsWith: 'Does Not Start With',\n Like: 'Like',\n EndsWith: 'Ends With',\n NotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n NotContains: 'Does Not Contain',\n IsNull: 'Null',\n NotNull: 'Not Null',\n IsEmpty: 'Empty',\n IsNotEmpty: 'Not Empty',\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 if (isNullOrUndefined(this.headerModule) || isNullOrUndefined(this.contentModule)) {\n return;\n }\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 && gridContent$$1.querySelector('.e-masked-table')) {\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 var childGridParent = null;\n var parentInstance = null;\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 childGridParent = this.parentDetails ? document.querySelector(\"#\" + this.parentDetails.parentID) : null;\n parentInstance = childGridParent ? childGridParent.ej2_instances[0] : null;\n if (this.childGrid && parentInstance && isNullOrUndefined(parentInstance.childGrid.childGrid)) {\n var childGridObject = Object.assign({}, parentInstance.childGrid, { childGrid: newProp.childGrid });\n parentInstance.setProperties({ childGrid: childGridObject }, true);\n while (!isNullOrUndefined(parentInstance.parentDetails)) {\n var currentParent = document.querySelector(\"#\" + parentInstance.parentDetails.parentID);\n var currentParentInstance = currentParent ? currentParent.ej2_instances[0] : null;\n if (currentParentInstance) {\n var currentChildObject = Object.assign({}, currentParentInstance.childGrid);\n currentChildObject.childGrid = parentInstance.childGrid;\n currentParentInstance.setProperties({ childGrid: currentChildObject }, true);\n }\n parentInstance = currentParentInstance;\n }\n }\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 case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 if (typeof value === 'string') {\n value = this.sanitize(value);\n }\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 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 isChildGrid = _this.childGrid && _this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this.getContentTable().querySelectorAll('.e-row') :\n _this.getDataRows();\n _this.refreshReactTemplateTD(rows, isChildGrid);\n var mCont = _this.getContent().querySelector('.' + movableContent);\n var frCont = _this.getContent().querySelector('.e-frozen-right-content');\n if (mCont && mCont.querySelectorAll('.e-templatecell').length) {\n _this.refreshReactTemplateTD(_this.getMovableDataRows(), isChildGrid, true);\n }\n if (frCont && frCont.querySelectorAll('.e-templatecell').length) {\n _this.refreshReactTemplateTD(_this.getFrozenRightDataRows(), isChildGrid, true);\n }\n if (renderTemplates) {\n _this.renderTemplates();\n }\n });\n }\n };\n /**\n * @param {Element[] | NodeListOf} rows - Defines the rows\n * @param {boolean} isChildGrid - Defines whether it is a Hierarchy Grid.\n * @param {boolean} isFrozen - Defines whether it is a Frozen Grid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactTemplateTD = function (rows, isChildGrid, isFrozen) {\n var cells = 'cells';\n var rowIdx = 'index';\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) &&\n !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, isFrozen ? cell.index : i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 * Remove the existing columns along with the grid actions like sorting, filtering, searching, grouping, aggregate, etc., and grid will refresh with new columns based on the updated new data source.\n * > * If no columns are specified while changing the data source, then the columns are auto generated in the Grid based on the list of columns in the updated data source.\n *\n * @param {Object | DataManager | DataResult} dataSource - Assign the new datasource.\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines columns.\n * @returns {void}\n *\n *\n * ```typescript\n * \n *
    \n * \n * ```\n *\n */\n Grid.prototype.changeDataSource = function (dataSource, columns) {\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: [] } }, true);\n }\n if (columns && columns.length) {\n this.setProperties({ columns: columns }, true);\n }\n if (dataSource) {\n if (isNullOrUndefined(columns)) {\n this.setProperties({ columns: [] }, true);\n }\n this.setProperties({ dataSource: dataSource }, true);\n }\n this.freezeRefresh();\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 if (this.autoFit) {\n this.preventAdjustColumns();\n }\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 *\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 *\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 *\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 *\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 * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if (this.isFrozenGrid() || (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var columns = this.getColumns();\n var headerTable = this.getHeaderTable();\n var tableWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n if (this.groupSettings.columns.length\n && this.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) > -1) {\n var headerCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll(':not(.e-group-intent):not(.e-detail-intent):not(.e-drag-intent)'));\n if (headerCol[parseInt(i.toString(), 10)].style.display === 'none') {\n continue;\n }\n }\n if (columns[parseInt(i.toString(), 10)].width) {\n tableWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n else {\n tableWidth = 0;\n break;\n }\n }\n }\n if (tableWidth) {\n var percentageWidth = this.isPercentageWidthGrid();\n var unit = this.widthUnit(percentageWidth);\n var contentTable = this.getContentTable();\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var indentWidth = this.defaultIndentWidth(percentageWidth);\n var indentWidthUnitFormat = indentWidth.toString() + unit;\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n var contentIndentCol = [].slice.call(contentTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n for (var i = 0; i < headerIndentCol.length; i++) {\n headerIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n contentIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n tableWidth += indentWidth;\n }\n }\n if ((percentageWidth && tableWidth < 100)\n || (!percentageWidth && tableWidth < contentTable.parentElement.clientWidth)) {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n var tableWidthUnitFormat = tableWidth.toString() + unit;\n headerTable.style.setProperty('width', tableWidthUnitFormat);\n contentTable.style.setProperty('width', tableWidthUnitFormat);\n }\n else {\n this.restoreAdjustColumns();\n }\n };\n Grid.prototype.restoreAdjustColumns = function () {\n if (this.isFrozenGrid() || (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n removeClass([headerTable, contentTable], ['e-tableborder']);\n headerTable.style.removeProperty('width');\n contentTable.style.removeProperty('width');\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var percentageWidth = this.isPercentageWidthGrid();\n var indentWidthUnitFormat_1 = this.defaultIndentWidth(percentageWidth).toString() + this.widthUnit(percentageWidth);\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n headerIndentCol.forEach(function (element) {\n element.style.setProperty('width', indentWidthUnitFormat_1);\n });\n headerTable.querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.recalcIndentWidth();\n }\n };\n Grid.prototype.widthUnit = function (percentageWidth) {\n return percentageWidth ? '%' : 'px';\n };\n Grid.prototype.defaultIndentWidth = function (percentageWidth) {\n return percentageWidth ? parseFloat((30 / this.element.offsetWidth * 100).toFixed(1)) : 30;\n };\n Grid.prototype.isPercentageWidthGrid = function () {\n return this.getColumns()[0].width.toString().indexOf('%') > -1;\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('data-tooltip-id')) {\n return;\n }\n if (this.getTooltipStatus(element)) {\n var col = this.getColumns()[parseInt(element.getAttribute(dataColIndex), 10)];\n var domSetter = col.disableHtmlEncode ? 'innerText' : 'innerHTML';\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n var innerElement = element.getElementsByClassName('e-headertext')[0];\n contentDiv[\"\" + domSetter] = this.sanitize(innerElement.innerText);\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv[\"\" + domSetter] = this.sanitize(element.innerText);\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n if (this.enableHtmlSanitizer) {\n this.toolTipObj.enableHtmlSanitizer = true;\n }\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');\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 *\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 *\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 *\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 *\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 *\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 *\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 *\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 * @returns {void}\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 *\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|macintosh/.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 * Calculates the page size by parent element height\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 *\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 *\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 *\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 *\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 * Method to sanitize any suspected untrusted strings and scripts before rendering them.\n *\n * @param {string} value - Specifies the html value to sanitize\n * @returns {string} Returns the sanitized html string\n * @hidden\n */\n Grid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer) {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\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, \"currentViewData\", void 0);\n __decorate$1([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate$1([\n Property()\n ], Grid.prototype, \"showHider\", 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, \"enableHtmlSanitizer\", 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 Property(false)\n ], Grid.prototype, \"autoFit\", 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('22.1.39')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"created\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"load\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate$1([\n Event$1()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate$1([\n Event$1()\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`](./printmode/).\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 | Function} 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 (typeof template === 'function') {\n return compile(template);\n }\n else 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 parsed column field id\n * @hidden\n */\nfunction getParsedFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/[^a-zA-Z0-9_.]/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' || column.type === 'dateonly') {\n args = { type: column.type === 'dateonly' ? 'date' : 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 'dateonly':\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 {number} value - Defines the date or month value\n * @returns {string} Returns string\n * @hidden\n */\nfunction padZero(value) {\n if (value < 10) {\n return '0' + value;\n }\n return String(value);\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @param {boolean} isExecuteLocal - Defines whether the data actions performed in client and used for dateonly type field\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nfunction getDatePredicate(filterObject, type, isExecuteLocal) {\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 (type === 'dateonly' && !isExecuteLocal) {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var dateOnlyString = prevObj.value.getFullYear() + '-' + padZero(prevObj.value.getMonth() + 1) + '-' + padZero(prevObj.value.getDate());\n var predicates = new Predicate(prevObj.field, prevObj.operator, dateOnlyString, false);\n datePredicate = predicates;\n }\n else {\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 }\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 if (isUndefined(value)) {\n var newCase = splits[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + splits[parseInt(i.toString(), 10)].slice(1);\n value = object[\"\" + newCase] || object[(\"\" + newCase).charAt(0).toLowerCase() + (\"\" + newCase).slice(1)];\n }\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 (keyField.includes('.')) {\n var currentValue = getObject(keyField, e);\n var originalValue = getObject(keyField, data);\n if (currentValue === originalValue) {\n dataIndex = index;\n }\n }\n else {\n if (e[\"\" + keyField] === data[\"\" + keyField]) {\n dataIndex = index;\n }\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)] && 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 {{frozenLeft: Column[], movable: Column[], frozenRight: 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[parseInt(i.toString(), 10)].visible) {\n if (columnModel[parseInt(i.toString(), 10)].freeze === 'Left' || columnModel[parseInt(i.toString(), 10)].freezeTable === 'frozen-left') {\n frozenLeftColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n else if (columnModel[parseInt(i.toString(), 10)].freeze === 'Right' || columnModel[parseInt(i.toString(), 10)].freezeTable === 'frozen-right') {\n frozenRightColumns.push(columnModel[parseInt(i.toString(), 10)]);\n }\n else {\n movableColumns.push(columnModel[parseInt(i.toString(), 10)]);\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 - Specifies the currency code to be used for formatting.\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.isExecuteLocal = false;\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 document.body.querySelector('.e-chkcancel-icon').setAttribute('title', this.localeObj.getConstant('Clear'));\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n document.body.querySelector('.e-search-icon').setAttribute('title', this.localeObj.getConstant('Search'));\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.type === 'dateonly') && 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 if (this.options.type === 'dateonly') {\n parsed = parsed.getFullYear() + '-' + padZero(parsed.getMonth() + 1) + '-' + padZero(parsed.getDate());\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' || _this.options.type === 'dateonly') {\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, isExecuteLocal) {\n var predicates = CheckBoxFilterBase.getPredicate(columns, isExecuteLocal);\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.isExecuteLocal = true;\n this.queryGenerate(query);\n this.isExecuteLocal = false;\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, this.isExecuteLocal);\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.isExecuteLocal = true;\n this.updateResult();\n this.isExecuteLocal = false;\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, this.isExecuteLocal);\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 ?\n this.parent.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value : 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, isExecuteLocal) {\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, isExecuteLocal);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols, isExecuteLocal) {\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' || first.type === 'dateonly') {\n predicate = getDatePredicate(first, first.type, isExecuteLocal);\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' || cols[parseInt(p.toString(), 10)].type === 'dateonly') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal));\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' || cols[parseInt(p.toString(), 10)].type === 'dateonly') {\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, isExecuteLocal), 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, isExecuteLocal), 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.type === 'dateonly' || 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', 'NotContains', '', 'CustomFilter']\n };\n options.date = options.number;\n options.datetime = options.number;\n options.dateonly = 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', dateonly: '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 animationSettings: { effect: 'None' },\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' });\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' });\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 'dateonly': 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: '#', name: 'Goto page' + i }\n });\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\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: '#'\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: '#'\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 this.target = e.target;\n if (this.target.classList.contains('e-numericitem')) {\n e.preventDefault();\n }\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!this.target.classList.contains('e-disable') && !isNullOrUndefined(this.target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(this.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 isLastSet;\n var pageNo;\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\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 if (pagerObj.isPagerResized) {\n var focusedItem = this.pagerElement.querySelector('.e-focus');\n var focusedorTarget = this.target ? this.target : focusedItem ? focusedItem : null;\n var prevFocused = false;\n var nextFocused = false;\n var firstFocused = false;\n var lastFocused = false;\n var numItemFocused = false;\n var npFocused = false;\n var ppFocused = false;\n if (focusedorTarget) {\n var classList_1 = focusedorTarget.classList;\n if (classList_1.contains('e-icons')) {\n switch (true) {\n case classList_1.contains('e-prev'):\n prevFocused = true;\n break;\n case classList_1.contains('e-next'):\n nextFocused = true;\n break;\n case classList_1.contains('e-first'):\n firstFocused = true;\n break;\n case classList_1.contains('e-last'):\n lastFocused = true;\n break;\n }\n }\n else if (classList_1.contains('e-numericitem')) {\n switch (true) {\n case classList_1.contains('e-np'):\n npFocused = true;\n break;\n case classList_1.contains('e-pp'):\n ppFocused = true;\n break;\n default:\n numItemFocused = classList_1.contains('e-numericitem');\n break;\n }\n }\n }\n isLastSet = lastFocused || (this.pagerModule.keyAction === 'End');\n numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var isPageAvailable = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.currentPage; });\n //Setting pageNo to render based on key action or click action.\n if (firstFocused || this.pagerModule.keyAction === 'Home') {\n pageNo = 1 + i;\n }\n else if (lastFocused || this.pagerModule.keyAction === 'End') {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n else if (nextFocused || this.pagerModule.keyAction === 'ArrowRight' || prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n if (isPageAvailable) {\n pageNo = parseInt(numItems[0].getAttribute('index'), 10) + i;\n }\n else if (prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n pageNo = parseInt(this.PP.getAttribute('index'), 10) + i;\n }\n else {\n pageNo = pagerObj.currentPage + i;\n }\n }\n else if (npFocused || ppFocused) {\n pageNo = pagerObj.currentPage + i;\n }\n else if (numItemFocused) {\n pageNo = (parseInt(numItems[0].getAttribute('index'), 10) + i);\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n if (pageNo <= pagerObj.totalPages) {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-hide');\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-current');\n this.links[parseInt(i.toString(), 10)].setAttribute('role', 'link');\n }\n attributes(this.first, {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('firstPageTooltip')\n });\n attributes(this.pagerElement.querySelector('.e-mfirst'), {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('firstPageTooltip')\n });\n attributes(this.last, {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('lastPageTooltip')\n });\n attributes(this.pagerElement.querySelector('.e-mlast'), {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('lastPageTooltip')\n });\n attributes(this.prev, {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPageTooltip')\n });\n attributes(this.pagerElement.querySelector('.e-mprev'), {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPageTooltip')\n });\n attributes(this.next, {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPageTooltip')\n });\n attributes(this.pagerElement.querySelector('.e-mnext'), {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPageTooltip')\n });\n var ppIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? isLastSet\n ? parseInt(numItems[0].getAttribute('index'), 10) - pagerObj.avgNumItems\n : parseInt(numItems[0].getAttribute('index'), 10) - numItems.length\n : parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount;\n attributes(this.PP, {\n 'index': ((ppIndex < 1) ? '1' : ppIndex.toString()),\n 'title': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip')\n });\n var NPIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? parseInt(numItems[numItems.length - 1].getAttribute('index'), 10)\n : parseInt(this.links[this.links.length - 1].getAttribute('index'), 10);\n attributes(this.NP, {\n 'index': (NPIndex + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip')\n });\n this.target = undefined;\n };\n NumericContainer.prototype.updateStyles = function () {\n var _this = this;\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n var currentPageIndex = this.links.findIndex(function (link) { return link.getAttribute('index') === _this.pagerModule.currentPage.toString(); });\n var currentPage = (this.pagerModule.isPagerResized && currentPageIndex !== -1) ? currentPageIndex\n : ((this.pagerModule.currentPage - 1) % this.pagerModule.pageCount);\n classList(this.links[parseInt(currentPage.toString(), 10)], ['e-currentitem', 'e-active'], []);\n this.links[parseInt(currentPage.toString(), 10)].setAttribute('aria-current', 'page');\n this.links[parseInt(currentPage.toString(), 10)].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 || (this.pagerModule.isPagerResized\n && this.links.findIndex(function (link) { return parseInt(link.getAttribute('index'), 10) === 1; }))) {\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 var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)\n || (pagerObj.isPagerResized && Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === 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.checkAll = true;\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 this.resizePager();\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resizePager, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'load', this.resizePager, 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resizePager);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'load', this.resizePager);\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 this.keyAction = e.key;\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 this.keyAction = '';\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 else {\n if (oldProp.pageSize && this.pageSize !== oldProp.pageSize) {\n this.setProperties({ pageSize: oldProp.pageSize }, false);\n this.pagerdropdownModule['dropDownListObject'].text = oldProp.pageSize + '';\n }\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 | Function} 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 (typeof template === 'function') {\n this.templateFn = compile(template);\n }\n else {\n if (document.querySelectorAll(template).length) {\n this.templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\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 this.resizePager();\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 /**\n * Resize pager component by hiding pager component's numeric items based on total width available for pager.\n *\n * @returns {void}\n */\n Pager.prototype.resizePager = function () {\n var _this = this;\n var isStyleApplied = this.element.classList.contains('e-pager') ? getComputedStyle(this.element).getPropertyValue('border-style').includes('solid') : null;\n if (!(this.template) && isStyleApplied) {\n var pagerElements = this.element.querySelectorAll(\n /* tslint:disable-next-line:max-line-length */\n '.e-mfirst, .e-mprev, .e-icon-first, .e-icon-prev, .e-pp:not(.e-disable), .e-numericitem:not(.e-hide), .e-numericitem.e-active.e-hide, .e-np:not(.e-disable), .e-icon-next, .e-icon-last, .e-parentmsgbar, .e-mnext, .e-mlast, .e-pagerdropdown, .e-pagerconstant');\n var actualWidth = 0;\n /**\n * Loop through all the inner elements of pager to calculate the required width for pager child elements.\n */\n for (var i = 0; i < pagerElements.length; i++) {\n if (getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).display !== 'none') {\n actualWidth += pagerElements[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginRight);\n }\n }\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n actualWidth += parseFloat(getComputedStyle(pagerContainer).marginLeft)\n + parseFloat(getComputedStyle(pagerContainer).marginRight);\n var pagerWidth = this.element.clientWidth\n - parseFloat(getComputedStyle(this.element).paddingLeft)\n - parseFloat(getComputedStyle(this.element).paddingRight)\n - parseFloat(getComputedStyle(this.element).marginLeft)\n - parseFloat(getComputedStyle(this.element).marginRight);\n var numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var hiddenNumItems = pagerContainer.querySelectorAll('.e-numericitem.e-hide:not([style*=\"display: none\"])');\n var hideFrom = numItems.length;\n var showFrom = 1;\n var bufferWidth = (!isNullOrUndefined(parentsUntil(this.element, 'e-bigger'))) ? 10 : 5;\n var NP = pagerContainer.querySelector('.e-np');\n var PP = pagerContainer.querySelector('.e-pp');\n var detailItems = this.element.querySelectorAll('.e-parentmsgbar:not([style*=\"display: none\"]), .e-pagesizes:not([style*=\"display: none\"])');\n if (detailItems.length) {\n var totDetailWidth_1 = 0;\n detailItems.forEach(function (item) {\n totDetailWidth_1 += item.offsetWidth;\n });\n this.averageDetailWidth = totDetailWidth_1 / detailItems.length;\n }\n var totalWidth = 0;\n /**\n * Loop to calculate average width of numeric item.\n */\n for (var i = 0; i < numItems.length; i++) {\n totalWidth += numItems[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginRight);\n }\n var numericItemWidth = totalWidth / numItems.length;\n /**\n * Condition to hide numeric items when calculated actual width exceeds available pager space.\n */\n if (actualWidth >= (pagerWidth - (numericItemWidth ? numericItemWidth : 0))) {\n this.isPagerResized = true;\n var diff = Math.abs((actualWidth) - pagerWidth);\n // To hide Pager message elements when no more numeric items available to hide.\n if (numItems.length <= 1 && detailItems.length && window.innerWidth >= 768) {\n var pagerDetailItemsWidth_1 = 0;\n var pagerDetailItems = this.element.querySelectorAll('.e-pagercontainer , .e-parentmsgbar, .e-pagesizes');\n pagerDetailItems.forEach(function (element) {\n pagerDetailItemsWidth_1 += element.offsetWidth + parseFloat(getComputedStyle(element).marginLeft)\n + parseFloat(getComputedStyle(element).marginRight);\n });\n if ((pagerDetailItemsWidth_1) > (pagerWidth - bufferWidth)) {\n detailItems[0].style.display = 'none';\n }\n }\n // To calculate number of numeric items need to be hidden.\n var numToHide = Math.ceil(diff / (numericItemWidth));\n numToHide = (numToHide === 0) ? 1 : (numToHide > numItems.length) ? (numItems.length - 1) : numToHide;\n if (this.currentPage !== this.totalPages) {\n classList(NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n for (var i = 1; i <= numToHide; i++) {\n var hideIndex = hideFrom - parseInt(i.toString(), 10);\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (this.currentPage !== 1 && ((parseInt(numItems[Math.abs(hideIndex)].getAttribute('index'), 10) === this.currentPage)\n || parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.currentPage)) {\n hideIndex = 0;\n classList(PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n if (!numItems[Math.abs(hideIndex)].classList.contains('e-currentitem')) {\n numItems[Math.abs(hideIndex)].classList.add('e-hide');\n }\n }\n }\n /**\n * Condition to show numeric items when space availble in pager at dom.\n */\n else if (actualWidth < (pagerWidth) && hiddenNumItems.length) {\n var diff = Math.abs(pagerWidth - (actualWidth));\n var hiddenDetailItems = this.element.querySelectorAll('.e-parentmsgbar[style*=\"display: none\"], .e-pagesizes[style*=\"display: none\"]');\n // To show Pager message elements.\n if (hiddenDetailItems.length && (diff > (this.averageDetailWidth + (this.averageDetailWidth / 4)))) {\n hiddenDetailItems[(hiddenDetailItems.length - 1)].style.display = 'inline-block';\n }\n if ((diff > (numericItemWidth * 2) && !hiddenDetailItems.length && window.innerWidth >= 768)) {\n // To calculate number of numeric items need to be shown.\n var numToShow = Math.floor((diff) / (numericItemWidth + bufferWidth));\n numToShow = (numToShow > hiddenNumItems.length) ? hiddenNumItems.length : (numToShow - 1);\n //Seggregating hidden num items as less index and greater index values than current page value.\n var lesserIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) < _this.currentPage; }).sort(function (a, b) { return parseInt(b.getAttribute('index'), 10) - parseInt(a.getAttribute('index'), 10); });\n var greaterIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) > _this.currentPage; });\n var showItems = (lesserIndexItems.length && lesserIndexItems)\n || (greaterIndexItems.length && greaterIndexItems);\n for (var i = 1; i <= numToShow; i++) {\n var showItem = showItems && showItems[Math.abs(showFrom - i)];\n if (showItem) {\n showItem.classList.remove('e-hide');\n if (showItem === showItems[showItems.length - 1]) {\n showItems = null;\n }\n }\n }\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (numItems.length) {\n if (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.totalPages) {\n classList(NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n if (parseInt(numItems[0].getAttribute('index'), 10) === 1) {\n classList(PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n var isLastSet = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === _this.totalPages; });\n var ppIndex = (parseInt(numItems[0].getAttribute('index'), 10) - (isLastSet ? this.avgNumItems : numItems.length));\n PP.setAttribute('index', (ppIndex < 1) ? '1' : ppIndex.toString());\n NP.setAttribute('index', (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) + 1).toString());\n this.avgNumItems = isLastSet ? this.avgNumItems : numItems.length;\n }\n }\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$1()\n ], Pager.prototype, \"click\", void 0);\n __decorate$5([\n Property('')\n ], Pager.prototype, \"cssClass\", void 0);\n __decorate$5([\n Event$1()\n ], Pager.prototype, \"dropDownChanged\", void 0);\n __decorate$5([\n Event$1()\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 var isbeforeAll = this.pagerModule.isAllPage;\n this.pagerModule.isAllPage = this.isPageSizeAll(value);\n this.pagerModule.checkAll = (isbeforeAll && this.pagerModule.isAllPage) ? true : false;\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 ((e.action === 'add' && e.requestType === 'save') || (e.requestType === 'batchsave')) {\n if (this.pagerObj.isAllPage && (e.count === this.pageSettings.pageSize)) {\n this.pagerObj.setProperties({ pageSize: e.count }, true);\n }\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 var clearIconElem = innerDIV.querySelector('.e-clear-icon');\n if (clearIconElem) {\n clearIconElem.setAttribute('title', this.parent.localeObj.getConstant('ClearButton'));\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 ? 'e-popup-flbar' + ' ' + this.parent.cssClass : 'e-popup-flbar'\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 // eslint-disable-next-line @typescript-eslint/tslint/config\n change: function () {\n var valInput = document.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (this.value === 'isempty' || this.value === 'isnotempty' ||\n this.value === 'isnull' || this.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n }\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' && this.query.queries[0].e\n && this.query.queries[0].e.predicates) {\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' || args.column.type === 'dateonly') {\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, 'dateonly': 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 var optrInput = this.dlgObj.element.querySelector('.e-flm_optrdiv').querySelector('input');\n var valInput = this.dlgObj.element.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (optrInput.value === 'Empty' || optrInput.value === 'Not Empty' ||\n optrInput.value === 'Null' || optrInput.value === 'Not Null') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput && valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\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 if (!isNullOrUndefined(eControl)) {\n fltrValue = col.type === 'boolean' ? eControl.checked :\n !isNullOrUndefined(eControl.ej2_instances) ?\n eControl.ej2_instances[0].value :\n eControl.value;\n }\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', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\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' });\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 (filterOperator === 'like' && filterValue.indexOf('%') === -1) {\n filterValue = '%' + filterValue + '%';\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' || this.column.type === 'dateonly') ?\n new Date(filterValue) : parseFloat(filterValue);\n if ((this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') && 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' || column.type === 'dateonly') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), (column.type === 'dateonly' ? 'date' : column.type)) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly')) {\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 (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n if (value.indexOf('*') !== -1 || value.indexOf('?') !== -1 || value.indexOf('%3f') !== -1) {\n this.operator = this.filterOperators.wildCard;\n }\n else if (value.indexOf('%') !== -1) {\n this.operator = this.filterOperators.like;\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 { value: 'isnull', text: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', text: this.l10n.getConstant('NotNull') }\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: 'isempty', text: this.l10n.getConstant('IsEmpty') },\n { value: 'doesnotstartwith', text: this.l10n.getConstant('NotStartsWith') },\n { value: 'doesnotendwith', text: this.l10n.getConstant('NotEndsWith') },\n { value: 'doesnotcontain', text: this.l10n.getConstant('NotContains') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnotempty', text: this.l10n.getConstant('IsNotEmpty') },\n { value: 'like', text: this.l10n.getConstant('Like') }\n ],\n numberOperator: numOptr,\n dateOperator: numOptr,\n datetimeOperator: numOptr,\n dateonlyOperator: 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.classList.contains('e-device') ? document.querySelector('.e-filter-popup')\n : 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');\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 var gObj = this.parent;\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 var headerTable;\n var contentTable;\n var footerTable;\n var rightCnt = gObj.getFrozenRightColumnsCount();\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n if (gObj.isFrozenGrid()) {\n if (rightCnt > 0) {\n headerTable = gObj.getHeaderContent().querySelector('.e-frozen-right-header').children[0];\n contentTable = gObj.getContent().querySelector('.e-frozen-right-content').children[0];\n }\n else {\n headerTable = gObj.getHeaderContent().querySelector('.' + movableHeader).children[0];\n contentTable = gObj.getContent().querySelector('.' + movableContent).children[0];\n }\n }\n else {\n headerTable = gObj.getHeaderTable();\n contentTable = gObj.getContentTable();\n }\n var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n else {\n removeClass([headerTable, contentTable], ['e-tableborder']);\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\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 (!isNullOrUndefined(cols[parseInt(i.toString(), 10)])) {\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 }\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[parseInt(i.toString(), 10)].classList.contains('e-hide')) {\n headers.splice(i, 1);\n i--;\n }\n else if (headers[parseInt(i.toString(), 10)].closest('thead').firstChild === headers[parseInt(i.toString(), 10)].parentElement) {\n stackedCols.push(this.parent.getColumnByUid(headers[parseInt(i.toString(), 10)].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.enableVirtualization && gObj.allowGrouping && gObj.groupSettings.columns.length &&\n !isNullOrUndefined(e.target.closest('tr'))) {\n var dragTrs = e.dragElement.querySelectorAll('tr');\n var indentCells = e.target.closest('tr').querySelectorAll('.e-indentcell');\n for (var i = 0; i < dragTrs.length; i++) {\n for (var j = 0; j < indentCells.length; j++) {\n var cloneIndentCell = indentCells[parseInt(j.toString(), 10)].cloneNode(true);\n dragTrs[parseInt(i.toString(), 10)].insertBefore(cloneIndentCell, dragTrs[parseInt(i.toString(), 10)].firstElementChild);\n }\n }\n }\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 || _this.isDropGrid.groupSettings.columns.length ||\n e.target.classList.contains('e-selectionbackground')) && !_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 (isNullOrUndefined(trElement.nextSibling) || !gObj.allowGrouping || !gObj.groupSettings.columns.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 && (!_this.parent.allowGrouping || !gObj.groupSettings.columns.length)) {\n gObj.refresh();\n }\n else {\n _this.rowOrder(args);\n }\n }\n if (_this.parent.getContentTable().scrollHeight < _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setLastRowCell();\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 if (gObj.enableVirtualization && gObj.allowGrouping && gObj.groupSettings.columns.length &&\n args.rows.length === 1) {\n var removeElem = gObj.getRowElementByUID(args.rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (!isNullOrUndefined(removeElem)) {\n remove(removeElem);\n }\n }\n tbody$$1.insertBefore(args.rows[parseInt(i.toString(), 10)], target);\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n var dragRowUid = args.rows[parseInt(i.toString(), 10)].getAttribute('data-uid');\n var dropRowUid = args.target.parentElement.getAttribute('data-uid');\n var dragRowObject = gObj.getRowObjectFromUID(dragRowUid);\n var dropRowObject = gObj.getRowObjectFromUID(dropRowUid);\n if (dragRowObject.parentUid !== dropRowObject.parentUid) {\n gObj['groupModule'].groupReorderHandler(dragRowObject, dropRowObject);\n }\n }\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 if (!gObj.enableVirtualization && gObj.allowGrouping && gObj.groupSettings.columns.length) {\n gObj['groupModule'].groupReorderRowObject(args, tr);\n resetRowIndex(this.parent, gObj.getRowsObject().filter(function (data) { return data.isDataRow; }), tr);\n this.parent.notify(refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n else if (gObj.enableVirtualization && gObj.allowGrouping && gObj.groupSettings.columns.length) {\n gObj['groupModule'].groupReorderRowObject(args, tr);\n gObj['groupModule'].vGroupResetRowIndex();\n this.parent.notify(refreshExpandandCollapse, { rows: this.parent.vRows });\n }\n else {\n this.refreshData(tr, mtr, frTr);\n }\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 (gObj.enableVirtualization && gObj.allowGrouping && gObj.groupSettings.columns.length) {\n targetIdx = this.parent.getDataRows().indexOf(args.target.parentElement);\n }\n if ((args.fromIndex < args.dropIndex || args.fromIndex === args.dropIndex) && (!gObj.allowGrouping ||\n !gObj.groupSettings.columns.length)) {\n targetIdx = targetIdx + 1;\n }\n var tr = gObj.allowGrouping && gObj.groupSettings.columns.length && targetIdx !== -1 &&\n args.fromIndex < args.dropIndex ? gObj.getRowByIndex(targetIdx).nextSibling : 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 && (!this.parent.allowGrouping || !this.parent.groupSettings.columns.length)) {\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 if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n this.removeBorder(element);\n }\n else {\n this.removeFirstRowBorder(element);\n this.removeLastRowBorder(element);\n }\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 if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n element = targetRow.previousSibling;\n rowElement = [].slice.call(element\n .querySelectorAll('.e-groupcaption,.e-summarycell,.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n else {\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 }\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 if (this.parent.enableVirtualization && this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n targetRowIndex = this.parent.getDataRows().indexOf(targetRow);\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length &&\n targetRow.previousSibling.classList.contains('e-groupcaptionrow')) {\n element = targetRow.previousSibling;\n rowElement = [].slice.call(element\n .querySelectorAll('.e-groupcaption,.e-summarycell,.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n else {\n element = this.parent.getRowByIndex(targetRowIndex - 1);\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\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 if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n element = ([].slice.call(this.isDropGrid.getContentTable().querySelectorAll('tr'))).filter(function (row$$1) {\n return row$$1.querySelector('td.e-dragborder');\n })[0];\n }\n else {\n element = (this.isDropGrid.isFrozenGrid() ? this.isDropGrid.getMovableRows() : this.isDropGrid.getRows())\n .filter(function (row$$1) { return row$$1.querySelector('td.e-dragborder'); })[0];\n }\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 if (gObj.enableVirtualization && gObj.allowGrouping && gObj.groupSettings.columns.length &&\n gObj.getSelectedRows().length) {\n this.rows = gObj.getSelectedRows();\n this.rowData = gObj.getSelectedRecords();\n }\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 this.parent.focusModule.currentInfo.element = e.target;\n this.parent.focusModule.currentInfo.elementToFocus = e.target;\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 if (e.target.classList.contains('e-icon-grightarrow') || e.target.classList.contains('e-icon-gdownarrow')) {\n e.preventDefault();\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[parseInt(i.toString(), 10)]], '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[parseInt(i.toString(), 10)].style.display !== 'none'\n && rowNodes[parseInt(i.toString(), 10)].classList.contains('e-groupcaptionrow')) {\n if (rowNodes[parseInt(i.toString(), 10)].querySelector('.e-recordpluscollapse')) {\n addClass(rowNodes[parseInt(i.toString(), 10)].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 getParsedFieldID(getComplexFieldID(field)) + ']') : this.parent.element.querySelector('.e-groupdroparea div[ej-mappingname=' + getParsedFieldID(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 /**\n * @param { Row } fromRowObj - Defines group key changed Data row object.\n * @param { Row } toRowObj - Defines group key setting reference Data row object.\n * @returns { void }\n * @hidden\n */\n Group.prototype.groupedRowReorder = function (fromRowObj, toRowObj) {\n var dragRow = this.parent.getRowElementByUID(fromRowObj.uid);\n var dropRow = this.parent.getRowElementByUID(toRowObj.uid);\n var dropArgs = {\n rows: [dragRow], target: dropRow, fromIndex: fromRowObj.index, dropIndex: toRowObj.index\n };\n if (!isNullOrUndefined(fromRowObj) && !isNullOrUndefined(toRowObj) &&\n fromRowObj.parentUid !== toRowObj.parentUid) {\n if (dropRow) {\n if (dropRow['style'].display === 'none') {\n dragRow['style'].display = 'none';\n }\n if (dropArgs.fromIndex > dropArgs.dropIndex) {\n this.parent.getContentTable().querySelector(tbody).insertBefore(dragRow, dropRow);\n }\n else {\n this.parent.getContentTable().querySelector(tbody).insertBefore(dragRow, dropRow.nextSibling);\n }\n }\n else {\n remove(dragRow);\n }\n this.groupReorderHandler(fromRowObj, toRowObj);\n var tr = [].slice.call(this.parent.getContentTable().getElementsByClassName(row));\n this.groupReorderRowObject(dropArgs, tr, toRowObj);\n if (this.parent.enableVirtualization) {\n this.vGroupResetRowIndex();\n }\n else {\n resetRowIndex(this.parent, this.parent.getRowsObject().filter(function (data) { return data.isDataRow; }), tr);\n }\n this.parent.notify(refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n };\n Group.prototype.vGroupResetRowIndex = function () {\n var gObj = this.parent;\n var rowObjects = gObj.vRows;\n var rowElements = this.parent.getRows();\n for (var i = 0, startIdx = 0, k = 0; i < rowObjects.length; i++) {\n if (rowObjects[parseInt(i.toString(), 10)].isDataRow) {\n rowObjects[parseInt(i.toString(), 10)].index = startIdx;\n rowObjects[parseInt(i.toString(), 10)].isAltRow = gObj.enableAltRow ? startIdx % 2 !== 0 : false;\n var rowElement = gObj.getRowElementByUID(rowObjects[parseInt(i.toString(), 10)].uid);\n if (!isNullOrUndefined(rowElement)) {\n rowElements[parseInt(k.toString(), 10)] = rowElement;\n rowElement.setAttribute(dataRowIndex, startIdx.toString());\n rowElement.setAttribute(ariaRowIndex, (startIdx + 1).toString());\n if (rowObjects[parseInt(i.toString(), 10)].isAltRow) {\n rowElement.classList.add('e-altrow');\n }\n else {\n rowElement.classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElement.cells.length; j++) {\n rowElement.cells[parseInt(j.toString(), 10)].setAttribute('index', startIdx.toString());\n }\n k++;\n }\n startIdx++;\n }\n }\n };\n Group.prototype.groupReorderHandler = function (dragRowObject, dropRowObject) {\n var gObj = this.parent;\n var dragRowObjectData = dragRowObject.data;\n var dropRowObjectData = dropRowObject.data;\n var groupAggregateTemplate = gObj['groupModule'].getGroupAggregateTemplates(false);\n var dropParentRowObject = gObj.getRowObjectFromUID(dropRowObject.parentUid);\n var dragParentRowObject = gObj.getRowObjectFromUID(dragRowObject.parentUid);\n var dropRootParentRowObjects = [dropParentRowObject];\n var dragRootParentRowObjects = [dragParentRowObject];\n var groupColumns = gObj.groupSettings.columns;\n for (var j = 0; j < groupColumns.length; j++) {\n dragRowObjectData[groupColumns[parseInt(j.toString(), 10)]] = dropRowObjectData[groupColumns[parseInt(j.toString(), 10)]];\n if (j > 0) {\n dropRootParentRowObjects.push(gObj.getRowObjectFromUID(dropRootParentRowObjects[j - 1].parentUid));\n dragRootParentRowObjects.push(gObj.getRowObjectFromUID(dragRootParentRowObjects[j - 1].parentUid));\n }\n }\n dragRowObject.parentUid = dropRowObject.parentUid;\n dragRowObject.visible = dropRowObject.visible;\n dragRowObject['parentGid'] = dropRowObject['parentGid'];\n if (dragRowObject.changes !== dragRowObjectData) {\n dragRowObject.changes = dragRowObjectData;\n }\n var updatedCurrentViewData = this.iterateGroupAggregates([{ dragRowObjects: dragRootParentRowObjects,\n dropRowObjects: dropRootParentRowObjects }]);\n var updatedDragCurrentViewData = updatedCurrentViewData.filter(function (object) {\n return (object['key'] === dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key'] ||\n (object['key'] instanceof Date && object['key'].toString() ===\n dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key'].toString()));\n });\n var updatedDropCurrentViewData = updatedCurrentViewData.filter(function (object) {\n return (object['key'] === dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key'] ||\n (object['key'] instanceof Date && object['key'].toString() ===\n dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key'].toString()));\n });\n updatedCurrentViewData = [];\n if (!isNullOrUndefined(updatedDragCurrentViewData[0])) {\n updatedCurrentViewData.push(updatedDragCurrentViewData[0]);\n }\n if (!isNullOrUndefined(updatedDropCurrentViewData[0])) {\n updatedCurrentViewData.push(updatedDropCurrentViewData[0]);\n }\n var currentViewData = gObj.currentViewData;\n for (var i = 0; i < currentViewData.length; i++) {\n if (isNullOrUndefined(updatedDragCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] ===\n dragRootParentRowObjects[dragRootParentRowObjects.length - 1].data['key']) {\n currentViewData.splice(i, 1);\n i--;\n }\n else if (isNullOrUndefined(updatedDropCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] ===\n dropRootParentRowObjects[dropRootParentRowObjects.length - 1].data['key']) {\n currentViewData.splice(i, 1);\n i--;\n }\n else if (!isNullOrUndefined(updatedDragCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] === updatedDragCurrentViewData[0]['key']) {\n currentViewData[parseInt(i.toString(), 10)] = updatedDragCurrentViewData[0];\n }\n else if (!isNullOrUndefined(updatedDropCurrentViewData[0]) &&\n currentViewData[parseInt(i.toString(), 10)]['key'] === updatedDropCurrentViewData[0]['key']) {\n currentViewData[parseInt(i.toString(), 10)] = updatedDropCurrentViewData[0];\n }\n }\n var updatedRowObject = this.groupGenerator.generateRows(updatedCurrentViewData, {});\n var dragRootParentAggregateRowObject = [];\n var dropRootParentAggregateRowObject = [];\n for (var i = 0; i < dragRootParentRowObjects.length; i++) {\n dragRootParentAggregateRowObject\n .push.apply(dragRootParentAggregateRowObject, this.getGroupParentFooterAggregateRowObject(dragRootParentRowObjects[parseInt(i.toString(), 10)].uid));\n }\n for (var i = 0; i < dropRootParentRowObjects.length; i++) {\n dropRootParentAggregateRowObject\n .push.apply(dropRootParentAggregateRowObject, this.getGroupParentFooterAggregateRowObject(dropRootParentRowObjects[parseInt(i.toString(), 10)].uid));\n }\n dragRootParentRowObjects.push.apply(dragRootParentRowObjects, dragRootParentAggregateRowObject);\n dropRootParentRowObjects.push.apply(dropRootParentRowObjects, dropRootParentAggregateRowObject);\n this.updatedRowObjChange(dragRootParentRowObjects, updatedRowObject, groupAggregateTemplate);\n this.updatedRowObjChange(dropRootParentRowObjects, updatedRowObject, groupAggregateTemplate);\n this.groupReorderRefreshHandler(dragRowObject, dragParentRowObject, dropParentRowObject, groupAggregateTemplate);\n };\n Group.prototype.updatedRowObjChange = function (rootParentRowObjects, updatedRowObj, groupAggregateTemplate) {\n var gObj = this.parent;\n var rowObjects = gObj.getRowsObject();\n var cache = {};\n var virtualCacheRowObjects = [];\n if (gObj.enableVirtualization) {\n cache = gObj.contentModule['vgenerator'].cache;\n virtualCacheRowObjects = gObj.vcRows;\n }\n for (var i = 0; i < rootParentRowObjects.length; i++) {\n var keyPresent = false;\n for (var j = 0; j < updatedRowObj.length; j++) {\n if (!isNullOrUndefined(updatedRowObj[parseInt(j.toString(), 10)]) &&\n !isNullOrUndefined(rootParentRowObjects[parseInt(i.toString(), 10)].data['key']) &&\n !isNullOrUndefined(updatedRowObj[parseInt(j.toString(), 10)].data['key']) &&\n ((rootParentRowObjects[parseInt(i.toString(), 10)].data['key'] ===\n updatedRowObj[parseInt(j.toString(), 10)].data['key'] ||\n (rootParentRowObjects[parseInt(i.toString(), 10)].data['key'] instanceof Date &&\n rootParentRowObjects[parseInt(i.toString(), 10)].data['key'].toString() ===\n updatedRowObj[parseInt(j.toString(), 10)].data['key'].toString())))) {\n var index = rowObjects.indexOf(rootParentRowObjects[parseInt(i.toString(), 10)]);\n if (index !== -1) {\n rowObjects[parseInt(index.toString(), 10)].data = updatedRowObj[parseInt(j.toString(), 10)].data;\n rowObjects[parseInt(index.toString(), 10)]['gSummary'] = updatedRowObj[parseInt(j.toString(), 10)]['gSummary'];\n }\n if (gObj.enableVirtualization) {\n var vIndex = virtualCacheRowObjects.indexOf(rootParentRowObjects[parseInt(i.toString(), 10)]);\n if (vIndex !== -1) {\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)].data =\n updatedRowObj[parseInt(j.toString(), 10)].data;\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)]['gSummary'] =\n updatedRowObj[parseInt(j.toString(), 10)]['gSummary'];\n }\n }\n rootParentRowObjects[parseInt(i.toString(), 10)].data = updatedRowObj[parseInt(j.toString(), 10)].data;\n rootParentRowObjects[parseInt(i.toString(), 10)]['gSummary'] =\n updatedRowObj[parseInt(j.toString(), 10)]['gSummary'];\n updatedRowObj.splice(j, 1);\n j--;\n keyPresent = true;\n break;\n }\n else if (rootParentRowObjects[parseInt(i.toString(), 10)].isAggregateRow &&\n updatedRowObj[parseInt(j.toString(), 10)].isAggregateRow) {\n for (var l = 0; l < groupAggregateTemplate.length; l++) {\n if (this.evaluateGroupAggregateValueChange(rootParentRowObjects[parseInt(i.toString(), 10)], updatedRowObj[parseInt(j.toString(), 10)], groupAggregateTemplate[parseInt(l.toString(), 10)])) {\n var index = rowObjects.indexOf(rootParentRowObjects[parseInt(i.toString(), 10)]);\n if (index !== -1) {\n rowObjects[parseInt(index.toString(), 10)].data = updatedRowObj[parseInt(j.toString(), 10)].data;\n rowObjects[parseInt(index.toString(), 10)]['gSummary'] =\n updatedRowObj[parseInt(j.toString(), 10)]['gSummary'];\n }\n if (gObj.enableVirtualization) {\n var vIndex = virtualCacheRowObjects.indexOf(rootParentRowObjects[parseInt(i.toString(), 10)]);\n if (vIndex !== -1) {\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)].data =\n updatedRowObj[parseInt(j.toString(), 10)].data;\n virtualCacheRowObjects[parseInt(vIndex.toString(), 10)]['gSummary'] =\n updatedRowObj[parseInt(j.toString(), 10)]['gSummary'];\n }\n }\n rootParentRowObjects[parseInt(i.toString(), 10)].data = updatedRowObj[parseInt(j.toString(), 10)].data;\n rootParentRowObjects[parseInt(i.toString(), 10)]['gSummary'] =\n updatedRowObj[parseInt(j.toString(), 10)]['gSummary'];\n keyPresent = true;\n break;\n }\n }\n if (keyPresent) {\n break;\n }\n }\n }\n if (!keyPresent) {\n var removeElem = gObj.getRowElementByUID(rootParentRowObjects[parseInt(i.toString(), 10)].uid);\n if (!isNullOrUndefined(removeElem)) {\n remove(removeElem);\n }\n rowObjects.splice(rowObjects.indexOf(rootParentRowObjects[parseInt(i.toString(), 10)]), 1);\n if (gObj.enableVirtualization) {\n virtualCacheRowObjects.splice(virtualCacheRowObjects.indexOf(rootParentRowObjects[parseInt(i.toString(), 10)]), 1);\n for (var k = 1; k <= Object.keys(cache).length; k++) {\n var vcIndex = cache[parseInt(k.toString(), 10)].indexOf(rootParentRowObjects[parseInt(i.toString(), 10)]);\n if (vcIndex !== -1) {\n cache[parseInt(k.toString(), 10)].splice([parseInt(vcIndex.toString(), 10)], 1);\n }\n }\n }\n }\n }\n };\n Group.prototype.groupReorderRefreshHandler = function (dragRowObject, dragParentRowObject, dropParentRowObject, groupAggregateTemplate) {\n var gObj = this.parent;\n var row$$1 = new RowRenderer(gObj['serviceLocator'], null, gObj);\n if (!isNullOrUndefined(dragRowObject) && !isNullOrUndefined(gObj.getRowElementByUID(dragRowObject.uid))) {\n row$$1.refresh(dragRowObject, gObj.getColumns(), false);\n }\n for (var j = 0; j < gObj.groupSettings.columns.length; j++) {\n if (!isNullOrUndefined(dragParentRowObject) &&\n !isNullOrUndefined(gObj.getRowElementByUID(dragParentRowObject.uid))) {\n row$$1.refresh(dragParentRowObject, gObj.getColumns(), false);\n }\n if (!isNullOrUndefined(dropParentRowObject) &&\n !isNullOrUndefined(gObj.getRowElementByUID(dropParentRowObject.uid))) {\n row$$1.refresh(dropParentRowObject, gObj.getColumns(), false);\n }\n if (groupAggregateTemplate.length) {\n var dragParentFooterAggregateRowObjects = !isNullOrUndefined(dragParentRowObject) ?\n this.getGroupParentFooterAggregateRowObject(dragParentRowObject.uid) : [];\n var dropParentFooterAggregateRowObjects = !isNullOrUndefined(dropParentRowObject) ?\n this.getGroupParentFooterAggregateRowObject(dropParentRowObject.uid) : [];\n for (var k = 0; k < dropParentFooterAggregateRowObjects.length; k++) {\n if (!isNullOrUndefined(dropParentFooterAggregateRowObjects[parseInt(k.toString(), 10)]) && !isNullOrUndefined(gObj\n .getRowElementByUID(dropParentFooterAggregateRowObjects[parseInt(k.toString(), 10)].uid))) {\n row$$1.refresh(dropParentFooterAggregateRowObjects[parseInt(k.toString(), 10)], gObj.getColumns(), false);\n }\n }\n for (var k = 0; k < dragParentFooterAggregateRowObjects.length; k++) {\n if (!isNullOrUndefined(dragParentFooterAggregateRowObjects[parseInt(k.toString(), 10)]) && !isNullOrUndefined(gObj\n .getRowElementByUID(dragParentFooterAggregateRowObjects[parseInt(k.toString(), 10)].uid))) {\n row$$1.refresh(dragParentFooterAggregateRowObjects[parseInt(k.toString(), 10)], gObj.getColumns(), false);\n }\n }\n }\n if (!isNullOrUndefined(dragParentRowObject)) {\n dragParentRowObject = gObj.getRowObjectFromUID(dragParentRowObject.parentUid);\n }\n if (!isNullOrUndefined(dropParentRowObject)) {\n dropParentRowObject = gObj.getRowObjectFromUID(dropParentRowObject.parentUid);\n }\n }\n };\n Group.prototype.getGroupParentFooterAggregateRowObject = function (parentUid) {\n var rowObjects = this.parent.getRowsObject();\n var parentFooterAggregates = [];\n for (var i = 0; i < rowObjects.length; i++) {\n if (rowObjects[parseInt(i.toString(), 10)].parentUid === parentUid && rowObjects[parseInt(i.toString(), 10)].isAggregateRow) {\n parentFooterAggregates.push(rowObjects[parseInt(i.toString(), 10)]);\n }\n }\n return parentFooterAggregates;\n };\n Group.prototype.evaluateGroupAggregateValueChange = function (rowObjects, updatedRowObject, groupAggregateTemplate) {\n var change$$1 = false;\n if (rowObjects.data[groupAggregateTemplate['field']]['field'] === updatedRowObject.data[groupAggregateTemplate['field']]['field']\n && rowObjects.data[groupAggregateTemplate['field']]['key'] === updatedRowObject.data[groupAggregateTemplate['field']]['key'] &&\n rowObjects.data[groupAggregateTemplate['field']]\n // eslint-disable-next-line no-prototype-builtins\n .hasOwnProperty(groupAggregateTemplate['field'] + ' - ' + groupAggregateTemplate['type']) &&\n updatedRowObject.data[groupAggregateTemplate['field']]\n // eslint-disable-next-line no-prototype-builtins\n .hasOwnProperty(groupAggregateTemplate['field'] + ' - ' + groupAggregateTemplate['type'])) {\n change$$1 = true;\n }\n return change$$1;\n };\n Group.prototype.groupReorderRowObject = function (args, tr, dropRObj) {\n var gObj = this.parent;\n var rowObjects = gObj.enableVirtualization ? gObj.vRows : gObj.getRowsObject();\n var orderChangeRowObjects = [];\n var dropRowObject = dropRObj ? dropRObj :\n gObj.getRowObjectFromUID(args.target.closest('tr').getAttribute('data-uid'));\n var rowObjDropindex;\n for (var i = 0; i < args.rows.length; i++) {\n var orderChangeRowObject = gObj.getRowObjectFromUID(args.rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (dropRowObject === orderChangeRowObject) {\n rowObjDropindex = rowObjects.indexOf(dropRowObject);\n }\n orderChangeRowObjects.push(rowObjects.splice(rowObjects.indexOf(orderChangeRowObject), 1)[0]);\n }\n if (isNullOrUndefined(rowObjDropindex)) {\n rowObjDropindex = rowObjects.indexOf(dropRowObject);\n if (args.fromIndex > args.dropIndex) {\n rowObjects.splice.apply(rowObjects, [rowObjDropindex, 0].concat(orderChangeRowObjects));\n }\n else {\n rowObjects.splice.apply(rowObjects, [rowObjDropindex + 1, 0].concat(orderChangeRowObjects));\n }\n }\n else {\n rowObjects.splice.apply(rowObjects, [rowObjDropindex, 0].concat(orderChangeRowObjects));\n }\n if (!gObj.enableVirtualization) {\n var recordobj = {};\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 recordobj[parseInt(i.toString(), 10)] = currentViewData[parseInt(index.toString(), 10)];\n }\n var rows = this.parent.getRows();\n for (var i = 0, len = tr.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = tr[parseInt(i.toString(), 10)];\n currentViewData[parseInt(i.toString(), 10)] = recordobj[parseInt(i.toString(), 10)];\n }\n }\n };\n Group.prototype.gettingVirtualData = function (parentRowObjs, curViewRec, pK) {\n var datas = [];\n var _loop_2 = function (i) {\n if (curViewRec.indexOf(parentRowObjs[parseInt(i.toString(), 10)].data) === -1) {\n datas.push(parentRowObjs[parseInt(i.toString(), 10)].data);\n }\n if (parentRowObjs[parseInt(i.toString(), 10)].data['field'] === this_2.parent.groupSettings.columns[0]) {\n var draggedData_1 = parentRowObjs[parseInt(i.toString(), 10)].data['items'];\n if (!isNullOrUndefined(draggedData_1['records'])) {\n draggedData_1 = draggedData_1['records'];\n }\n var _loop_3 = function (j) {\n if (pK && curViewRec.findIndex(function (data) { return data[pK.toString()] ===\n draggedData_1[parseInt(j.toString(), 10)][pK.toString()]; }) === -1) {\n datas.push(draggedData_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < draggedData_1.length; j++) {\n _loop_3(j);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < parentRowObjs.length; i++) {\n _loop_2(i);\n }\n return datas;\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 field = this.parent.getPrimaryKeyFieldNames()[0];\n if (this.parent.enableVirtualization && this.parent.allowGrouping && this.parent.groupSettings.columns.length &&\n (!isNullOrUndefined(editedData[0]['dragRowObjects']) || !isNullOrUndefined(editedData[0]['dropRowObjects']))) {\n var dragParentRowObjects = editedData[0]['dragRowObjects'];\n var dropParentRowObjects = editedData[0]['dropRowObjects'];\n if (dragParentRowObjects) {\n initData.push.apply(initData, this.gettingVirtualData(dragParentRowObjects, initData, field));\n }\n if (dropParentRowObjects) {\n initData.push.apply(initData, this.gettingVirtualData(dropParentRowObjects, initData, field));\n }\n }\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 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_4 = 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_4(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 if (e.target.classList.contains('e-icon-grightarrow') || e.target.classList.contains('e-icon-gdownarrow')\n && !this.parent.allowGrouping) {\n e.preventDefault();\n }\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 } });\n var detailCell = this.parent.createElement('th', { className: 'e-detailcell', attrs: { 'scope': 'col' } });\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('th', { className: 'e-detailindentcell', attrs: { 'scope': 'col' } }));\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 = extend({}, gObj.expandedRows[rowObj.index].gridModel, gObj.childGrid, true);\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 if (_this.searchElement) {\n _this.sIcon = _this.searchElement.parentElement.querySelector('.e-sicon');\n _this.sIcon.classList.remove('e-clear-icon');\n _this.sIcon.removeAttribute('title');\n _this.sIcon.style.cursor = 'default';\n }\n if (_this.isSearched || _this.parent.searchSettings.key.length) {\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[parseInt(i.toString(), 10)].querySelector('.e-btn,.e-input,.e-toolbar-item-focus'))) {\n getFocusToolbarItems.push(getFocusToolbarElements[parseInt(i.toString(), 10)]);\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' });\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: { 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 var bottom = _this.containerRect.bottom > rect.bottom ? _this.containerRect.bottom - rect.bottom : 0;\n info.entered = top >= 0;\n return top + (_this.options.pageHeight / 2) >= 0 || (bottom > 0 && rect.bottom > 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 _this.containerRect = _this.options.container.getBoundingClientRect();\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 _this = this;\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 (e.requestType === 'grouping') {\n this.parent.currentViewData[\"\" + grouping] = this.parent.currentViewData[\"\" + grouping].filter(function (item, index) {\n return _this.parent.currentViewData[\"\" + grouping].indexOf(item) === index;\n });\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.diff = 0;\n _this.heightChange = false;\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' && !isNaN(this.rowIndex)) {\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 + 1 === lastPage || this.parent.pageSettings.currentPage === lastPage) &&\n blocks.length === 2 && e.requestType === 'delete') {\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.count !== 0 ? this.getGroupedTotalBlocks() :\n this.getTotalBlocks()]);\n var lastPage = Math.ceil(this.getTotalBlocks() / 2);\n var placeHolderBottom = Math.round(this.virtualEle.placeholder.getBoundingClientRect().bottom);\n var wrapperBottom = Math.round(this.virtualEle.wrapper.getBoundingClientRect().bottom);\n if ((this.currentInfo.page === lastPage || this.currentInfo.page + 1 === lastPage) && this.currentInfo.direction === 'down' &&\n placeHolderBottom > wrapperBottom && !this.diff) {\n this.diff = placeHolderBottom - wrapperBottom;\n }\n if (this.diff && (this.currentInfo.page === lastPage) && placeHolderBottom > wrapperBottom) {\n virtualHeight -= this.diff;\n this.heightChange = true;\n }\n else if (this.diff && this.heightChange && this.requestType === 'virtualscroll') {\n virtualHeight -= this.diff;\n this.heightChange = false;\n }\n this.virtualEle.setVirtualHeight(virtualHeight, width);\n if (this.virtualEle && this.virtualEle.wrapper) {\n this.virtualEle.wrapper.style.minHeight = !isNullOrUndefined(virtualHeight) ? formatUnit(this.parent.height) : '0px';\n }\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 if (this.parent.pageSettings.pageSize % 2 !== 0) {\n startIdx += Math.floor((startIdx / this.getBlockSize()) / 2);\n }\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' });\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');\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 _this = this;\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 = initializeCSPTemplate(function () {\n return _this.getDialogEditTemplateElement('HeaderTemplate', args).outerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\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 _this = this;\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 ? initializeCSPTemplate(function () {\n return _this.getDialogEditTemplateElement('FooterTemplate', args).outerHTML;\n }) : 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');\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 if (col.type === 'dateonly' && args.rowData[col.field] instanceof Date) {\n var cellValue = args.rowData[col.field];\n args.rowData[col.field] = cellValue.getFullYear() + '-' + padZero(cellValue.getMonth() + 1) + '-' + padZero(cellValue.getDate());\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 if (params.dataSource) {\n this.obj.dataSource = params.dataSource;\n }\n else {\n this.obj.dataSource = args.column.isForeignColumn() ? [args.foreignKeyData[0]] : [args.rowData];\n }\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 if (this.column.edit.params && this.column.edit.params.dataSource) {\n this.obj.dataSource = this.column.edit.params.dataSource;\n }\n else {\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 };\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 if (this.parent.editSettings.mode === 'Batch') {\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n }\n };\n DefaultEditCell.prototype.keyEventHandler = function (args) {\n if (args.key === 'Enter' || args.key === 'Tab') {\n var evt = new Event('change', { bubbles: false, cancelable: true });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n DefaultEditCell.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 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 var _this = this;\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.allowGrouping && this.parent.groupSettings.columns.length) {\n var dragRow = args.row;\n var rows = this.parent.getRowsObject();\n var dragRowUid = dragRow.getAttribute('data-uid');\n var dragRowObject_1 = this.parent.getRowObjectFromUID(dragRowUid);\n var _loop_1 = function (i) {\n rows = rows.filter(function (data) {\n return data.isDataRow && data.data[_this.parent.groupSettings.columns[parseInt(i.toString(), 10)]] ===\n args.data[_this.parent.groupSettings.columns[parseInt(i.toString(), 10)]] && data !== dragRowObject_1;\n });\n };\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n _loop_1(i);\n }\n var dropRowObject = rows[0];\n if (!isNullOrUndefined(dragRowObject_1) && !isNullOrUndefined(dropRowObject) &&\n dragRowObject_1.parentUid !== dropRowObject.parentUid) {\n this.parent['groupModule'].groupedRowReorder(dragRowObject_1, dropRowObject);\n }\n else if (this.parent.aggregates.length) {\n this.parent.aggregateModule.refresh(args.data, this.parent.groupSettings.enableLazyLoading ? args.row : undefined);\n }\n }\n else 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 if (cols[parseInt(i.toString(), 10)].type === 'string') {\n cols[parseInt(i.toString(), 10)].defaultValue = this.parent.sanitize(cols[parseInt(i.toString(), 10)].defaultValue);\n }\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_2 = 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_2(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.parent.getColumns()[parseInt(colIndex.toString(), 10)].allowEditing) {\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 if (gObj.isEdit) {\n this.saveCell();\n }\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_1 = getCellByColAndRowIndex(this.parent, col, rowIndex, index);\n var rowObj_1 = col.getFreezeTableName() === 'movable' ? this.parent.getMovableRowsObject()[parseInt(rowIndex.toString(), 10)] :\n col.getFreezeTableName() === frozenRight ? gObj.getFrozenRightRowsObject()[parseInt(rowIndex.toString(), 10)]\n : gObj.getRowObjectFromUID(td_1.parentElement.getAttribute('data-uid'));\n this.refreshTD(td_1, col, rowObj_1, value);\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && col.template) {\n var thisRef_1 = this;\n var newReactTd_1 = this.newReactTd;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(queryCellInfo, {\n cell: newReactTd_1 || td_1, column: col, data: rowObj_1.changes\n });\n });\n }\n else if ((this.parent.isReact || isReactChild) && col.template) {\n this.parent.renderTemplates();\n this.parent.trigger(queryCellInfo, {\n cell: this.newReactTd || td_1, column: col, data: rowObj_1.changes\n });\n }\n else {\n this.parent.trigger(queryCellInfo, {\n cell: this.newReactTd || td_1, column: col, data: rowObj_1.changes\n });\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 if (typeof value === 'string') {\n value = this.parent.sanitize(value);\n }\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 var isReactCompiler = gObj.isReact && column.template && typeof (column.template) !== 'string';\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj\n && gObj.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n if (gObj.requireTemplateRef) {\n gObj.renderTemplates(function () {\n gObj.trigger(cellSaved, cellSaveArgs);\n });\n }\n else {\n gObj.renderTemplates();\n gObj.trigger(cellSaved, cellSaveArgs);\n }\n }\n else {\n gObj.trigger(cellSaved, cellSaveArgs);\n }\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 if (this.parent.enableVirtualization && this.parent.editSettings.mode === 'Normal') {\n var idx = parseInt(tr.getAttribute('data-rowindex'), 10);\n tr = this.parent.getRowByIndex(idx);\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 case 'dateonly':\n val = value && (value = new Date(value)) ?\n value.getFullYear() + '-' + padZero(value.getMonth() + 1) + '-' + padZero(value.getDate()) : null;\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', 'filterafteropen', 'filterchoicerequest'];\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 if (typeof value === 'string') {\n this.parent.sanitize(value);\n }\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 if (col[parseInt(j.toString(), 10)].type === 'string') {\n value = this.parent.sanitize(value);\n }\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 if (col_1.type === 'string') {\n value = this.parent.sanitize(value);\n }\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', 'filtersearchbegin', '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 * @param {Object} newRule - specifies the new rule object\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('#' + getParsedFieldID(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('#' + getParsedFieldID(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 === 'dateonly' || 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' || args.column.type === 'dateonly') {\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' || args.column.type === 'dateonly') {\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.grpFooterTemplates = [];\n this.footerTemplates = [];\n this.aggIndex = 0;\n this.totalAggregates = 0;\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 grpFooterTemplates: this.grpFooterTemplates\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 this.grpFooterTemplates = args['grpFooterTemplates'];\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 (gObj.allowGrouping && gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length) {\n if (isNullOrUndefined(exportProperties)) {\n exportProperties = { hierarchyExportMode: 'All' };\n }\n else {\n exportProperties.hierarchyExportMode = exportProperties.hierarchyExportMode || 'All';\n }\n }\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, defaultCurrencyCode, 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, defaultCurrencyCode);\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 this.capTemplate = undefined;\n this.footerTemplates = [];\n this.grpFooterTemplates = [];\n this.aggIndex = 0;\n this.totalAggregates = 0;\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(gObj, CellType.Summary, cell.column.footerTemplate, cell, row);\n }\n else if (groupFooterTemplate) {\n eCell.value = this.getAggreateValue(gObj, CellType.GroupSummary, cell.column.groupFooterTemplate, cell, row);\n }\n else if (groupCaptionTemplate) {\n eCell.value = this.getAggreateValue(gObj, 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 var dummyOutlineLevel = 'outlineLevel';\n var dummyGrouping = 'grouping';\n if (this.groupedColLength < 8 && this.groupedColLength > 0 && !(gObj.groupSettings.enableLazyLoading && isNullOrUndefined(excelRows[excelRows.length - 1][\"\" + dummyGrouping]))) {\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 (gObj, 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 || this.parent.isAngular) {\n if (isNullOrUndefined(cell.column.customAggregate)) {\n if (!isNullOrUndefined(cell.column.footerTemplate)) {\n txt = this.getAggregateTemplate(this.footerTemplates, gObj.getFooterContentTable(), data, cell);\n }\n else {\n if (cell.column.groupFooterTemplate) {\n txt = this.getAggregateTemplate(this.grpFooterTemplates, gObj.getContentTable(), data, cell);\n }\n else {\n this.capTemplate = isNullOrUndefined(this.capTemplate) ?\n gObj.getContentTable().querySelector('.e-groupcaptionrow')\n .querySelector('.e-summarycell.e-templatecell').innerText.split(data[(cell.column.type)])[0]\n : this.capTemplate;\n txt = this.capTemplate + data[(cell.column.type)];\n }\n }\n return !isNullOrUndefined(txt) ? (txt) : '';\n }\n else {\n if (this.parent.isReact) {\n for (var i = 0; i < this.parent['portals'].length; i++) {\n if (data['Custom'] && this.parent['portals'][i].children.props.Custom === data['Custom']) {\n return this.parent['portals'][i].containerInfo.textContent;\n }\n }\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));\n }\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.getAggregateTemplate = function (template, contentRows, data, cell) {\n var aggClassName = cell.column.groupFooterTemplate ? 'e-groupfooterrow' : 'e-summaryrow';\n if (!template.length) {\n this.totalAggregates = 0;\n this.aggIndex = 0;\n for (var i = 0; i < contentRows.querySelectorAll('tr').length; i++) {\n if (contentRows.querySelectorAll('tr')[parseInt(i.toString(), 10)].classList.contains(aggClassName)) {\n this.totalAggregates++;\n if (contentRows.querySelectorAll('tr')[parseInt(i.toString(), 10) + 1] &&\n contentRows.querySelectorAll('tr')[parseInt(i.toString(), 10) + 1].classList.contains('e-groupcaptionrow')) {\n break;\n }\n }\n }\n }\n if (template.length < this.totalAggregates) {\n template.push(contentRows.querySelectorAll('.' + aggClassName)[template.length]\n .querySelector('.e-summarycell.e-templatecell').innerText.split(data[(cell.column.type)])[0]);\n }\n if (this.parent.groupSettings.enableLazyLoading && cell.column.groupFooterTemplate && this.totalAggregates === 0) {\n this.totalAggregates = template.length;\n }\n this.aggIndex++;\n var aggTemplate = template[this.aggIndex - 1] + data[(cell.column.type)];\n if (this.aggIndex === this.totalAggregates) {\n this.aggIndex = 0;\n }\n return aggTemplate;\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' && !gObj.childGridLevel) {\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 = pdfExportProperties && pdfExportProperties.query ? pdfExportProperties.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 = pdfExportProperties.dataSource instanceof DataManager ?\n pdfExportProperties.dataSource : new DataManager(pdfExportProperties.dataSource);\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 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 && !isNullOrUndefined(cell.column.customAggregate)) {\n for (var j = 0; j < this.parent['portals'].length; j++) {\n if (data['Custom'] && this.parent['portals'][j].children.props.Custom === data['Custom']) {\n txt = this.parent['portals'][j].containerInfo;\n break;\n }\n }\n value.push(!isNullOrUndefined(txt) ? txt['textContent'] : '');\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n value.push(!isNullOrUndefined(txt[0]) ? txt[0].textContent : '');\n }\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 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 String(commandCols[parseInt(j.toString(), 10)][\"\" + idInString]) === uid) {\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').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 if (e.args.action === 'add' && e.args.requestType === 'save') {\n this.parent.pageSettings.currentPage = Math.ceil(e.args['index'] / this.parent.pageSettings.pageSize) ?\n Math.ceil(e.args['index'] / this.parent.pageSettings.pageSize) : 1;\n }\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 if (this.parent.infiniteScrollSettings.enableCache && this.parent.isEdit && isNullOrUndefined(data['endEdit'])) {\n this.parent.editModule.closeEdit();\n }\n else {\n this.getVirtualInfiniteEditedData();\n data.virtualData = this.virtualInfiniteData;\n data.isAdd = this.isAdd;\n data.isCancel = this.isCancel;\n }\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[parseInt(i.toString(), 10)].defaultValue) {\n this.virtualInfiniteData[hiddenColumn[parseInt(i.toString(), 10)].field] =\n hiddenColumn[parseInt(i.toString(), 10)].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 ((this.parent.isAngular || this.parent.isReact || this.parent.isVue || this.parent.isVue3) && isInfiniteScroll &&\n !e.args.isFrozen && this.parent.infiniteScrollSettings.enableCache) {\n var isChildGrid = this.parent.childGrid && this.parent.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.parent.getDataRows();\n if (frozenCols) {\n this.parent.contentModule['freezeRowElements'] = rows;\n var mCont = this.parent.getContent().querySelector('.' + movableContent);\n var frLCont = this.parent.getContent().querySelector('.e-frozen-left-content');\n if (mCont && mCont.querySelectorAll('.e-templatecell').length) {\n this.parent.refreshReactTemplateTD(this.parent.getMovableDataRows(), isChildGrid, true);\n }\n if (frLCont && frLCont.querySelectorAll('.e-templatecell').length) {\n this.parent.refreshReactTemplateTD(this.parent.getDataRows(), isChildGrid, true);\n }\n this.parent.contentModule['freezeRowElements'] = this.parent.getRows();\n }\n else {\n this.parent.refreshReactTemplateTD(rows, isChildGrid);\n }\n }\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, getParsedFieldID, setComplexFieldID, isEditable, isActionPrevent, wrap, setFormatter, addRemoveActiveClasses, distinctStringValues, getFilterMenuPostion, getZIndexCalcualtion, toogleCheckbox, setChecked, createCboxWithWrap, removeAddCboxClasses, refreshForeignData, getForeignData, getColumnByForeignKeyValue, padZero, 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 '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 '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 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 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 _this.updateInitValue(mText, mVal, e.result);\n });\n }\n else {\n this.updateInitValue(mText, mVal, new DataManager(model.dataSource).executeLocal(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 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 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 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 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 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 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 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 value ? addClass([this.element], [RTL]) : removeClass([this.element], [RTL]);\n };\n InPlaceEditor.prototype.setFocus = function () {\n if (this.isTemplate) {\n return;\n }\n this.isExtModule ? this.notify(setFocus, {}) : this.componentObj.element.focus();\n };\n InPlaceEditor.prototype.removeEditor = function (isBlazorDestroy) {\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 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 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 if (typeof tempStr === 'string') {\n tempStr = tempStr.trim();\n }\n var compiler = compile(tempStr);\n if (!isNullOrUndefined(compiler)) {\n var isString = (isBlazor() && typeof tempStr !== 'function' &&\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 && typeof tempStr !== 'function' &&\n (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 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 === 'function') {\n this.templateCompile(trgEle, tempStr);\n }\n else 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 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 (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 var errorClass = function (element, val, action) {\n [].slice.call(element).forEach(function (ele) {\n if (ele) {\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 InPlaceEditor.prototype.successHandler = function (e) {\n this.initRender = false;\n var eventArgs = { data: e, value: this.getSendValue() };\n this.triggerSuccess(eventArgs);\n };\n InPlaceEditor.prototype.failureHandler = function (e) {\n var _this = this;\n var eventArgs = { data: e, value: this.getSendValue() };\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 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 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 (newProp.showButtons) ? this.appendButtons(this.formEle) : this.destroyButtons();\n break;\n case 'value':\n this.updateValue();\n this.textOption === 'Never' ? this.renderValue(this.checkValue(parseValue(this.type, this.value, this.model)))\n : this.renderInitialValue();\n break;\n case 'emptyText':\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 *\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 *\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 *\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 { 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.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || this.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) {\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.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || this.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) {\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 this.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 var attributeArray = [];\n for (var i = 0; i < data.length; i++) {\n var fieldsData = this.getFieldValues(data[i]);\n var attributesValue = fieldsData.htmlAttributes;\n attributeArray.push(attributesValue);\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 if (!isNullOrUndefined(attributeArray[i])) {\n if (attributeArray.length > i && Object.keys(attributeArray[i]).length) {\n var htmlAttr = [];\n htmlAttr = (Object.keys(attributeArray[i]));\n for (var j = 0; j < htmlAttr.length; j++) {\n wrapper.setAttribute(htmlAttr[j], attributeArray[i][htmlAttr[j]]);\n }\n }\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 htmlAttributes: typeof data === 'object' ? (data.htmlAttributes ? data.htmlAttributes : this.htmlAttributes) : this.htmlAttributes\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 * @param {number | HTMLElement } fields - We can pass index number or element of chip.\n * {% codeBlock src='chips/find/index.md' %}{% endcodeBlock %}\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 * @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 * {% codeBlock src='chips/add/index.md' %}{% endcodeBlock %}\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 * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/select/index.md' %}{% endcodeBlock %}\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 * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/remove/index.md' %}{% endcodeBlock %}\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 * {% 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 * {% 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, \"htmlAttributes\", 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), FIXEDFAB);\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.removeRippleEffect = null;\n this.keyboardModule.destroy();\n this.popupKeyboardModule.destroy();\n this.keyboardModule = null;\n this.popupKeyboardModule = null;\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","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nfunction disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nfunction createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nfunction setImmediate(handler) {\n var unbind;\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n // eslint-disable-next-line\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nfunction getValue(nameSpace, obj) {\n // eslint-disable-next-line\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nfunction setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n // eslint-disable-next-line\n var start = obj || {};\n // eslint-disable-next-line\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[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\n// eslint-disable-next-line\nfunction deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\n// eslint-disable-next-line\nvar containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\n// eslint-disable-next-line\nfunction isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nfunction getEnumValue(enumObject, enumValue) {\n // eslint-disable-next-line\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nfunction merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nfunction extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n // eslint-disable-next-line\n if (!arguments_1[i]) {\n return \"continue\";\n }\n // eslint-disable-next-line\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n // eslint-disable-next-line\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n // eslint-disable-next-line\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n // eslint-disable-next-line\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {Object} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nfunction isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {Object} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nfunction isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nfunction getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nfunction debounce(eventFunction, delay) {\n // eslint-disable-next-line\n var out;\n return function () {\n var _this = this;\n // eslint-disable-next-line\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\n// eslint-disable-next-line\nfunction queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nfunction isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nfunction compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nfunction throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n // eslint-disable-next-line\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nfunction print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\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 var regExp = RegExp;\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 var regExp = RegExp;\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 if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\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 var regExp = RegExp;\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 regExp$1 = RegExp;\nvar parseRegex = new regExp$1('^([^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 regExp = RegExp;\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 /* eslint-disable */\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 = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[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 dOptions.isCustomFormat = true;\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 // eslint-disable-next-line\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 * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\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 var regExp = RegExp;\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 if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\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', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', '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 = '21.1';\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=MjEuMQ==\";\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 var regExp = RegExp;\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.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : 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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : 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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : 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.isSafari() ? 'touchstart' : 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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : 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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : 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 var isDialogEle = this.helperElement.classList.contains('e-dialog');\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 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n 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.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : 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.classList.contains(\"e-dialog\") && !this.element.classList.contains(\"e-card\") && 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.isSafari() ? 'touchend' : 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.isSafari() ? 'touchend' : 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 { 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, initializeCSPTemplate, 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) {\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)) {\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 if (args.floatLabelType === 'Auto') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\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 if (args.floatLabelType === 'Auto' && args.element.value === '') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\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 inputObject.container.classList.add(CLASSNAMES.INPUTGROUP);\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 (!isNullOrUndefined(button)) {\n if (value && !readonly) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\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 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 if (!isNullOrUndefined(button)) {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n button = !isNullOrUndefined(element) && element.classList.contains('e-combobox') ? null : button;\n }\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 if (floatLabelType === 'Auto' && value === '') {\n calculateWidth(element, element.parentElement);\n }\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'), 10);\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 }\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[parseInt(i.toString())].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[parseInt(index.toString())].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString())].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString())].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[parseInt(i.toString())]);\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\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 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 if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, { 'name': this.cloneElement.id });\n }\n else {\n attributes(this.hiddenInput, { 'name': this.inputName });\n }\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 || this.prevValue !== this.inputValue) {\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.inputValue = value;\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 security/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 if (this.spinUp) {\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n }\n if (this.spinDown) {\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\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 security/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 security/detect-non-literal-regexp */\n if (keyValue.match(new RegExp('[' + customValArr[i] + ']'))) {\n allowText = true;\n break;\n }\n }\n /* eslint-disable-next-line security/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 security/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 && !this.isFocus) {\n this.setMaskPlaceholder(false, false);\n }\n if (this.value === \"\") {\n this.element.selectionStart = 0;\n this.element.selectionEnd = 0;\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 security/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 security/detect-non-literal-regexp */\n value = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n }\n /* eslint-disable-next-line security/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.isFocus = true;\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.isFocus = false;\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 *\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 *\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.isMaterial3 = this.getTheme(this.sliderContainer) === 'Material3'\n || this.getTheme(this.sliderContainer) === 'Material3-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.isMaterial3) && 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.isMaterial3) && 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 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 = (typeof (this.tooltipObj.content) === 'function' ? this.tooltipObj.content() : 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 if (_this.enableHtmlSanitizer) {\n observedArgs.text = SanitizeHtmlHelper.sanitize(observedArgs.text.toString());\n }\n else {\n observedArgs.text = observedArgs.text.toString();\n }\n var contentTemp = function () {\n return observedArgs.text;\n };\n _this.tooltipObj.content = initializeCSPTemplate(contentTemp);\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 var contentTemp = function () {\n return content;\n };\n this.tooltipObj.content = initializeCSPTemplate(contentTemp);\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.isMaterial3) && !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.isMaterial3 || this.isBootstrap4 || this.isTailwind || this.isBootstrap5 || this.isFluent,\n cssClass: classNames.sliderTooltip,\n height: (this.isMaterial || this.isMaterial3) ? 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 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 || this.isMaterial3) {\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 if (this.min > this.max) {\n start = this.makeRoundNumber(start + smallStep, decimalPoints);\n }\n else {\n start = this.makeRoundNumber(start - smallStep, decimalPoints);\n }\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 < this.max ? this.min.toString() : this.max.toString());\n }\n else if ((args.keyCode === 35)) {\n value = parseFloat(this.min < this.max ? this.max.toString() : this.min.toString());\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n this.changeHandleValue(value);\n if ((this.isMaterial || this.isMaterial3) && !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 = this.min > this.max ? this.handlePos1 + 'px' : '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.min > this.max ? this.element.clientHeight - this.handlePos1 + 'px' : this.handlePos1 + 'px' });\n }\n else {\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos2 + 'px' : this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.min > this.max ? this.handlePos1 - this.handlePos2 + 'px' : 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 = (this.min < this.max ? fromMinPostion : fromMaxpostion) + 'px';\n this.limitBarFirst.style.height = (this.min < this.max ? (fromMaxpostion - fromMinPostion) : (fromMinPostion - fromMaxpostion)) + '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 = (this.min < this.max ? toMinPostion : toMaxpostion) + 'px';\n this.limitBarSecond.style.height = (this.min < this.max ? (toMaxpostion - toMinPostion) : (toMinPostion - toMaxpostion)) + '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 < this.max ? this.min : this.max;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = minValue;\n }\n }\n if (isNullOrUndefined(maxValue)) {\n maxValue = this.min < this.max ? this.max : this.min;\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: (typeof (this.tooltipObj.content) === 'function' ? this.tooltipObj.content() : 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.min < this.max && this.handlePos1 > this.handlePos2) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n if (this.min > this.max && this.handlePos1 < this.handlePos2) {\n this.handlePos2 = this.handlePos1;\n this.handleVal2 = this.handleVal1;\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 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 *\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 = this.min > this.max ? this.handlePos1 + 'px' : '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.min > this.max ? this.element.clientHeight - this.handlePos1 + 'px' : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range') {\n this.secondHandle.style.bottom = this.handlePos2 + \"px\";\n this.rangeBar.style.bottom = this.min > this.max ? this.handlePos2 + 'px' : this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.min > this.max ? this.handlePos1 - this.handlePos2 + 'px' : 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 && this.min < this.max) || (this.handlePos1 < this.handlePos2 && this.min > this.max))) {\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 && this.min < this.max) || (this.handlePos2 > this.handlePos1 && this.min > this.max))) {\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.min < (this.max) && (this.handlePos2 - handlepos) < (handlepos - this.handlePos1) || (this.min > this.max) && (this.handlePos1 - handlepos) > (handlepos - this.handlePos2))) {\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 var behindElement;\n if ((evt.type === 'click' || evt.type === 'mousedown') && evt.target === handle) {\n var eventX = evt.clientX, eventY = evt.clientY;\n behindElement = document.elementFromPoint(eventX, eventY);\n }\n if (evt.target === handle && behindElement != handle) {\n if ((this.isMaterial || this.isMaterial3) && !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.isMaterial3) && 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 if (this.min > this.max) {\n this.handlePos2 = this.xyToPosition(pos);\n this.handleVal2 = this.positionToValue(this.handlePos2);\n }\n else {\n this.handlePos1 = this.xyToPosition(pos);\n this.handleVal1 = this.positionToValue(this.handlePos1);\n }\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 if (this.min > this.max) {\n this.handlePos1 = this.xyToPosition(pos);\n this.handleVal1 = this.positionToValue(this.handlePos1);\n }\n else {\n this.handlePos2 = this.xyToPosition(pos);\n this.handleVal2 = this.positionToValue(this.handlePos2);\n }\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.min > this.max ? this.min : this.max)) {\n this.handleValueAdjust(this.handleVal2, (this.min > this.max ? this.min : this.max), 2);\n }\n if (this.handleVal1 === (this.min > this.max ? this.max : this.min)) {\n this.handleValueAdjust(this.handleVal1, (this.min > this.max ? this.max : 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 || this.isMaterial3) {\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 ((this.min < this.max && handlepos > this.handlePos2 || (this.min > this.max && 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 ((this.min < this.max && handlepos < this.handlePos1) || (this.min > this.max && 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.isMaterial3) && !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 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 *\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 *\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 *\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 if (!this.showButtons) {\n this.wireEvents();\n }\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 && !this.isMaterial3 && !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 *\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 /* eslint-disable-next-line security/detect-unsafe-regex */\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[parseInt(i.toString())]];\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[parseInt(i.toString())] : ruleValue;\n message = message.replace(formats[parseInt(i.toString())], 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 var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper')) {\n grandParent.insertBefore(errorElement, inputParent.nextSibling);\n }\n else if (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper')) {\n grandParent.parentElement.insertBefore(errorElement, grandParent.nextSibling);\n }\n else {\n inputParent.insertBefore(errorElement, this.inputElement.nextSibling);\n }\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[parseInt(i.toString())];\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 if (!isNullOrUndefined(option.param) && (typeof (option.param) === 'string' && option.param !== '')) {\n var globalize = new Internationalization;\n var dateOptions = { format: option.param.toString(), type: 'dateTime', skeleton: 'yMd' };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n return (!isNullOrUndefined(dateValue) && dateValue instanceof Date && !isNaN(+dateValue));\n }\n else {\n return !isNaN(new Date(option.value).getTime());\n }\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 /* eslint-disable-next-line security/detect-non-literal-regexp */\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 var ejInstance = getValue('ej2_instances', this.element);\n if (ejInstance[0].isReact) {\n this.reRenderFileList();\n }\n else {\n this.clearAll();\n }\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.internalCreateFileList(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.internalCreateFileList(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.internalCreateFileList(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[parseInt(i.toString())].name);\n var currentFileName = fileData[parseInt(i.toString())].name;\n var isUTF8 = false;\n for (var i_1 = 0; i_1 < currentFileName.length; i_1++) {\n if (currentFileName.charCodeAt(i_1) > 127) {\n isUTF8 = true;\n break;\n }\n }\n var htmlTagRegex = /<([a-z][a-z0-9]*)\\b[^>]*>(.*?)<\\/\\1>/i;\n var hasHTMLString = htmlTagRegex.test(currentFileName);\n if ((sanitizeFileName !== fileData[parseInt(i.toString())].name) && !(isUTF8 && !hasHTMLString)) {\n var encodedFileName = targetFiles[parseInt(i.toString())].name.replace(/[\\u00A0-\\u9999<>\\&]/g, function (i) {\n return '&#' + i.charCodeAt(0) + ';';\n });\n fileData[parseInt(i.toString())].name = encodedFileName;\n fileData[parseInt(i.toString())].status = this.localizedTexts('invalidFileName');\n fileData[parseInt(i.toString())].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 = this.filesData.concat(dataFiles);\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(dataFiles);\n }\n }\n else {\n this.internalCreateFileList(fileData);\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 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 this.removeActionButtons();\n var oldList = [].slice.call(previousListClone.childNodes);\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.internalCreateFileList([filesData[index]]);\n }\n }\n }\n else {\n this.internalCreateFileList(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('id', getUniqueID('hiddenUploader'));\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) {\n this.filesData = this.filesData && this.filesData.length > 0 ? this.filesData.concat(fileData) : fileData;\n this.internalCreateFileList(fileData);\n };\n Uploader.prototype.internalCreateFileList = function (fileData) {\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 (typeof uploadTemplate !== 'function' && 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.replace(/\\s+/g, ' ').trim().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.replace(/\\s+/g, ' ').trim().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 || this.value === '') {\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 var ctrlBtn = select('.' + CTRLBTN, this.container);\n if (ctrlBtn) {\n EventHandler.add(ctrlBtn, 'keydown', this.ctrlBtnKeyDown, this);\n }\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.ctrlBtnKeyDown = function (e) {\n if (e.keyCode === 13) {\n var applyBtn = select('.' + APPLY, this.container);\n if (applyBtn) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue);\n }\n this.splitBtn.element.focus();\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.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 var popup = closest(this.hueSlider.element, '.e-color-picker');\n var numericElemColl = popup.querySelectorAll('.e-numerictextbox');\n for (var i = 0; i < numericElemColl.length; i++) {\n getInstance(numericElemColl[i], NumericTextBox).destroy();\n }\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 var ctrlBtn = select('.' + CTRLBTN, this.container);\n if (ctrlBtn) {\n EventHandler.remove(ctrlBtn, 'keydown', this.ctrlBtnKeyDown);\n }\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.replace(/\\s+/g, ' ').trim().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 if (this.noColor && this.mode === 'Palette' && this.value === '') {\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n preview.style.backgroundColor = '';\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 this.multiline && !isNullOrUndefined(this.textarea) ? Input.validateInputType(this.textboxWrapper.container, this.textarea) : 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 Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\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 if (this.type === 'text') {\n this.element.setAttribute('role', 'textbox');\n }\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.multiline && !isNullOrUndefined(this.textarea) ? this.textarea.setAttribute(key, this.htmlAttributes[\"\" + key]) : 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 if (this.previousValue != this.value) {\n this.raiseChangeEvent(args, true);\n }\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) {\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 else if (this.element.height !== this.element.offsetHeight - 1 || this.element.width !== this.element.offsetWidth - 1) {\n this.element.height = this.element.offsetHeight;\n this.element.width = this.element.offsetWidth;\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 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 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 this.tooltipOpen = false;\n };\n Rating.prototype.render = function () {\n this.initialize();\n this.updateMinValue();\n this.updateTemplateFunction();\n this.triggerChange(null, this.value, false);\n this.renderItems();\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 if (this.readOnly) {\n this.wrapper.classList.add(READONLY);\n }\n if (!this.visible) {\n this.wrapper.classList.add(HIDDEN);\n }\n if (this.enableRtl) {\n this.wrapper.classList.add(RTL$2);\n }\n if (this.enableAnimation) {\n this.wrapper.classList.add(ANIMATION);\n }\n if (this.cssClass) {\n addClass([this.wrapper], this.cssClass.split(' '));\n }\n this.updateTooltip();\n this.wireKeyboardEvent();\n this.updateDisabled();\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 this.updateResetButton();\n };\n Rating.prototype.updateResetButton = function () {\n if (this.allowReset) {\n var isDisabled = (this.value <= this.min) || this.disabled;\n this.resetElement.classList[isDisabled ? 'add' : 'remove'](DISABLED$2);\n attributes(this.resetElement, { 'tabindex': (isDisabled ? '-1' : '0'), 'aria-hidden': isDisabled.toString() });\n }\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 });\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.triggerChange(e, currValue);\n this.updateCurrentValue(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, false);\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 this.updateItemValue(false);\n };\n Rating.prototype.renderItemContent = function (spanEle, val, index, isrerender) {\n if (isrerender) {\n this.removeItemContent(spanEle);\n }\n if (this.fullTemplate && val === 1) {\n spanEle.classList.add(FULLTEMPLATE);\n append(this.fullTemplateFunction({ index: index, ratingValue: val }, this, 'ratingFullTemplate', (this.element.id + 'fullTemplate'), this.isStringTemplate), spanEle);\n }\n else if (this.emptyTemplate) {\n spanEle.classList.add(EMPTYTEMPLATE);\n append(this.emptyTemplateFunction({ index: index, ratingValue: val }, this, 'ratingEmptyTemplate', (this.element.id + 'emptyTemplate'), this.isStringTemplate), spanEle);\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.innerHTML = '';\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.setProperties({ min: this.validateValue(this.min) }, true);\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.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 (isUpdate) {\n if (isUpdate === void 0) { isUpdate = true; }\n if (isUpdate && this.isReact) {\n this.clearTemplate(['ratingEmptyTemplate', 'ratingFullTemplate']);\n }\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 if (isUpdate) {\n this.updateItemContent(ratingValue, i);\n }\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 (isUpdate) {\n this.renderReactTemplates();\n }\n this.updateResetButton();\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 (!this.isReact && spanEle.classList.contains(FULLTEMPLATE)) {\n return;\n }\n this.removeItemContent(spanEle);\n spanEle.classList.add(FULLTEMPLATE);\n append(this.fullTemplateFunction({ ratingValue: ratingValue, index: index }, this, 'ratingFullTemplate', (this.element.id + 'fullTemplate' + index), this.isStringTemplate), spanEle);\n }\n else if (this.emptyTemplate) {\n if (!this.isReact && spanEle.classList.contains(EMPTYTEMPLATE)) {\n return;\n }\n this.removeItemContent(spanEle);\n spanEle.classList.add(EMPTYTEMPLATE);\n append(this.emptyTemplateFunction({ ratingValue: ratingValue, index: index }, this, 'ratingEmptyTemplate', (this.element.id + 'emptyTemplate' + index), this.isStringTemplate), spanEle);\n }\n else {\n this.removeItemContent(spanEle);\n addClass([spanEle], ICONCSS.split(' '));\n }\n };\n Rating.prototype.updateTooltipContent = function (isChange) {\n if (this.showTooltip) {\n if (this.isReact) {\n this.clearTemplate(['ratingTooltipTemplate']);\n }\n var content_1;\n if (this.tooltipTemplate) {\n content_1 = this.createElement('span', { className: 'e-rating-tooltip-content' });\n var templateFunction = this.getTemplateString(this.tooltipTemplate);\n append(templateFunction({ value: this.currentValue }, this, 'ratingTooltipTemplate', (this.element.id + 'tooltipTemplate'), this.isStringTemplate), content_1);\n this.tooltipObj.setProperties({ content: content_1 }, isChange);\n }\n else {\n content_1 = this.currentValue.toString();\n this.tooltipObj.setProperties({ content: initializeCSPTemplate(function () { return content_1; }) }, isChange);\n }\n this.renderReactTemplates();\n }\n };\n Rating.prototype.getTemplateString = function (template) {\n var stringContent = '';\n try {\n if (typeof template !== 'function') {\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 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.isReact) {\n this.clearTemplate(['ratingLabelTemplate']);\n }\n if (this.spanLabel.firstChild) {\n this.spanLabel.innerHTML = '';\n }\n var templateFunction = this.getTemplateString(this.labelTemplate);\n append(templateFunction({ value: this.currentValue }, this, 'ratingLabelTemplate', (this.element.id + 'labelTemplate'), this.isStringTemplate), this.spanLabel);\n this.renderReactTemplates();\n }\n else {\n this.spanLabel.textContent = this.currentValue + ' / ' + this.itemsCount;\n }\n }\n };\n Rating.prototype.updateReset = function () {\n if (this.allowReset) {\n this.resetElement = this.createElement('span', {\n className: RESET,\n attrs: { 'aria-label': 'resetbutton', 'role': 'button' }\n });\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 this.updateResetButton();\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);\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 * {% codeBlock src='rating/reset/index.md' %}{% endcodeBlock %}\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 this.updateResetButton();\n }\n };\n Rating.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['ratingEmptyTemplate', 'ratingFullTemplate']);\n }\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 this.clearTemplate();\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 this.keyboardModuleRating = null;\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.updateMinValue();\n this.triggerChange(null, this.value, false);\n this.updateItemValue();\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.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 var isPaneContentChanged = paneCounts.some(function (count) { return !isNullOrUndefined(newProp.paneSettings[count].content); });\n if (this.isReact && isPaneContentChanged) {\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.previousPane.style.flexBasis.indexOf('p') > 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 });\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 if (!isNullOrUndefined(updatePane) && updatePane.style.flexBasis !== '' && updatePane.classList.contains(STATIC_PANE)) {\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n }\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n if (!isNullOrUndefined(flexPane) && flexPane.style.flexBasis !== '' && !flexPane.classList.contains(STATIC_PANE)) {\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\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 else if (this.allPanes[i].style.flexBasis !== '') {\n this.paneSettings[i].size = this.allPanes[i].style.flexBasis;\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 ||\n 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 DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template !== 'function' && 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 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 this.oldRowCol[model.id] = { row: model.row, col: model.col };\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 var el = closest((e.currentTarget), '.e-panel');\n for (var i = 0; this.panels.length > i; i++) {\n if (this.panels[i].enabled && this.panels[i].id === el.id) {\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 }\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 if (this.handleClass.indexOf('west') >= 0) {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col - 1) * this.cellSpacing[0])) + 'px';\n }\n else {\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n }\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.checkCollision = [];\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 if (isCeil) {\n return Math.ceil(pixels / this.cellSize[0]);\n }\n else {\n return Math.floor(pixels / (this.cellSize[0] + this.cellSpacing[0]));\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 // eslint-disable-next-line\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 ||\n 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] &&\n 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 ||\n 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 // eslint-disable-next-line\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,\n sizeX: cloneModel[i].sizeX, sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX,\n minSizeY: cloneModel[i].minSizeY, maxSizeX: cloneModel[i].maxSizeX,\n 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 (typeof template !== 'function' && 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 container: 'e-list-container',\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 && !isNullOrUndefined(this.selectedLI)) {\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 this.touchModule = null;\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.container });\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 this.contentContainer = null;\n this.selectedItems = null;\n this.selectedLI = null;\n this.liElement = null;\n this.targetElement = null;\n this.currentLiElements = null;\n this.virtualCheckBox = null;\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 (!isNullOrUndefined(tempData) && 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.container });\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 this.topElement = null;\n this.bottomElement = null;\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/**\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 function Sortable(element, options) {\n var _this = _super.call(this, options, element) || this;\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 }\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 : 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 || e.target.className.indexOf('e-list-nrt') > -1 || e.target.className.indexOf('e-list-nr-template') > -1\n || e.target.closest('.e-list-nr-template')) && !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 this.wireEvents();\n };\n Sortable.prototype.wireEvents = function () {\n var wrapper = this.element;\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n };\n Sortable.prototype.unwireEvents = function () {\n var wrapper = this.element;\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n };\n Sortable.prototype.keyDownHandler = function (e) {\n if (e.keyCode === 27) {\n var dragStop = getComponent(this.element, 'draggable');\n if (dragStop) {\n dragStop.intDestroy(null);\n }\n var dragWrapper = document.getElementsByClassName('e-sortableclone')[0];\n if (dragWrapper) {\n dragWrapper.remove();\n }\n var dragPlaceholder = document.getElementsByClassName('e-sortable-placeholder')[0];\n if (dragPlaceholder) {\n dragPlaceholder.remove();\n }\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 var cltY = e.changedTouches ? e.changedTouches[0].clientY : e.clientY;\n idx = cltY <= 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 this.unwireEvents();\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 ele.classList.remove(CLS_RTL);\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, CLS_RTL$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, 'mousewheel DOMMouseScroll', 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, 'mousewheel DOMMouseScroll', 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.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\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 var _this = this;\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 var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + \"-\" + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[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 if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\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 if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\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 if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent(\"click\", true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n MenuBase.prototype.copyObject = function (source, destination) {\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\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 if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', tabindex: '-1' });\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, 'mousewheel DOMMouseScroll', 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, 'mousewheel DOMMouseScroll', 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 if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\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 && !isNullOrUndefined(idx)) {\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 var validUl = isUniqueId ? ul.children[index].id : ul.children[index].textContent;\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else {\n ul.children[index].classList.remove(HIDE);\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 _this.orientationChangeContext = _this.orientationChange.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 window.addEventListener('orientationchange', this.orientationChangeContext);\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 window.removeEventListener('orientationchange', this.orientationChangeContext);\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 = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\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.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE$2)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE$2)) {\n return ele;\n }\n index--;\n }\n return element;\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);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && 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 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 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, eleStyles) {\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 eleSep.style.display = 'unset';\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 setStyleAttribute(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\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 var inlineStyles = { minWidth: el.style.minWidth, height: el.style.height, minHeight: el.style.minHeight };\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, inlineStyles);\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 if (!isNullOrUndefined(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\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 if (!isNullOrUndefined(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE$2);\n if (!isNullOrUndefined(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\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 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 dom.setAttribute('aria-disabled', 'false');\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.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\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.refreshOverflow();\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 (typeof template !== 'function' && 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 var header = select('.' + CLS_HEADERCTN, item);\n var content = select('.' + CLS_CTENT, item);\n if (this.isReact || this.isAngular) {\n this.clearAccordionTemplate(header, 'header', CLS_HEADERCTN);\n this.clearAccordionTemplate(content, 'content', CLS_CTENT);\n }\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.clearAccordionTemplate = function (templateEle, templateName, className) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + templateName]) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + templateName].length; index++) {\n var registeredItem = registeredTemplates[\"\" + templateName][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem.containerInfo, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], [registeredTemplates[\"\" + templateName][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\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)]);\n for (var k = 0; k < property.length; k++) {\n var item = selectAll('.' + CLS_ITEM$1, this.element)[parseInt(index.toString(), 10)];\n var oldVal = Object(oldProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]];\n var newVal = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]];\n var temp = property[parseInt(k.toString(), 10)];\n var content = select('.' + CLS_CTENT, item);\n if (temp === 'header' || temp === 'iconCss' || temp === 'expanded' || ((temp === 'content') && (oldVal === ''))) {\n this.updateItem(item, index);\n }\n if (property[parseInt(k.toString(), 10)] === '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[parseInt(k.toString(), 10)] === 'visible' && !isNullOrUndefined(item)) {\n if (Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property[parseInt(k.toString(), 10)]] === false) {\n item.classList.add(CLS_ITEMHIDE);\n }\n else {\n item.classList.remove(CLS_ITEMHIDE);\n }\n }\n if (property[parseInt(k.toString(), 10)] === 'disabled' && !isNullOrUndefined(item)) {\n this.enableItem(index, !newVal);\n }\n if (property[parseInt(k.toString(), 10)] === 'content' && !isNullOrUndefined(item) && item.children.length === 2) {\n if (typeof newVal === 'function') {\n if (this.isAngular || this.isReact) {\n this.clearAccordionTemplate(content, property[parseInt(k.toString(), 10)], CLS_CTENT);\n }\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 }\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 (typeof this.template !== 'function' && 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.isSwiped = 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.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));\n }\n if (count > 0) {\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, 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, 'aria-disabled': 'false' }\n });\n wrap.querySelector('.' + CLS_TEXT).appendChild(item);\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', 'aria-disabled': '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, 'data-id': item.id\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 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.isSwiped,\n isInteracted: isInteracted,\n preventFocus: false\n };\n this.trigger('selected', eventArg, function (selectEventArgs) {\n if (!selectEventArgs.preventFocus) {\n trg.firstElementChild.focus();\n }\n });\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)) {\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.isSwiped = 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.isSwiped = 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 scrBar.removeAttribute('tabindex');\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 (properties[j] === 'headerTemplate') {\n this.clearTabTemplate(hdrItem, properties[j], CLS_TB_ITEM);\n }\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.isAngular || this.isReact) {\n this.clearTabTemplate(cntItem, properties[j], CLS_ITEM$2);\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.clearTabTemplate = function (templateEle, templateName, className) {\n if (this.registeredTemplate && this.registeredTemplate[templateName]) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[templateName].length; index++) {\n var registeredItem = registeredTemplates[templateName][index].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], [registeredTemplates[templateName][index]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[index];\n var closestItem = closest(portalItem.containerInfo, '.' + className);\n if (!isNullOrUndefined(closestItem) && closestItem === templateEle) {\n this.clearTemplate([templateName], index);\n break;\n }\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 var dragObj = e.element.ej2_instances[0];\n if (!isNullOrUndefined(dragObj)) {\n dragObj.intDestroy(e.event);\n }\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.firstElementChild.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 var header = select('#' + CLS_ITEM$2 + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_TB_ITEMS, _this.element));\n if (!isNullOrUndefined(header)) {\n _this.clearTabTemplate(header, 'headerTemplate', CLS_TB_ITEM);\n }\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 _this.clearTabTemplate(cntTrg, 'content', CLS_ITEM$2);\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.isSwiped,\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', 'aria-disabled': 'false' };\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', 'aria-disabled': 'false' }\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 (typeof template !== 'function' && 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 && !Browser.isIos ? 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 this.isRightClick = false;\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], FOCUS);\n preNode.setAttribute(\"tabindex\", \"-1\");\n if (!nextNode.classList.contains('e-disable') && !nextNode.classList.contains(PREVENTSELECT)) {\n addClass([nextNode], 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], 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], 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 this.enableHtmlSanitizer ? txtEle.innerText = newText : txtEle.innerHTML = newText;\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n liEle.focus();\n EventHandler.add(liEle, 'blur', this.focusOut, this);\n addClass([liEle], FOCUS);\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 enableTapHold: true,\n tapHoldThreshold: 100,\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 var args = this.expandArgs;\n if (isNullOrUndefined(args) || args.name != 'nodeExpanding') {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n }\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 var args = this.expandArgs;\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) && (isNullOrUndefined(args) || args.name != 'nodeExpanding')) {\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) && (isNullOrUndefined(args) || args.name != 'nodeExpanding')) {\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 = '.';\n/**\n * Defines the Breadcrumb overflow modes.\n */\nvar BreadcrumbOverflowMode;\n(function (BreadcrumbOverflowMode) {\n /**\n * Hidden mode shows the maximum number of items possible in the container space and hides the remaining items.\n * Clicking on a previous item will make the hidden item visible.\n */\n BreadcrumbOverflowMode[\"Hidden\"] = \"Hidden\";\n /**\n * Collapsed mode shows the first and last Breadcrumb items and hides the remaining items with a collapsed icon.\n * When the collapsed icon is clicked, all items become visible and navigable.\n */\n BreadcrumbOverflowMode[\"Collapsed\"] = \"Collapsed\";\n /**\n * Menu mode shows the number of Breadcrumb items that can be accommodated within the container space and creates a submenu with the remaining items.\n */\n BreadcrumbOverflowMode[\"Menu\"] = \"Menu\";\n /**\n * Wrap mode wraps the items to multiple lines when the Breadcrumb’s width exceeds the container space.\n */\n BreadcrumbOverflowMode[\"Wrap\"] = \"Wrap\";\n /**\n * Scroll mode shows an HTML scroll bar when the Breadcrumb’s width exceeds the container space.\n */\n BreadcrumbOverflowMode[\"Scroll\"] = \"Scroll\";\n /**\n * None mode shows all the items in a single line.\n */\n BreadcrumbOverflowMode[\"None\"] = \"None\";\n})(BreadcrumbOverflowMode || (BreadcrumbOverflowMode = {}));\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_SWIPE = 'e-swipe';\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/**\n * Specifies the action (touch & mouse) which enables the slide swiping action in carousel.\n * * Touch - Enables or disables the swiping action in touch interaction.\n * * Mouse - Enables or disables the swiping action in mouse interaction.\n * @aspNumberEnum\n */\nvar CarouselSwipeMode;\n(function (CarouselSwipeMode) {\n /** Enables or disables the swiping action in touch interaction. */\n CarouselSwipeMode[CarouselSwipeMode[\"Touch\"] = 1] = \"Touch\";\n /** Enables or disables the swiping action in mouse interaction. */\n CarouselSwipeMode[CarouselSwipeMode[\"Mouse\"] = 2] = \"Mouse\";\n})(CarouselSwipeMode || (CarouselSwipeMode = {}));\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 var _this = _super.call(this, options, element) || this;\n _this.isSwipe = false;\n return _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 var rtlElement;\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 || !(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n this.reRenderSlides();\n }\n break;\n case 'enableRtl':\n rtlElement = [].slice.call(this.element.querySelectorAll(\".\" + CLS_PREV_BUTTON + \",\\n .\" + CLS_NEXT_BUTTON + \", .\" + CLS_PLAY_BUTTON));\n rtlElement.push(this.element);\n if (this.enableRtl) {\n addClass(rtlElement, CLS_RTL$5);\n }\n else {\n removeClass(rtlElement, CLS_RTL$5);\n }\n if (this.partialVisible || !(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n var cloneCount = this.loop ? this.getNumOfItems() : 0;\n var slideWidth = this.itemsContainer.firstElementChild.clientWidth;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex + cloneCount);\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 case 'indicatorsType':\n target = this.element.querySelector(\".\" + CLS_INDICATORS);\n if (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 case 'swipeMode':\n EventHandler.remove(this.element, 'mousedown touchstart', this.swipeStart);\n EventHandler.remove(this.element, 'mousemove touchmove', this.swiping);\n EventHandler.remove(this.element, 'mouseup touchend', this.swipStop);\n this.swipeModehandlers();\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 if (!(this.swipeMode === (~CarouselSwipeMode.Touch & ~CarouselSwipeMode.Mouse))) {\n carouselClasses.push(CLS_SWIPE);\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 this.itemsContainer = this.createElement('div', { className: CLS_ITEMS$2, attrs: { 'aria-live': this.autoPlay ? 'off' : 'polite' } });\n slideContainer.appendChild(this.itemsContainer);\n var numOfItems = this.getNumOfItems();\n if (numOfItems > 0 && this.loop) {\n if (this.items.length > 0) {\n this.items.slice(-numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, _this.itemsContainer, true);\n });\n }\n else if (this.dataSource.length > 0) {\n this.dataSource.slice(-numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, _this.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, _this.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, _this.itemsContainer);\n });\n }\n if (numOfItems > 0 && this.loop) {\n if (this.items.length > 0) {\n this.items.slice(0, numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, _this.itemsContainer, true);\n });\n }\n else if (this.dataSource.length > 0) {\n this.dataSource.slice(0, numOfItems).forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, _this.itemsContainer, true);\n });\n }\n }\n this.renderTemplates();\n this.itemsContainer.style.setProperty('--carousel-items-count', \"\" + this.itemsContainer.children.length);\n var slideWidth = isNullOrUndefined(this.itemsContainer.firstElementChild) ? 0 :\n this.itemsContainer.firstElementChild.clientWidth;\n this.itemsContainer.style.transitionProperty = 'none';\n var cloneCount = this.loop ? numOfItems : 0;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.selectedIndex + cloneCount);\n this.autoSlide();\n this.renderTouchActions();\n this.renderKeyboardActions();\n };\n Carousel.prototype.getTranslateX = function (slideWidth, count) {\n if (count === void 0) { count = 1; }\n return this.enableRtl ? \"translateX(\" + (slideWidth) * (count) + \"px)\" :\n \"translateX(\" + -(slideWidth) * (count) + \"px)\";\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'), 'type': 'button' }\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'), 'type': 'button' }\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 this.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 indicatorClass = 'e-default';\n if (!this.indicatorsTemplate) {\n indicatorClass = \"e-\" + this.indicatorsType.toLowerCase();\n }\n var indicatorWrap = this.createElement('div', { className: CLS_INDICATORS + \" \" + indicatorClass });\n var indicatorBars = this.createElement('div', { className: CLS_INDICATOR_BARS });\n indicatorWrap.appendChild(indicatorBars);\n var progress;\n if (this.slideItems) {\n switch (this.indicatorsType) {\n case 'Fraction':\n if (this.indicatorsTemplate) {\n this.renderIndicatorTemplate(indicatorBars, this.selectedIndex + 1);\n }\n else {\n indicatorBars.innerText = this.selectedIndex + 1 + \" / \" + this.slideItems.length;\n }\n break;\n case 'Progress':\n if (this.indicatorsTemplate) {\n this.renderIndicatorTemplate(indicatorBars, this.selectedIndex + 1);\n }\n else {\n progress = this.createElement('div', { className: CLS_INDICATOR_BAR });\n progress.style.setProperty('--carousel-items-current', \"\" + (this.selectedIndex + 1));\n progress.style.setProperty('--carousel-items-count', \"\" + this.slideItems.length);\n indicatorBars.appendChild(progress);\n }\n break;\n case 'Default':\n case 'Dynamic':\n this.slideItems.forEach(function (item, index) {\n var indicatorBar = _this.createElement('div', {\n className: CLS_INDICATOR_BAR + ' ' + (_this.selectedIndex === index ? CLS_ACTIVE$2 : _this.selectedIndex - 1 === index ? CLS_PREV_SLIDE : _this.selectedIndex + 1 === index ? CLS_NEXT_SLIDE : ''),\n attrs: { 'data-index': index.toString(), 'aria-current': _this.selectedIndex === index ? 'true' : 'false' }\n });\n indicatorBar.style.setProperty('--carousel-items-current', \"\" + _this.selectedIndex);\n if (_this.indicatorsTemplate) {\n _this.renderIndicatorTemplate(indicatorBar, index);\n }\n else if (_this.indicatorsType === 'Default') {\n var indicator = _this.createElement('button', { className: CLS_INDICATOR$1, attrs: { 'type': 'button', 'aria-label': _this.localeObj.getConstant('slide') + ' ' + (index + 1) + ' ' + _this.localeObj.getConstant('of') + ' ' + _this.slideItems.length } });\n indicatorBar.appendChild(indicator);\n indicator.appendChild(_this.createElement('div', {}));\n var buttonObj = new Button({ cssClass: 'e-flat e-small' });\n buttonObj.appendTo(indicator);\n }\n indicatorBars.appendChild(indicatorBar);\n if (_this.indicatorsType === 'Default') {\n EventHandler.add(indicatorBar, 'click', _this.indicatorClickHandler, _this);\n }\n });\n break;\n }\n }\n this.element.appendChild(indicatorWrap);\n };\n Carousel.prototype.renderIndicatorTemplate = function (indicatorBar, index) {\n if (index === void 0) { index = 0; }\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 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 _this.refreshIndicators(activeIndex, currentIndex);\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 var slideWidth = allSlides[parseInt(currentIndex.toString(), 10)].clientWidth;\n var numOfItems = _this.getNumOfItems();\n if (!_this.isSwipe) {\n _this.itemsContainer.style.transitionDuration = '0.6s';\n }\n _this.isSwipe = false;\n if ((_this.animationEffect === 'Fade')) {\n _this.itemsContainer.classList.add('e-fade-in-out');\n }\n else {\n _this.itemsContainer.style.transitionProperty = 'transform';\n }\n if (_this.loop) {\n if (_this.slideChangedEventArgs.currentIndex === 0 && _this.slideChangedEventArgs.slideDirection === 'Next') {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, allSlides.length + numOfItems);\n }\n else if (_this.slideChangedEventArgs.currentIndex === _this.slideItems.length - 1 && _this.slideChangedEventArgs.slideDirection === 'Previous') {\n _this.itemsContainer.style.transform = _this.partialVisible ? _this.getTranslateX(slideWidth) : 'translateX(0px)';\n }\n else {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, currentIndex + numOfItems);\n }\n }\n else {\n _this.itemsContainer.style.transform = _this.getTranslateX(slideWidth, currentIndex);\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 removeClass(this.element.querySelectorAll(\".\" + CLS_ITEMS$2), 'e-fade-in-out');\n var numOfItems = this.getNumOfItems();\n if (this.slideChangedEventArgs) {\n this.itemsContainer.style.transitionProperty = 'none';\n if (this.loop && (this.slideChangedEventArgs.currentIndex === 0 && this.slideChangedEventArgs.slideDirection === 'Next' ||\n this.slideChangedEventArgs.currentIndex === this.slideItems.length - 1 && this.slideChangedEventArgs.slideDirection === 'Previous')) {\n var slideWidth = this.slideChangedEventArgs.currentSlide.clientWidth;\n this.itemsContainer.style.transform = this.getTranslateX(slideWidth, this.slideChangedEventArgs.currentIndex + numOfItems);\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.refreshIndicators = function (activeIndex, currentIndex) {\n var _this = this;\n var slideIndicator = this.element.querySelector(\".\" + CLS_INDICATOR_BARS);\n if (isNullOrUndefined(slideIndicator)) {\n return;\n }\n var indicators = [].slice.call(slideIndicator.childNodes);\n switch (this.indicatorsType) {\n case 'Default':\n case 'Dynamic':\n attributes(indicators[parseInt(activeIndex.toString(), 10)], { 'aria-current': 'false' });\n attributes(indicators[parseInt(currentIndex.toString(), 10)], { 'aria-current': 'true' });\n removeClass(indicators, [CLS_ACTIVE$2, CLS_PREV_SLIDE, CLS_NEXT_SLIDE]);\n addClass([indicators[parseInt(currentIndex.toString(), 10)]], CLS_ACTIVE$2);\n if (indicators[currentIndex - 1]) {\n addClass([indicators[currentIndex - 1]], CLS_PREV_SLIDE);\n }\n if (indicators[currentIndex + 1]) {\n addClass([indicators[currentIndex + 1]], CLS_NEXT_SLIDE);\n }\n indicators.forEach(function (item) { return item.style.setProperty('--carousel-items-current', \"\" + _this.selectedIndex); });\n break;\n case 'Fraction':\n if (this.indicatorsTemplate) {\n if (slideIndicator.children.length > 0) {\n slideIndicator.removeChild(slideIndicator.firstElementChild);\n }\n this.renderIndicatorTemplate(slideIndicator, currentIndex + 1);\n }\n else {\n slideIndicator.innerText = this.selectedIndex + 1 + \" / \" + this.slideItems.length;\n }\n break;\n case 'Progress':\n if (this.indicatorsTemplate) {\n if (slideIndicator.children.length > 0) {\n slideIndicator.removeChild(slideIndicator.firstElementChild);\n }\n this.renderIndicatorTemplate(slideIndicator, currentIndex + 1);\n }\n else {\n slideIndicator.firstElementChild.style.setProperty('--carousel-items-current', \"\" + (this.selectedIndex + 1));\n }\n break;\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 (typeof template !== 'function' && 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 this.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 this.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.getNumOfItems = function () {\n return this.partialVisible ? 2 : 1;\n };\n Carousel.prototype.getTranslateValue = function (element) {\n var style = getComputedStyle(element);\n return window.WebKitCSSMatrix ?\n new WebKitCSSMatrix(style.webkitTransform).m41 : 0;\n };\n Carousel.prototype.swipeStart = function (e) {\n if (!this.timeStampStart) {\n this.timeStampStart = Date.now();\n }\n this.isSwipe = false;\n this.itemsContainer.classList.add('e-swipe-start');\n this.prevPageX = e.touches ? e.touches[0].pageX : e.pageX;\n this.initialTranslate = this.getTranslateValue(this.itemsContainer);\n };\n Carousel.prototype.swiping = function (e) {\n if (!this.itemsContainer.classList.contains('e-swipe-start')) {\n return;\n }\n e.preventDefault();\n var pageX = e.touches ? e.touches[0].pageX : e.pageX;\n var positionDiff = this.prevPageX - (pageX);\n if (!this.loop && ((this.enableRtl && ((this.selectedIndex === 0 && positionDiff > 0) ||\n (this.selectedIndex === this.itemsContainer.childElementCount - 1 && positionDiff < 0))) ||\n (!this.enableRtl && ((this.selectedIndex === 0 && positionDiff < 0) ||\n (this.selectedIndex === this.itemsContainer.childElementCount - 1 && positionDiff > 0))))) {\n return;\n }\n this.itemsContainer.style.transform = \"translateX(\" + (this.initialTranslate + (this.enableRtl ? positionDiff : -positionDiff)) + \"px)\";\n };\n Carousel.prototype.swipStop = function () {\n this.isSwipe = true;\n var time = Date.now() - this.timeStampStart;\n var distanceX = this.getTranslateValue(this.itemsContainer) - this.initialTranslate;\n distanceX = distanceX < 0 ? distanceX * -1 : distanceX;\n if (this.isSwipe) {\n var offsetDist = distanceX * (Browser.isDevice ? 6 : 1.66);\n this.itemsContainer.style.transitionDuration = (((Browser.isDevice ? distanceX : offsetDist) / time) / 10) + 's';\n }\n var slideWidth = this.itemsContainer.firstElementChild.clientWidth;\n var threshold = slideWidth / 2;\n this.itemsContainer.classList.remove('e-swipe-start');\n var value = this.getTranslateValue(this.itemsContainer);\n if (value - this.initialTranslate < -threshold) {\n this.swipeNavigation(!this.enableRtl);\n }\n else if (value - this.initialTranslate > threshold) {\n this.swipeNavigation(this.enableRtl);\n }\n else {\n this.itemsContainer.style.transform = \"translateX(\" + this.initialTranslate + \"px)\";\n if (this.animationEffect === 'Fade') {\n this.itemsContainer.classList.add('e-fade-in-out');\n }\n }\n };\n Carousel.prototype.swipeNavigation = function (isRtl) {\n if (isRtl) {\n this.next();\n }\n else {\n this.prev();\n }\n };\n Carousel.prototype.swipeModehandlers = function () {\n if ((this.swipeMode & CarouselSwipeMode.Touch) === CarouselSwipeMode.Touch) {\n EventHandler.add(this.itemsContainer, 'touchstart', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'touchmove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'touchend', this.swipStop, this);\n }\n if ((this.swipeMode & CarouselSwipeMode.Mouse) === CarouselSwipeMode.Mouse) {\n EventHandler.add(this.itemsContainer, 'mousedown', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'mousemove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'mouseup', this.swipStop, this);\n }\n if ((this.swipeMode === 0) && (this.swipeMode & CarouselSwipeMode.Mouse & CarouselSwipeMode.Touch) ===\n (CarouselSwipeMode.Mouse & CarouselSwipeMode.Touch)) {\n EventHandler.add(this.itemsContainer, 'mousedown touchstart', this.swipeStart, this);\n EventHandler.add(this.itemsContainer, 'mousemove touchmove', this.swiping, this);\n EventHandler.add(this.itemsContainer, 'mouseup touchend', this.swipStop, this);\n }\n };\n Carousel.prototype.wireEvents = function () {\n if (!(this.animationEffect === 'Custom')) {\n this.swipeModehandlers();\n }\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 EventHandler.clearEvents(this.itemsContainer);\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 this.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 this.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, CLS_SWIPE]);\n ['tabindex', 'role', 'style'].forEach(function (attr) { _this.element.removeAttribute(attr); });\n this.itemsContainer = null;\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('Default')\n ], Carousel.prototype, \"indicatorsType\", 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(CarouselSwipeMode.Touch)\n ], Carousel.prototype, \"swipeMode\", 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, BreadcrumbOverflowMode, BreadcrumbItem, Breadcrumb, CarouselSwipeMode, CarouselItem, Carousel, AppBar };\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.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || this.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) {\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.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || this.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) {\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 this.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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\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 var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !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.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE$1)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE$1)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE$1)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\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 var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\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.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, 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', 'role'];\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n evt.stopPropagation();\n evt.preventDefault();\n }\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 var attributeArray = [];\n for (var i = 0; i < data.length; i++) {\n var fieldsData = this.getFieldValues(data[i]);\n var attributesValue = fieldsData.htmlAttributes;\n attributeArray.push(attributesValue);\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 if (!isNullOrUndefined(attributeArray[i])) {\n if (attributeArray.length > i && Object.keys(attributeArray[i]).length) {\n var htmlAttr = [];\n htmlAttr = (Object.keys(attributeArray[i]));\n for (var j = 0; j < htmlAttr.length; j++) {\n wrapper.setAttribute(htmlAttr[j], attributeArray[i][htmlAttr[j]]);\n }\n }\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 htmlAttributes: typeof data === 'object' ? (data.htmlAttributes ? data.htmlAttributes : this.htmlAttributes) : this.htmlAttributes\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 * @param {number | HTMLElement } fields - We can pass index number or element of chip.\n * {% codeBlock src='chips/find/index.md' %}{% endcodeBlock %}\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 * @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 * {% codeBlock src='chips/add/index.md' %}{% endcodeBlock %}\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 * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/select/index.md' %}{% endcodeBlock %}\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 * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/remove/index.md' %}{% endcodeBlock %}\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 * {% 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 * {% 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, \"htmlAttributes\", 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), FIXEDFAB);\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 isPrimary: this.isPrimary\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 (typeof template !== 'function' && 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.removeRippleEffect = null;\n this.keyboardModule.destroy();\n this.popupKeyboardModule.destroy();\n this.keyboardModule = null;\n this.popupKeyboardModule = null;\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', 'isPrimary'];\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 Property(true)\n ], SpeedDial.prototype, \"isPrimary\", 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, 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 (typeof value !== 'function' && 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 (typeof value !== 'function' && 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 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 var 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 new property.\n * @param {MessageModel} oldProp - Specifies the old 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 * Specifies the value of viewer preferences.\n * @private\n */\n this.viewerPreferences = 'ViewerPreferences';\n /**\n * Specifies the value of center window.\n * @private\n */\n this.centerWindow = 'CenterWindow';\n /**\n * Specifies the value of display title.\n * @private\n */\n this.displayTitle = 'DisplayTitle';\n /**\n * Specifies the value of fit window.\n * @private\n */\n this.fitWindow = 'FitWindow';\n /**\n * Specifies the value of hide menu bar.\n * @private\n */\n this.hideMenuBar = 'HideMenubar';\n /**\n * Specifies the value of hide tool bar.\n * @private\n */\n this.hideToolBar = 'HideToolbar';\n /**\n * Specifies the value of hide window UI.\n * @private\n */\n this.hideWindowUI = 'HideWindowUI';\n /**\n * Specifies the value of page mode.\n * @private\n */\n this.pageMode = 'PageMode';\n /**\n * Specifies the value of page layout.\n * @private\n */\n this.pageLayout = 'PageLayout';\n /**\n * Specifies the value of duplex.\n * @private\n */\n this.duplex = 'Duplex';\n /**\n * Specifies the value of print scaling.\n * @private\n */\n this.printScaling = 'PrintScaling';\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 Object.defineProperty(PdfDocumentBase.prototype, \"viewerPreferences\", {\n /**\n * Gets viewer preferences for presenting the PDF document in a viewer.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets viewer preferences\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfCatalog.viewerPreferences;\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\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 * Defines the way the document is to be presented on the screen or in print.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets viewer preferences\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfViewerPreferences = /** @__PURE__ @class */ (function () {\n /**\n * Initialize a new instance of `PdfViewerPreferences` class.\n *\n * @private\n * ```\n */\n function PdfViewerPreferences(catalog) {\n this._dictionaryProperties = new DictionaryProperties();\n this._centerWindow = false;\n this._fitWindow = false;\n this._displayTitle = false;\n this._splitWindow = false;\n this._hideMenuBar = false;\n this._hideToolBar = false;\n this._hideWindowUI = false;\n this._pageMode = PdfPageMode.UseNone;\n this._pageLayout = PdfPageLayout.SinglePage;\n this._dictionary = new PdfDictionary();\n this._duplex = DuplexMode.None;\n this._catalog = catalog;\n }\n Object.defineProperty(PdfViewerPreferences.prototype, \"centerWindow\", {\n /**\n * A flag specifying whether to position the document’s window in the center of the screen.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the center window\n * let centerWindow : boolean = viewerPreferences.centerWindow;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._centerWindow;\n },\n /**\n * A flag specifying whether to position the document’s window in the center of the screen.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the center window\n * viewerPreferences.centerWindow = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._centerWindow = value;\n this._dictionary.items.setValue(this._dictionaryProperties.centerWindow, new PdfBoolean(this._centerWindow));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"displayTitle\", {\n /**\n * A flag specifying whether the window’s title bar should display the document title taken\n * from the Title entry of the document information dictionary. If false, the title bar\n * should instead display the name of the PDF file containing the document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the display title\n * let displayTitle : boolean = viewerPreferences.displayTitle;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._displayTitle;\n },\n /**\n * A flag specifying whether the window’s title bar should display the document title taken\n * from the Title entry of the document information dictionary. If false, the title bar\n * should instead display the name of the PDF file containing the document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the display title\n * viewerPreferences.displayTitle = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._displayTitle = value;\n this._dictionary.items.setValue(this._dictionaryProperties.displayTitle, new PdfBoolean(this._displayTitle));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"fitWindow\", {\n /**\n * A flag specifying whether to resize the document’s window to fit the size of the first\n * displayed page.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the fit window\n * let fitWindow : boolean = viewerPreferences.fitWindow;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._fitWindow;\n },\n /**\n * A flag specifying whether to resize the document’s window to fit the size of the first\n * displayed page.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the fit window\n * viewerPreferences.fitWindow = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._fitWindow = value;\n this._dictionary.items.setValue(this._dictionaryProperties.fitWindow, new PdfBoolean(this._fitWindow));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideMenuBar\", {\n /**\n * A flag specifying whether to hide the viewer application’s menu bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide menu bar\n * let hideMenuBar: boolean = viewerPreferences.hideMenuBar;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideMenuBar;\n },\n /**\n * A flag specifying whether to hide the viewer application’s menu bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide menu bar\n * viewerPreferences.hideMenuBar = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideMenuBar = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideMenuBar, new PdfBoolean(this._hideMenuBar));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideToolBar\", {\n /**\n * A flag specifying whether to hide the viewer application’s tool bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide tool bar\n * let hideToolBar: boolean = viewerPreferences.hideToolBar;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideToolBar;\n },\n /**\n * A flag specifying whether to hide the viewer application’s tool bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide tool bar\n * viewerPreferences.hideToolbar = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideToolBar = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideToolBar, new PdfBoolean(this._hideToolBar));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideWindowUI\", {\n /**\n * A flag specifying whether to hide user interface elements in the document’s window\n * (such as scroll bars and navigation controls), leaving only the document’s contents displayed.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide window UI\n * let hideWindowUI: boolean = viewerPreferences.hideWindowUI;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideWindowUI;\n },\n /**\n * A flag specifying whether to hide user interface elements in the document’s window\n * (such as scroll bars and navigation controls), leaving only the document’s contents displayed.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide window UI\n * viewerPreferences.hideWindowUI = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideWindowUI = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideWindowUI, new PdfBoolean(this._hideWindowUI));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageMode\", {\n /**\n * A name object specifying how the document should be displayed when opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page mode\n * let pageMode: PdfPageMode = viewerPreferences.pageMode;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageMode;\n },\n /**\n * A name object specifying how the document should be displayed when opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page mode\n * viewerPreferences.pageMode = PdfPageMode.UseOutlines;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageMode = value;\n this._catalog.items.setValue(this._dictionaryProperties.pageMode, new PdfName(this._mapPageMode(this._pageMode)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"duplex\", {\n /**\n * Gets print duplex mode handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the duplex\n * let duplex : DuplexMode = viewerPreferences.duplex;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._duplex;\n },\n /**\n * Sets print duplex mode handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the duplex\n * viewerPreferences.duplex = DuplexMode.DuplexFlipLongEdge;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._duplex = value;\n this._catalog.items.setValue(this._dictionaryProperties.duplex, new PdfName(this._mapDuplexMode(this._duplex)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageLayout\", {\n /**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page layout\n * let pageLayout : PdfPageLayout = viewerPreferences.pageLayout;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageLayout;\n },\n /**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page layout\n * viewerPreferences.pageLayout = PdfPageLayout.TwoColumnLeft;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageLayout = value;\n this._catalog.items.setValue(this._dictionaryProperties.pageLayout, new PdfName(this._mapPageLayout(this._pageLayout)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageScaling\", {\n /**\n * Gets the page scaling option to be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page scaling\n * let pageScaling : PageScalingMode = viewerPreferences.pageScaling;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageScaling;\n },\n /**\n * Sets the page scaling option to be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page scaling\n * viewerPreferences.pageScaling = PageScalingMode.None;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageScaling = value;\n if (this._pageScaling === PageScalingMode.AppDefault && this._dictionary.items.containsKey(this._dictionaryProperties.printScaling)) {\n this._dictionary.items.remove(this._dictionaryProperties.printScaling);\n }\n else if (this._pageScaling === PageScalingMode.None) {\n this._dictionary.items.setValue(this._dictionaryProperties.printScaling, new PdfName('None'));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"element\", {\n /**\n * Primivie element\n *\n * @private\n */\n get: function () {\n return this._dictionary;\n },\n enumerable: true,\n configurable: true\n });\n PdfViewerPreferences.prototype._mapDuplexMode = function (mode) {\n switch (mode) {\n case DuplexMode.Simplex:\n return 'Simplex';\n case DuplexMode.DuplexFlipShortEdge:\n return 'DuplexFlipShortEdge';\n case DuplexMode.DuplexFlipLongEdge:\n return 'DuplexFlipLongEdge';\n case DuplexMode.None:\n return 'None';\n }\n };\n PdfViewerPreferences.prototype._mapPageMode = function (mode) {\n switch (mode) {\n case PdfPageMode.UseNone:\n return 'UseNone';\n case PdfPageMode.UseOutlines:\n return 'UseOutlines';\n case PdfPageMode.UseThumbs:\n return 'UseThumbs';\n case PdfPageMode.FullScreen:\n return 'FullScreen';\n case PdfPageMode.UseOC:\n return 'UseOC';\n case PdfPageMode.UseAttachments:\n return 'UseAttachments';\n }\n };\n PdfViewerPreferences.prototype._mapPageLayout = function (layout) {\n switch (layout) {\n case PdfPageLayout.SinglePage:\n return 'SinglePage';\n case PdfPageLayout.OneColumn:\n return 'OneColumn';\n case PdfPageLayout.TwoColumnLeft:\n return 'TwoColumnLeft';\n case PdfPageLayout.TwoColumnRight:\n return 'TwoColumnRight';\n case PdfPageLayout.TwoPageLeft:\n return 'TwoPageLeft';\n case PdfPageLayout.TwoPageRight:\n return 'TwoPageRight';\n }\n };\n return PdfViewerPreferences;\n}());\n/**\n * Represents mode of document displaying.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page mode\n * viewerPreferences.pageMode = PdfPageMode.UseOutlines;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPageMode;\n(function (PdfPageMode) {\n /**\n * Default value. Neither document outline nor thumbnail images visible.\n */\n PdfPageMode[PdfPageMode[\"UseNone\"] = 0] = \"UseNone\";\n /**\n * Document outline visible.\n */\n PdfPageMode[PdfPageMode[\"UseOutlines\"] = 1] = \"UseOutlines\";\n /**\n * Thumbnail images visible.\n */\n PdfPageMode[PdfPageMode[\"UseThumbs\"] = 2] = \"UseThumbs\";\n /**\n * Full-screen mode, with no menu bar, window controls, or any other window visible.\n */\n PdfPageMode[PdfPageMode[\"FullScreen\"] = 3] = \"FullScreen\";\n /**\n * Optional content group panel visible.\n */\n PdfPageMode[PdfPageMode[\"UseOC\"] = 4] = \"UseOC\";\n /**\n * Attachments are visible.\n */\n PdfPageMode[PdfPageMode[\"UseAttachments\"] = 5] = \"UseAttachments\";\n})(PdfPageMode || (PdfPageMode = {}));\n/**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page layout\n * viewerPreferences.pageLayout = PdfPageLayout.TwoColumnLeft;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPageLayout;\n(function (PdfPageLayout) {\n /**\n * Default Value. Display one page at a time.\n */\n PdfPageLayout[PdfPageLayout[\"SinglePage\"] = 0] = \"SinglePage\";\n /**\n * Display the pages in one column.\n */\n PdfPageLayout[PdfPageLayout[\"OneColumn\"] = 1] = \"OneColumn\";\n /**\n * Display the pages in two columns, with odd numbered\n * pages on the left.\n */\n PdfPageLayout[PdfPageLayout[\"TwoColumnLeft\"] = 2] = \"TwoColumnLeft\";\n /**\n * Display the pages in two columns, with odd numbered\n * pages on the right.\n */\n PdfPageLayout[PdfPageLayout[\"TwoColumnRight\"] = 3] = \"TwoColumnRight\";\n /**\n * Display the pages two at a time, with odd-numbered pages on the left.\n */\n PdfPageLayout[PdfPageLayout[\"TwoPageLeft\"] = 4] = \"TwoPageLeft\";\n /**\n * Display the pages two at a time, with odd-numbered pages on the right.\n */\n PdfPageLayout[PdfPageLayout[\"TwoPageRight\"] = 5] = \"TwoPageRight\";\n})(PdfPageLayout || (PdfPageLayout = {}));\n/**\n * The paper handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the duplex\n * viewerPreferences.duplex = DuplexMode.DuplexFlipLongEdge;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar DuplexMode;\n(function (DuplexMode) {\n /**\n * Print single-sided.\n */\n DuplexMode[DuplexMode[\"Simplex\"] = 0] = \"Simplex\";\n /**\n * Duplex and flip on the short edge of the sheet.\n */\n DuplexMode[DuplexMode[\"DuplexFlipShortEdge\"] = 1] = \"DuplexFlipShortEdge\";\n /**\n * Duplex and flip on the long edge of the sheet.\n */\n DuplexMode[DuplexMode[\"DuplexFlipLongEdge\"] = 2] = \"DuplexFlipLongEdge\";\n /**\n * Default value.\n */\n DuplexMode[DuplexMode[\"None\"] = 3] = \"None\";\n})(DuplexMode || (DuplexMode = {}));\n/**\n * Specifies the different page scaling option that shall be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page scaling\n * viewerPreferences.pageScaling = PageScalingMode.None;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PageScalingMode;\n(function (PageScalingMode) {\n /**\n * Indicates the conforming reader’s default print scaling.\n */\n PageScalingMode[PageScalingMode[\"AppDefault\"] = 0] = \"AppDefault\";\n /**\n * Indicates no page scaling.\n */\n PageScalingMode[PageScalingMode[\"None\"] = 1] = \"None\";\n})(PageScalingMode || (PageScalingMode = {}));\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 Object.defineProperty(PdfCatalog.prototype, \"viewerPreferences\", {\n /**\n * Gets the viewer preferences of the PDF document.\n * @private\n */\n get: function () {\n if (this._viewerPreferences === null || typeof this._viewerPreferences === 'undefined') {\n this._viewerPreferences = new PdfViewerPreferences(this);\n this.items.setValue(this.tempDictionaryProperties.viewerPreferences, new PdfReferenceHolder(this._viewerPreferences.element));\n }\n return this._viewerPreferences;\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 * 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 else {\n throw new TypeError('Only the JPEG format is supported');\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 if (typeof this._rowHeight !== 'undefined' && this._rowHeight !== null && innerLayoutArea.height > this._rowHeight) {\n innerLayoutArea.height = this._rowHeight;\n }\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 = cell.value;\n var width = cell.width;\n var column = grid.columns.getColumn(i);\n if (column.isCustomWidth && cell.width > column.width) {\n width = column.width;\n }\n this.slr = layouter.layout(cell.value, font, cell.stringFormat, new SizeF(width, currentHeight), false, this.currentPageBounds);\n var height = this.slr.actualSize.height;\n if (cell.value !== '' && height === 0) {\n isFit = false;\n break;\n }\n if (cell.style !== null && cell.style.borders !== null && cell.style.borders.top !== null && cell.style.borders.bottom !== null) {\n height += (cell.style.borders.top.width + cell.style.borders.bottom.width) * 2;\n }\n if (this.slr.lineCount > 1 && cell.stringFormat != null && cell.stringFormat.lineSpacing != 0) {\n height += (this.slr.lineCount - 1) * (cell.style.stringFormat.lineSpacing);\n }\n if (cell.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 row.cells.getCell(i)._rowHeight = row.height;\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, initializeCSPTemplate, 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 (typeof template !== 'function' && 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 * 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 if (actualObject.shapeAnnotationType === 'Radius' && actualObject.wrapper.children[1]) {\n actualObject.wrapper.children[1].style.strokeColor = node.strokeColor;\n }\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 if (actualObject.shapeAnnotationType === 'Radius' && actualObject.wrapper.children[1]) {\n actualObject.wrapper.children[1].style.strokeWidth = 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 if (actualObject && actualObject.shapeAnnotationType === 'FreeText' && this.pdfViewer.annotationModule.stickyNotesAnnotationModule.textFromCommentPanel) {\n actualObject.wrapper.width = undefined;\n actualObject.wrapper.height = undefined;\n actualObject.wrapper.measure(new Size(actualObject.wrapper.bounds.width, actualObject.wrapper.bounds.height));\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.textFromCommentPanel = false;\n }\n else {\n actualObject.wrapper.measure(new Size(actualObject.wrapper.bounds.width, actualObject.wrapper.bounds.height));\n }\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 (shapeAnnotationType === 'Image' || shapeAnnotationType === 'SignatureImage') {\n this.inAction = false;\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 if (!isNullOrUndefined(drawnAnnotation) && !isNullOrUndefined(drawnAnnotation.wrapper)) {\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 }\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 var targetParentRect = void 0;\n if (event.target.offsetParent && event.target.offsetParent.offsetParent && event.target.offsetParent.offsetParent.offsetParent && event.target.offsetParent.offsetParent.offsetParent.offsetParent) {\n // eslint-disable-next-line\n targetParentRect = event.target.offsetParent.offsetParent.offsetParent.offsetParent.getBoundingClientRect();\n offsetX = event.clientX - targetParentRect.left;\n offsetY = event.clientY - targetParentRect.top;\n }\n else if (event.target.parentElement.offsetParent && event.target.parentElement.offsetParent.offsetParent) {\n // eslint-disable-next-line\n targetParentRect = event.target.parentElement.offsetParent.offsetParent.getBoundingClientRect();\n offsetX = event.clientX - targetParentRect.left;\n offsetY = event.clientY - targetParentRect.top;\n // eslint-disable-next-line\n }\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, isAnnotOrderAction) {\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 || isAnnotOrderAction)) {\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 if (pageAnnotations[i].dynamicText !== annotationBase.dynamicText) {\n this.pdfViewer.fireCommentEdit(pageAnnotations[i].annotName, annotationBase.dynamicText, pageAnnotations[i]);\n }\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 = parseFloat(stringArray[0].split('(')[1]);\n // eslint-disable-next-line radix\n var g = parseFloat(stringArray[1]);\n // eslint-disable-next-line radix\n var b = parseFloat(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 * @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 this.pdfViewer.fireCommentAdd(annot.annotName, annot.dynamicText, annot);\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 }\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 }\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: '',\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 if (this.pdfViewer.tool === \"Stamp\" && this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.updateStampItems();\n }\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.resetFreeTextAnnot();\n }\n type !== 'None' ? this.triggerAnnotationUnselectEvent() : null;\n this.pdfViewer.tool = \"\";\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.deSelectCommentAnnotation();\n }\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[y].Name === 'ink') {\n formFieldsData[y].Value = '';\n }\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 else if (shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText' || shapeType === 'SignatureImage') {\n this.pdfViewerBase.signatureModule.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' || shapeType === 'Image') {\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' || shapeType === 'Image') {\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.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(currentAnnotation, { dynamicText: dynamicText });\n this.pdfViewer.renderSelector(currentAnnotation.pageIndex, currentAnnotation.annotationSelectorSettings);\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 if (!isNullOrUndefined(this.freeTextAnnotationModule) && this.freeTextAnnotationModule.previousText !== 'Type Here' && this.freeTextAnnotationModule.previousText !== currentAnnotation.dynamicText) {\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, false, false, false, false, true, this.freeTextAnnotationModule.previousText, currentAnnotation.dynamicText);\n }\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 var eventParentElement = event.target.parentElement;\n if (eventTarget.classList.contains('e-pv-hyperlink')) {\n eventTarget = eventParentElement;\n }\n else if (eventParentElement && eventParentElement.classList.contains('foreign-object') && eventParentElement.parentElement && eventParentElement.parentElement.parentElement && eventParentElement.parentElement.parentElement.parentElement) {\n eventTarget = eventParentElement.parentElement.parentElement.parentElement;\n }\n else if (eventTarget.classList.contains('e-pdfviewer-formFields')) {\n eventTarget = eventParentElement;\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, isAnnotOrderAction) {\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, null, isAnnotOrderAction);\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, null, isAnnotOrderAction);\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.pdfViewerBase.isInkAdded && this.pdfViewer.tool === 'Ink' && this.pdfViewer.currentPageNumber - 1 === pageNumber) {\n var currentcanvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + (this.pdfViewer.currentPageNumber - 1));\n var zoom = this.pdfViewerBase.getZoomFactor();\n var ratio = this.pdfViewerBase.getWindowDevicePixelRatio();\n var context = currentcanvas.getContext('2d');\n var thickness = this.pdfViewer.inkAnnotationSettings.thickness ? this.pdfViewer.inkAnnotationSettings.thickness : 1;\n var opacity = this.pdfViewer.inkAnnotationSettings.opacity ? this.pdfViewer.inkAnnotationSettings.opacity : 1;\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.lineWidth = thickness * zoom > 1 ? thickness * zoom : thickness;\n context.strokeStyle = strokeColor;\n context.globalAlpha = opacity;\n var collectionData = processPathData(this.pdfViewer.annotationModule.inkAnnotationModule.updateInkDataWithZoom());\n var csData = splitArrayCollection(collectionData);\n for (var j = 0; j < csData.length; j++) {\n var pathValue = csData[j];\n switch (pathValue.command) {\n case 'M':\n context.moveTo(pathValue.x, pathValue.y);\n break;\n case 'L':\n context.lineTo(pathValue.x, pathValue.y);\n break;\n default:\n break;\n }\n }\n context.stroke();\n context.closePath();\n if (!isNullOrUndefined(this.pdfViewer.toolbarModule) && !isNullOrUndefined(this.pdfViewer.toolbarModule.annotationToolbarModule)) {\n this.pdfViewer.toolbar.annotationToolbarModule.inkAnnotationSelected = true;\n }\n }\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 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 annotation.content = annotation.content ? annotation.content : annotation.dynamicText;\n if (annotation.content && currentAnnotation.dynamicText !== annotation.content) {\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, false, false, false, false, true, currentAnnotation.dynamicText, annotation.content);\n }\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, 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.content && currentAnnotation) {\n this.updateAnnotationComments(currentAnnotation.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 === 8) {\n fontStyle = 8;\n }\n else {\n fontStyle = { isBold: font.isBold, isItalic: font.isItalic, isUnderline: font.isUnderline, isStrikeout: font.isStrikeout };\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 var modifiedDateToUTC = new Date(modifiedDateTime);\n modifiedDateTime = modifiedDateToUTC.toISOString();\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, isAnnotOrderAction) {\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(), null, isAnnotOrderAction);\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.renderTextMarkupAnnotations = function (textMarkupAnnotations, pageNumber, canvas, factor, isImportAction, isAnnotOrderAction) {\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 && !isAnnotOrderAction) {\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: '',\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, isAnnotOrderAction) {\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 || isAnnotOrderAction) {\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, isAnnotOrderAction) {\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 || isAnnotOrderAction || 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, isAnnotOrderAction) {\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 || isAnnotOrderAction)) {\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 && 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: annotation.id,\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 if (this.pdfViewer.nameTable[pageAnnotationObject.annotations[z].randomId]) {\n pageAnnotationObject.annotations[z].wrapperBounds = this.pdfViewer.nameTable[pageAnnotationObject.annotations[z].randomId].wrapper.bounds;\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 // 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 /**\n * @private\n */\n this.textFromCommentPanel = 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 var redirect = proxy.pdfViewerBase.checkRedirection(data);\n if (!redirect) {\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, \"annotationOrder\");\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 };\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 var collection = pageAnnotations.annotationOrder;\n for (var l = 0; l < collection.length; l++) {\n var annotation = collection[parseInt(l.toString(), 10)];\n var type = annotation.AnnotType ? annotation.AnnotType : annotation.AnnotationType;\n if (this.pdfViewer.dateTimeFormat) {\n annotation.ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(annotation.ModifiedDate);\n }\n pageCollections.push(annotation);\n switch (type) {\n case \"textMarkup\":\n this.updateCollections(this.pdfViewer.annotationModule.textMarkupAnnotationModule.updateTextMarkupAnnotationCollections(annotation, pageNumber));\n break;\n case \"shape_measure\":\n this.updateCollections(this.pdfViewer.annotationModule.measureAnnotationModule.updateMeasureAnnotationCollections(annotation, pageNumber));\n break;\n case \"shape\":\n this.updateCollections(this.pdfViewer.annotationModule.shapeAnnotationModule.updateShapeAnnotationCollections(annotation, pageNumber));\n break;\n case \"sticky\":\n this.updateCollections(this.updateStickyNotesAnnotationCollections(annotation, pageNumber));\n break;\n case \"stamp\":\n this.updateCollections(this.pdfViewer.annotationModule.stampAnnotationModule.updateStampAnnotationCollections(annotation, pageNumber));\n break;\n case \"Ink\":\n this.updateCollections(this.pdfViewer.annotationModule.inkAnnotationModule.updateInkCollections(annotation, pageNumber));\n break;\n case \"Text Box\":\n this.updateCollections(this.pdfViewer.annotationModule.freeTextAnnotationModule.updateFreeTextAnnotationCollections(annotation, pageNumber));\n break;\n default:\n break;\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 (this.pdfViewer.toolbarModule) {\n this.renderAnnotationComments(pageCollections, pageNumber);\n }\n if (isInitialRender) {\n for (var i = 0; i < this.pdfViewerBase.renderedPagesList.length; i++) {\n if (this.pdfViewerBase.renderedPagesList[i] === pageNumber) {\n this.pdfViewerBase.renderAnnotations(pageNumber, pageAnnotations, false);\n }\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 // eslint-disable-next-line\n StickyNotesAnnotation.prototype.getButtonState = function (editObj, commentTextBox) {\n commentTextBox.addEventListener('keyup', function (event) {\n if (editObj.element.querySelector('.e-btn-save')) {\n if ((event.srcElement.value !== '' || event.srcElement.defaultValue != '') && event.srcElement.defaultValue !== event.srcElement.value) {\n editObj.element.querySelector('.e-btn-save').ej2_instances[0].disabled = false;\n }\n }\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 && type !== 'freeText') {\n editObj_1.enableEditMode = true;\n }\n this.getButtonState(editObj_1, commentTextBox);\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 (!isNullOrUndefined(args.target) && !isNullOrUndefined(this.pdfViewer.freeTextSettings.defaultText) && this.pdfViewer.selectedItems && this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText' && args.target.value === this.pdfViewer.freeTextSettings.defaultText) {\n args.target.select();\n }\n // eslint-disable-next-line\n if (!this.isNewcommentAdded) {\n if (args.relatedTarget !== null && args.relatedTarget.id === this.pdfViewer.element.id + '_viewerContainer') {\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 this.getButtonState(commentObj, newCommentDiv);\n if (args.valueEle) {\n if (args.value != null && 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 disabled: true\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 this.getButtonState(saveObj_1, replyTextBox);\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 disabled: true\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 this.getButtonState(saveObj, replyTextBox);\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 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 (!isNullOrUndefined(this.pdfViewer.selectedItems) && this.pdfViewer.selectedItems.annotations[0] && 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 // eslint-disable-next-line\n document.querySelectorAll('.e-pv-more-options-button[style*=\"visibility: visible\"]').forEach(function (moreButton) { return moreButton.style.visibility = 'hidden'; });\n if (event.target.className === 'e-editable-value-wrapper') {\n event.target.parentElement.parentElement.firstChild.lastChild.style.visibility = 'visible';\n }\n else if (event.target.className === 'e-pv-reply-title' || event.target.className === 'e-pv-comment-title') {\n event.target.parentElement.lastChild.style.visibility = 'visible';\n }\n else if (event.target.className === 'e-editable-value') {\n event.target.parentElement.parentElement.parentElement.firstChild.lastChild.style.visibility = 'visible';\n }\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 (isNullOrUndefined(currentAnnotation) && annotationName) {\n currentAnnotation = this.pdfViewer.annotationCollection.filter(function (annot) { return annot.annotationId === annotationName; })[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.textFromCommentPanel = true;\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.toString().split(' ').splice(1, 2).join(' ');\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: '',\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 /**\n * @private\n */\n this.inkAnnotationInitialZoom = 1;\n /**\n * @private\n */\n this.inkPathDataCollection = [];\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 !== '') || this.inkPathDataCollection.length > 0) {\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 this.inkPathDataCollection = [];\n }\n this.pdfViewerBase.isInkAdded = false;\n }\n };\n /**\n * @private\n */\n InkAnnotation.prototype.updateInkDataWithZoom = function () {\n var updatedPathData = '';\n if (this.outputString !== '') {\n this.inkPathDataCollection.push({ pathData: this.outputString, zoomFactor: this.inkAnnotationInitialZoom });\n }\n if (this.inkPathDataCollection.length > 0) {\n //for loop to get the path data from the collection with path zoom factor\n for (var i = 0; i < this.inkPathDataCollection.length; i++) {\n updatedPathData += this.updatePathDataWithZoom(this.inkPathDataCollection[i].pathData, this.inkPathDataCollection[i].zoomFactor);\n }\n }\n else {\n updatedPathData += this.updatePathDataWithZoom(this.outputString, this.inkAnnotationInitialZoom);\n }\n return updatedPathData;\n };\n InkAnnotation.prototype.updatePathDataWithZoom = function (pathData, pathZoomFactor) {\n var pathString = '';\n var zoom = this.pdfViewerBase.getZoomFactor();\n var collectionData = processPathData(pathData);\n var csData = splitArrayCollection(collectionData);\n for (var j = 0; j < csData.length; j++) {\n var pathValue = csData[j];\n pathString += pathValue.command + pathValue.x * (zoom / pathZoomFactor) + ',' + pathValue.y * (zoom / pathZoomFactor) + ' ';\n }\n return pathString;\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 this.inkAnnotationInitialZoom = zoom;\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 this.outputString = this.updateInkDataWithZoom();\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 this.inkPathDataCollection = [];\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 if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_ink'];\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) {\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, isAnnotOrderAction) {\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 || isAnnotOrderAction)) {\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: '',\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 annotationData = _this.pdfViewerBase.getSanitizedString(annotationData);\n var jsonData = JSON.parse(annotationData);\n var firstAnnotation = jsonData.pdfAnnotation[Object.keys(jsonData.pdfAnnotation)[0]];\n if ((Object.keys(jsonData.pdfAnnotation).length >= 1) && (firstAnnotation.textMarkupAnnotation || firstAnnotation.measureShapeAnnotation || firstAnnotation.freeTextAnnotation || firstAnnotation.stampAnnotations || firstAnnotation.signatureInkAnnotation || (firstAnnotation.shapeAnnotation && firstAnnotation.shapeAnnotation[0].Bounds))) {\n _this.pdfViewerBase.isPDFViewerJson = true;\n _this.pdfViewerBase.importAnnotations(jsonData, AnnotationDataFormat.Json);\n }\n else {\n _this.pdfViewerBase.isPDFViewerJson = false;\n _this.pdfViewerBase.importAnnotations(importFile, AnnotationDataFormat.Json);\n }\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 */\n this.annotationMenuObj.open(event.clientY, event.clientX, event.currentTarget);\n /* eslint-enable */\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: initializeCSPTemplate(function () { return this.pdfViewer.localeObj.getConstant('Page Thumbnails'); }, this), 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: initializeCSPTemplate(function () { return this.pdfViewer.localeObj.getConstant('Bookmarks'); }, this), 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_MAT3_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_MATERIAL3SPIN = 'e-spin-material3';\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 createMaterial3Spinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material3', radius: radius };\n createMaterialElement(container, uniqueID, makeElement, CLS_MATERIAL3SPIN);\n matCalculateAttributes(radius, container, 'Material3', CLS_MATERIAL3SPIN);\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 'Material3':\n createMaterial3Spinner(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 'Material3':\n defaultSize = DEFT_MAT3_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')) || !isNullOrUndefined(container.querySelector('svg.e-spin-material3'))) {\n var svg = void 0;\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material');\n }\n else if (!isNullOrUndefined(container.querySelector('svg.e-spin-material3')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material3');\n }\n if (!isNullOrUndefined(svg)) {\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 - 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' || type === 'Material3') {\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 case 'Material3':\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.pageRenderCount = 2;\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.isPDFViewerJson = 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.isTaggedPdf = false;\n this.accessibilityTagsHandler = null;\n this.accessibilityTagsCollection = [];\n this.pageRequestListForAccessibilityTags = [];\n this.enableAccessibilityMultiPageRequest = true;\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) && _this.pdfViewer.formFieldCollection) {\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.magnificationModule ? _this.pdfViewer.magnification.zoomFactor : _this.pdfViewer.zoomValue < 1) {\n zoomDifference = 10;\n }\n if (_this.pdfViewer.magnificationModule ? _this.pdfViewer.magnification.zoomFactor : _this.pdfViewer.zoomValue >= 2) {\n zoomDifference = 50;\n }\n if (_this.isTouchPad && !_this.isMacSafari) {\n zoomDifference = zoomDifference / _this.zoomInterval;\n }\n // eslint-disable-next-line\n if (_this.pdfViewer.magnificationModule) {\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 }\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 var activeElement = document.activeElement;\n if (activeElement.tagName !== 'INPUT' && activeElement.tagName !== 'TEXTAREA' && !activeElement.isContentEditable) {\n _this.DeleteKeyPressed(event);\n }\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[parseInt(i.toString(), 10)];\n if (fieldId === formfield.id && (formfield.type === 'SignatureField' || formfield.type === 'InitialField')) {\n _this.pdfViewer.fireFormFieldClickEvent('formFieldClicked', _this.pdfViewer.formFieldCollections[parseInt(i.toString(), 10)]);\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[parseInt(i.toString(), 10)];\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 if (event.target.className === 'e-pv-formfield-input' || event.target.id === _this.pdfViewer.element.id + '_viewerContainer') {\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 }\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 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 && !_this.pdfViewer.isFormDesignerToolbarVisible) {\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 if (_this.pdfViewer.toolbarModule && _this.pdfViewer.isFormDesignerToolbarVisible && _this.pdfViewer.enableAnnotationToolbar && !_this.pdfViewer.isAnnotationToolbarVisible && !isNullOrUndefined(_this.pdfViewer.toolbarModule.annotationToolbarModule)) {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(_this.pdfViewer.toolbarModule.annotationItem);\n }\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 */\n _this.contextMenuModule.open(_this.touchClientY, _this.touchClientX, _this.viewerContainer);\n /* eslint-enable */\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.accessibilityTags = new AccessibilityTags(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 /**\n * @private\n * @param {any} data - data.\n * @returns {boolean}\n */\n PdfViewerBase.prototype.checkRedirection = function (data) {\n var redirect = false;\n if (data && typeof (data) === 'object' && (data.redirectUrl || data.redirectUri || data.redirectUrl === \"\" || data.redirectUri === \"\")) {\n if (data.redirectUrl === \"\" || data.redirectUri === \"\") {\n redirect = true;\n }\n else {\n data.redirectUrl ? window.location.href = data.redirectUrl : window.location.href = data.redirectUri;\n }\n }\n else if (data && typeof (data) === 'string' && (data.includes('redirectUrl') || data.includes('redirectUri'))) {\n if (JSON.parse(data).redirectUrl === \"\" || JSON.parse(data).redirectUri === \"\") {\n redirect = true;\n }\n else {\n data.includes('redirectUrl') ? window.location.href = JSON.parse(data).redirectUrl : window.location.href = JSON.parse(data).redirectUri;\n }\n }\n return redirect;\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 var redirect = proxy.checkRedirection(data);\n if (redirect) {\n proxy.showLoadingIndicator(false);\n }\n else {\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 if (!isNullOrUndefined(data['isTaggedPdf']) && data['isTaggedPdf']) {\n proxy.isTaggedPdf = true;\n }\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 };\n // eslint-disable-next-line\n this.loadRequestHandler.onFailure = function (result) {\n var statusString = result.status.toString().split('')[0];\n if (statusString === '4') {\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 var renderLimit = this.pdfViewer.initialRenderPages <= this.pageCount ? (this.pdfViewer.initialRenderPages > this.pageRenderCount) ? this.pdfViewer.initialRenderPages : 2 : this.pageCount;\n for (var i = 1; i < renderLimit; i++) {\n this.createRequestForRender(i);\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 proxy.isTaggedPdf = false;\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.accessibilityTagsCollection) {\n proxy.accessibilityTagsCollection = [];\n }\n if (proxy.pageRequestListForAccessibilityTags) {\n proxy.pageRequestListForAccessibilityTags = [];\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 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 = (!isNullOrUndefined(this.pdfViewer.annotation) && !isNullOrUndefined(this.pdfViewer.annotation.freeTextAnnotationModule) && !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 if (this.tapCount > 2) {\n this.tapCount = 2;\n }\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 if (this.tapCount > 2) {\n this.tapCount = 2;\n }\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 = void 0;\n if (this.pdfViewer.initialRenderPages > 10) {\n if (this.pdfViewer.initialRenderPages > 100) {\n limit = pageLimit;\n }\n else {\n limit = this.pdfViewer.initialRenderPages <= this.pageCount ? this.pdfViewer.initialRenderPages : this.pageCount;\n }\n }\n else {\n limit = this.pageCount < 10 ? this.pageCount : 10;\n }\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 var initialLoadedPages = this.pdfViewer.initialRenderPages > this.pageRenderCount ? (this.pdfViewer.initialRenderPages <= this.pageCount) ? (this.pdfViewer.initialRenderPages - 1) : this.pageCount : -1;\n if (pageCanvas && j > initialLoadedPages) {\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 && j > initialLoadedPages) {\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_1 = proxy.pageLimit; i_1 < proxy.pageCount; i_1++) {\n if (typeof (pageValues.pageSizes[parseInt(i_1.toString(), 10)]) !== 'object') {\n var pageSize = pageValues.pageSizes[parseInt(i_1.toString(), 10)].split(',');\n if (proxy.pageSize[i_1 - 1] !== null && i_1 !== 0) {\n var previousPageHeight = proxy.pageSize[i_1 - 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 - 1] !== null && i_1 !== 0) {\n var previousPageHeight = proxy.pageSize[i_1 - 1].height;\n topValue = proxy.pageGap + parseFloat(previousPageHeight) + topValue;\n }\n var size = { width: parseFloat(pageValues.pageSizes[parseInt(i_1.toString(), 10)].Width), height: parseFloat(pageValues.pageSizes[parseInt(i_1.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 if (this.pdfViewer.initialRenderPages > 100) {\n var limit = this.pdfViewer.initialRenderPages <= proxy.pageCount ? this.pdfViewer.initialRenderPages : proxy.pageCount;\n for (var i = 100; i < limit; i++) {\n proxy.renderPageContainer(i, proxy.getPageWidth(i), proxy.getPageHeight(i), proxy.getPageTop(i));\n proxy.createRequestForRender(i);\n }\n }\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 ? this.pdfViewer.magnificationModule.isFormFieldPageZoomed : false)) {\n this.pdfViewer.formFieldsModule.renderFormFields(pageIndex, false);\n }\n if (this.pdfViewer.accessibilityTagsModule && this.pdfViewer.enableAccessibilityTags && this.isTaggedPdf) {\n if (this.accessibilityTagsCollection[pageIndex.toString()]) {\n this.renderAccessibilityTags(pageIndex, this.accessibilityTagsCollection[pageIndex.toString()]);\n }\n else if (this.pageRequestListForAccessibilityTags.indexOf(pageIndex) === -1) {\n this.createRequestForAccessibilityTags(pageIndex);\n }\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 ? this.pdfViewer.magnificationModule.isFormFieldPageZoomed : true)) {\n this.pdfViewer.formFieldsModule.renderFormFields(pageIndex, false);\n if (this.pdfViewer.magnificationModule) {\n this.pdfViewer.magnificationModule.isFormFieldPageZoomed = false;\n }\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.signatureAnnotation = pageAnnotations.signatureAnnotation;\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 this.drawPageAnnotations(this.importedAnnotation[parseInt(pageIndex.toString(), 10)], 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.isImportAction)) {\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.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 }\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 (data && data.signatureAnnotation && this.signatureModule) {\n this.signatureModule.renderExistingSignature(data.signatureAnnotation, pageIndex, false);\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, annotationsCollection, 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.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 var annotData = [];\n var collection = annotationsCollection.annotationOrder;\n for (var l = 0; l < collection.length; l++) {\n var type = collection[parseInt(l.toString(), 10)].AnnotType ? collection[parseInt(l.toString(), 10)].AnnotType : collection[parseInt(l.toString(), 10)].AnnotationType;\n annotData.push(collection[parseInt(l.toString(), 10)]);\n switch (type) {\n case \"textMarkup\":\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.renderTextMarkupAnnotationsInPage(annotData, pageIndex, null, true);\n break;\n case \"shape_measure\":\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, null, annotData, null, null, null, true);\n break;\n case \"shape\":\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, annotData, null, null, null, null, true);\n break;\n case \"sticky\":\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderStickyNotesAnnotations(annotData, pageIndex);\n break;\n case \"stamp\":\n this.pdfViewer.annotationModule.stampAnnotationModule.renderStampAnnotations(annotData, pageIndex, null, null, true);\n break;\n case \"Ink\":\n this.pdfViewer.annotationModule.inkAnnotationModule.renderExistingInkSignature(annotData, pageIndex, false, true);\n break;\n case \"Text Box\":\n this.pdfViewer.annotationModule.freeTextAnnotationModule.renderFreeTextAnnotations(annotData, pageIndex, undefined, true);\n break;\n default:\n break;\n }\n annotData = [];\n }\n if (data && data.signatureAnnotation) {\n this.signatureModule.renderExistingSignature(data.signatureAnnotation, 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][parseInt(pageIndex.toString(), 10)].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.renderAccessibilityTags = function (pageIndex, taggedTextResponse) {\n this.accessibilityTags.renderAccessibilityTags(pageIndex, taggedTextResponse);\n };\n PdfViewerBase.prototype.returnPageListForAccessibilityTags = function (pageIndex) {\n var pageList = [];\n if (!this.enableAccessibilityMultiPageRequest) {\n return [pageIndex];\n }\n var minPage = pageIndex - 2 > 0 ? pageIndex - 2 : 0;\n var maxPage = pageIndex + 4 < this.pageCount - 1 ? pageIndex + 4 : this.pageCount - 1;\n for (var i = minPage; i <= maxPage; i++) {\n if (this.accessibilityTagsCollection[parseInt(i.toString(), 10)] === undefined) {\n pageList.push(parseInt(i.toString(), 10));\n }\n else {\n maxPage = maxPage + 1 < this.pageCount - 1 ? maxPage + 1 : this.pageCount - 1;\n }\n }\n this.pageRequestListForAccessibilityTags = pageList;\n return pageList;\n };\n PdfViewerBase.prototype.createRequestForAccessibilityTags = function (pageIndex) {\n var jsonObject;\n var proxy = this;\n jsonObject = { action: 'RenderTaggedContent', elementId: this.pdfViewer.element.id, hashId: this.hashId, uniqueId: this.documentId, pageList: JSON.stringify(this.returnPageListForAccessibilityTags(pageIndex)) };\n if (this.jsonDocumentId) {\n jsonObject.document = this.jsonDocumentId;\n }\n var url = this.pdfViewer.serviceUrl + '/' + \"RenderTaggedContent\";\n this.accessibilityTagsHandler = new AjaxHandler(this.pdfViewer);\n this.accessibilityTagsHandler.url = url;\n this.accessibilityTagsHandler.mode = true;\n this.accessibilityTagsHandler.responseType = 'text';\n this.accessibilityTagsHandler.send(jsonObject);\n this.accessibilityTagsHandler.onSuccess = function (result) {\n var data = JSON.parse(result.data);\n var pageData;\n for (var i = 0; i < data.length; i++) {\n pageData = data[parseInt(i.toString(), 10)];\n proxy.accessibilityTagsCollection[pageData[0]] = pageData[1];\n }\n proxy.pageRequestListForAccessibilityTags = [];\n if (proxy.accessibilityTagsCollection[parseInt(pageIndex.toString(), 10)]) {\n proxy.renderAccessibilityTags(pageIndex, proxy.accessibilityTagsCollection[parseInt(pageIndex.toString(), 10)]);\n }\n if (proxy.accessibilityTagsCollection[pageIndex - 1 <= 0 ? parseInt((pageIndex - 1).toString(), 10) : 0]) {\n proxy.renderAccessibilityTags(pageIndex - 1 <= 0 ? pageIndex - 1 : 0, proxy.accessibilityTagsCollection[pageIndex - 1 <= 0 ? parseInt((pageIndex - 1).toString(), 10) : 0]);\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.isMixedSizeDocument && (this.highestWidth * this.getZoomFactor()) > this.viewerContainer.clientWidth) ? (this.highestWidth * this.getZoomFactor()) + 'px' : 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 this.pageContainer.style.width = ((this.highestWidth * this.getZoomFactor()) > this.viewerContainer.clientWidth) ? (this.highestWidth * this.getZoomFactor()) + 'px' : this.viewerContainer.clientWidth + 'px';\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 if (this.isDocumentLoaded && this.pdfViewer.initialRenderPages > this.pageRenderCount && (this.getPageHeight(this.pdfViewer.initialRenderPages - 1) + this.getPageTop(this.pdfViewer.initialRenderPages - 1)) > this.viewerContainer.clientHeight) {\n var renderLimit = this.pdfViewer.initialRenderPages <= this.pageCount ? this.pdfViewer.initialRenderPages : this.pageCount;\n for (var i = 1; i < renderLimit; i++) {\n this.createRequestForRender(i);\n }\n }\n else {\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 };\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 */\n window.open(blobUrl, '_parent');\n /* eslint-enable */\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 */\n window.open(blobUrl, '_parent');\n /* eslint-enable */\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 var canExport = false;\n if (formFieldDataFormat === 'Json' || formFieldDataFormat === 'Fdf' || formFieldDataFormat === 'Xfdf' || formFieldDataFormat === \"Xml\") {\n jsonObject.formFieldDataFormat = formFieldDataFormat;\n canExport = proxy.pdfViewer.fireFormExportStarted(jsonObject);\n }\n if (canExport) {\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 var redirect = proxy.checkRedirection(data);\n if (!redirect) {\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 };\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 });\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['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 jsonObject = Object.assign(jsonObject, this.constructJsonDownload());\n // eslint-disable-next-line\t\n jsonObject.action = 'ImportFormFields';\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 var redirect = proxy.checkRedirection(data);\n if (!redirect) {\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 };\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 var redirect = proxy.checkRedirection(data);\n if (!redirect) {\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 };\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 = Math.ceil(tileCount);\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 var redirect = proxy.checkRedirection(data);\n if (redirect) {\n proxy.showLoadingIndicator(false);\n }\n else {\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 };\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 var redirect = proxy.checkRedirection(data);\n if (!redirect) {\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][parseInt(pageIndex.toString(), 10)].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 };\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[parseInt(j.toString(), 10)].Y >= markedBounds.Y - buffer && characterBounds[parseInt(j.toString(), 10)].X >= markedBounds.X - buffer && characterBounds[parseInt(j.toString(), 10)].Y <= markedBounds.Y + markedBounds.Height + buffer && characterBounds[parseInt(j.toString(), 10)].X <= markedBounds.X + markedBounds.Width + buffer) {\n textMarkupContent += pageCharText[parseInt(j.toString(), 10)];\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][parseInt(pageIndex.toString(), 10)];\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') && target.parentElement.classList.length > 0 && !target.parentElement.classList.contains(\"e-editable-elements\")) {\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 (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 (annotationDataFormat) {\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).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 if (this.pdfViewer.formFieldsModule) {\n this.pdfViewer.formFieldsModule.clearFormFieldStorage();\n }\n this.isFormStorageExceed = true;\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.clearAnnotationStorage();\n }\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 var canExport = false;\n jsonObject = _this.constructJsonDownload();\n jsonObject.annotationDataFormat = annotationDataFormat;\n // eslint-disable-next-line\n jsonObject['action'] = 'ExportAnnotations';\n canExport = proxy.pdfViewer.fireExportStart(jsonObject);\n if (canExport) {\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 var redirect = proxy.checkRedirection(data);\n if (!redirect) {\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 annotationJson = proxy.getSanitizedString(annotationJson);\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 };\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 });\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[parseInt(j.toString(), 10)].ModifiedDate = this.convertUTCDateTimeToLocalDateTime(data[parseInt(j.toString(), 10)].ModifiedDate);\n if (data[parseInt(j.toString(), 10)].Comments) {\n for (var i = 0; i < data[parseInt(j.toString(), 10)].Comments.length; i++) {\n data[parseInt(j.toString(), 10)].Comments[parseInt(i.toString(), 10)].ModifiedDate = this.convertUTCDateTimeToLocalDateTime(data[parseInt(j.toString(), 10)].Comments[parseInt(i.toString(), 10)].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 (!isXfdf && proxy.isPDFViewerJson) {\n this.isJsonImported = true;\n }\n else {\n this.isJsonImported = false;\n }\n if (typeof importData === 'object') {\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[parseInt(i.toString(), 10)]];\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 if (proxy.isPDFViewerJson) {\n jsonObject = { fileName: importData, action: 'ImportAnnotations', elementId: proxy.pdfViewer.element.id, hashId: proxy.hashId, uniqueId: proxy.documentId, annotationDataFormat: annotationDataFormat };\n }\n else {\n jsonObject = { importedData: importData, action: 'ImportAnnotations', elementId: proxy.pdfViewer.element.id, hashId: proxy.hashId, uniqueId: proxy.documentId, annotationDataFormat: annotationDataFormat };\n }\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, annotationDataFormat: annotationDataFormat };\n }\n jsonObject = Object.assign(jsonObject, this.constructJsonDownload());\n jsonObject[\"action\"] = 'ImportAnnotations';\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n if (jsonObject.documentId) {\n delete jsonObject['documentId'];\n }\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 var redirect = proxy.checkRedirection(data);\n if (!redirect) {\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 var newArray_1;\n var newData_1;\n newArray_1 = Object.keys(data.pdfAnnotation);\n for (var i = 0; i < Object.keys(data.pdfAnnotation).length; i++) {\n newData_1 = data.pdfAnnotation[newArray_1[parseInt(i.toString(), 10)]];\n proxy.updateModifiedDateToLocalDate(newData_1, \"annotationOrder\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"freeTextAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"measureShapeAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"shapeAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"signatureAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"signatureInkAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"stampAnnotations\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"stickyNotesAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData_1, \"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 };\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 }\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 }\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 }\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 }\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 }\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 }\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 }\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 }\n if (annotation[parseInt(i.toString(), 10)].annotationOrder) {\n var annotationOrderCollection = annotation[parseInt(i.toString(), 10)].annotationOrder;\n var annotationData = [];\n for (var index = 0; index < annotationOrderCollection.length; index++) {\n var annotationName = annotationOrderCollection[parseInt(index.toString(), 10)].AnnotType ? annotationOrderCollection[parseInt(index.toString(), 10)].AnnotType : annotationOrderCollection[parseInt(index.toString(), 10)].AnnotationType;\n annotationData.push(annotationOrderCollection[parseInt(index.toString(), 10)]);\n var annotObject = void 0;\n switch (annotationName) {\n case 'textMarkup':\n if (annotation[parseInt(i.toString(), 10)].textMarkupAnnotation.length !== 0) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotationData, i);\n for (var j = 0; j < annotationData.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.textMarkupAnnotationModule.updateTextMarkupAnnotationCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i));\n }\n }\n break;\n case 'shape':\n if (annotation[parseInt(i.toString(), 10)].shapeAnnotation.length !== 0) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotationData, i);\n for (var j = 0; j < annotationData.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.shapeAnnotationModule.updateShapeAnnotationCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i));\n }\n }\n break;\n case 'shape_measure':\n if (annotation[parseInt(i.toString(), 10)].measureShapeAnnotation.length !== 0) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotationData, i);\n for (var j = 0; j < annotationData.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.measureAnnotationModule.updateMeasureAnnotationCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i));\n }\n }\n break;\n case 'stamp':\n if (annotation[parseInt(i.toString(), 10)].stampAnnotations.length !== 0) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotationData, i);\n for (var j = 0; j < annotationData.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.stampAnnotationModule.updateStampAnnotationCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i));\n }\n }\n break;\n case 'Text Box':\n case 'freeText':\n if (annotation[parseInt(i.toString(), 10)].freeTextAnnotation.length !== 0) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotationData, i);\n for (var j = 0; j < annotationData.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.freeTextAnnotationModule.updateFreeTextAnnotationCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i));\n }\n }\n break;\n case 'sticky':\n if (annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation.length !== 0) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotationData, i);\n for (var j = 0; j < annotationData.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateStickyNotesAnnotationCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i));\n }\n }\n break;\n case 'signature':\n if (annotation[parseInt(i.toString(), 10)].signatureAnnotation.length !== 0) {\n for (var j = 0; j < annotationData.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.signatureModule.updateSignatureCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i), true);\n }\n }\n break;\n case 'Ink':\n case 'ink':\n if (annotation[parseInt(i.toString(), 10)].signatureInkAnnotation.length !== 0) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotationData, i);\n for (var j = 0; j < annotation[parseInt(i.toString(), 10)].annotationOrder[parseInt(index.toString(), 10)].length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.inkAnnotationModule.updateInkCollections(annotationOrderCollection[parseInt(index.toString(), 10)], i));\n }\n }\n break;\n }\n annotationData = [];\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 // When utilising the addAnnotation API, the annotationOrder object is not available; thus, the following code is used to put the annotation object into the annotationOrder.\n if (annotation && !(annotation.annotationOrder)) {\n var annotationTypes = ['freeTextAnnotation', 'measureShapeAnnotation', 'shapeAnnotation', 'signatureAnnotation', 'signatureInkAnnotation', 'stampAnnotations', 'stickyNotesAnnotation', 'textMarkupAnnotation'];\n // eslint-disable-next-line\n var foundAnnotationType = annotationTypes.find(function (type) { return annotation[type]; });\n if (foundAnnotationType) {\n // eslint-disable-next-line\n annotation.annotationOrder = annotation[foundAnnotationType];\n }\n }\n if (annotation) {\n var annotationOrderCollection = annotation.annotationOrder;\n var annotationData = [];\n var isRefreshRequired = true;\n for (var index = 0; index < annotationOrderCollection.length; index++) {\n var annotationName = annotationOrderCollection[parseInt(index.toString(), 10)].AnnotType ? annotationOrderCollection[parseInt(index.toString(), 10)].AnnotType : annotationOrderCollection[parseInt(index.toString(), 10)].AnnotationType;\n annotationData.push(annotationOrderCollection[parseInt(index.toString(), 10)]);\n var storeObject = void 0;\n var annotObject = void 0;\n switch (annotationName) {\n case 'textMarkup':\n isRefreshRequired = false;\n 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 annotObject = JSON.parse(storeObject);\n if (annotObject) {\n annotationData = this.checkAnnotationCollections(annotObject, annotationData, pageIndex);\n }\n }\n annotation.textMarkupAnnotation = this.checkAnnotationCommentsCollections(annotation.textMarkupAnnotation, pageIndex);\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, null, null, annotationData, null, true);\n break;\n case 'shape':\n isRefreshRequired = false;\n 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 annotObject = JSON.parse(storeObject);\n annotationData = this.checkAnnotationCollections(annotObject, annotationData, pageIndex);\n }\n annotation.shapeAnnotation = this.checkAnnotationCommentsCollections(annotation.shapeAnnotation, pageIndex);\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, annotationData, null, null, null, true);\n break;\n case 'shape_measure':\n isRefreshRequired = false;\n 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 annotObject = JSON.parse(storeObject);\n annotationData = this.checkAnnotationCollections(annotObject, annotationData, pageIndex);\n }\n annotation.measureShapeAnnotation = this.checkAnnotationCommentsCollections(annotation.measureShapeAnnotation, pageIndex);\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, null, annotationData, null, null, true);\n break;\n case 'stamp':\n 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 annotObject = JSON.parse(storeObject);\n annotationData = this.checkAnnotationCollections(annotObject, annotationData, pageIndex);\n }\n annotation.stampAnnotations = this.checkAnnotationCommentsCollections(annotation.stampAnnotations, pageIndex);\n this.pdfViewer.annotationModule.stampAnnotationModule.renderStampAnnotations(annotationData, pageIndex, null, true);\n break;\n case 'Text Box':\n case 'freeText':\n 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 annotObject = JSON.parse(storeObject);\n annotationData = this.checkAnnotationCollections(annotObject, annotationData, pageIndex);\n }\n annotation.freeTextAnnotation = this.checkAnnotationCommentsCollections(annotation.freeTextAnnotation, pageIndex);\n this.pdfViewer.annotationModule.freeTextAnnotationModule.renderFreeTextAnnotations(annotationData, pageIndex, true);\n break;\n case 'sticky':\n 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 annotObject = JSON.parse(storeObject);\n annotationData = this.checkAnnotationCollections(annotObject, annotationData, pageIndex);\n }\n annotation.stickyNotesAnnotation = this.checkAnnotationCommentsCollections(annotation.stickyNotesAnnotation, pageIndex);\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderStickyNotesAnnotations(annotationData, pageIndex);\n break;\n case 'signature':\n storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n annotObject = JSON.parse(storeObject);\n if (annotObject) {\n annotation.signatureAnnotation = this.checkSignatureCollections(annotObject, annotationData, pageIndex);\n }\n this.signatureModule.renderExistingSignature(annotationData, pageIndex, true);\n break;\n case 'Ink':\n case 'ink':\n 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 annotObject = JSON.parse(storeObject);\n annotationData = this.checkAnnotationCollections(annotObject, annotationData, pageIndex);\n }\n annotation.signatureInkAnnotation = this.checkAnnotationCommentsCollections(annotation.signatureInkAnnotation, pageIndex);\n this.pdfViewer.annotationModule.inkAnnotationModule.renderExistingInkSignature(annotationData, pageIndex, true);\n break;\n default:\n break;\n }\n annotationData = [];\n }\n if (isRefreshRequired) {\n var canvas = this.getElement('_annotationCanvas_' + pageIndex);\n this.pdfViewer.drawing.refreshCanvasDiagramLayer(canvas, pageIndex);\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 /**\n * @private\n */\n PdfViewerBase.prototype.isSignaturePathData = function (data) {\n // eslint-disable-next-line\n var pathRegex = /^([Mm]\\s*\\d+(\\.\\d+)?\\s*,\\s*\\d+(\\.\\d+)?(\\s+[Ll]\\s*\\d+(\\.\\d+)?\\s*,\\s*\\d+(\\.\\d+)?)*\\s*)+$/;\n return pathRegex.test(data);\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.isSignatureImageData = function (data) {\n // eslint-disable-next-line\n var base64ImageRegex = /^data:image\\/([a-z]+);base64,/;\n return base64ImageRegex.test(data);\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.getSanitizedString = function (annotationData) {\n var sanitizedString = annotationData.replace(/[\\x00-\\x1F\\x7F]/g, function (c) { return \"\\\\u\" + c.charCodeAt(0).toString(16).padStart(4, '0'); });\n return sanitizedString;\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 if (bounds.Rotation !== 270) {\n bounds.Y = yValue;\n bounds.Height = heightValue;\n }\n this.setStyleToTextDiv(textDiv, bounds.X, bounds.Y, bounds.Bottom, bounds.Width, bounds.Height, bounds.Rotation);\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 = void 0;\n if (bounds.Rotation === 90) {\n scale = bounds.Height * this.pdfViewerBase.getZoomFactor() / contextWidth;\n }\n else {\n scale = bounds.Width * this.pdfViewerBase.getZoomFactor() / contextWidth;\n }\n this.applyTextRotation(scale, textDiv, rotation, bounds.Rotation, bounds);\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, bounds.Rotation);\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 = void 0;\n if (bounds.Rotation === 90) {\n scale = bounds.Height * this.pdfViewerBase.getZoomFactor() / contextWidth;\n }\n else {\n scale = bounds.Width * this.pdfViewerBase.getZoomFactor() / contextWidth;\n }\n this.applyTextRotation(scale, textDiv, rotation, bounds.Rotation, bounds);\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, bounds) {\n var scaleString = 'scaleX(' + scale + ')';\n if (rotation === 0) {\n if (textRotation >= 0 && textRotation < 90) {\n textDiv.style.transform = scaleString;\n }\n else if ((textRotation == 90) || (textRotation == 270)) {\n if ((textRotation == 270)) {\n textDiv.style.left = (bounds.X * this.pdfViewerBase.getZoomFactor()) + \"px\";\n textDiv.style.top = ((bounds.Y + bounds.Width) * this.pdfViewerBase.getZoomFactor()) + \"px\";\n textDiv.style.height = (bounds.Height * this.pdfViewerBase.getZoomFactor()) + \"px\";\n textDiv.style.fontSize = (bounds.Height * this.pdfViewerBase.getZoomFactor()) + \"px\";\n }\n else {\n textDiv.style.left = ((bounds.X + bounds.Width) * this.pdfViewerBase.getZoomFactor()) + \"px\";\n textDiv.style.top = (bounds.Y * this.pdfViewerBase.getZoomFactor()) + \"px\";\n textDiv.style.height = (bounds.Width * this.pdfViewerBase.getZoomFactor()) + \"px\";\n textDiv.style.fontSize = (bounds.Width * this.pdfViewerBase.getZoomFactor()) + \"px\";\n textDiv.style.transformOrigin = '0% 0%';\n }\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + 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 textRotation = textRotation + 90;\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, rotation) {\n textDiv.style.left = left * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.top = top * this.pdfViewerBase.getZoomFactor() + 'px';\n var textHeight;\n if (rotation === 90) {\n textHeight = width * this.pdfViewerBase.getZoomFactor();\n }\n else {\n textHeight = height * this.pdfViewerBase.getZoomFactor();\n }\n textDiv.style.height = textHeight + 'px';\n textDiv.style.fontSize = textHeight + '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 */\n this.contextMenuObj.open(top, left, target);\n /* eslint-enable */\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.retryTimeout = 0;\n this.pdfViewer = pdfviewer;\n this.retryCount = pdfviewer.retryCount;\n this.retryStatusCodes = pdfviewer.retryStatusCodes;\n this.retryTimeout = 1000 * pdfviewer.retryTimeout;\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 this.httpRequest.timeout = this.retryTimeout;\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, false);\n }\n if (!isSkip) {\n _this.stateChange(_this);\n }\n };\n this.httpRequest.ontimeout = function () {\n var isSkip = false;\n // tslint: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, true);\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, isTimeout) {\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 || isTimeout) {\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 */\n this.httpRequest.open(this.type, this.url, this.mode);\n /* eslint-enable */\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 this.issaveTypeSignature = false;\n this.issaveImageSignature = false;\n this.issaveTypeInitial = false;\n this.issaveImageInitial = false;\n this.saveSignatureTypeString = '';\n this.saveInitialTypeString = '';\n this.saveTypeString = '';\n this.signatureTypeString = '';\n this.initialTypeString = '';\n this.saveUploadString = '';\n this.saveSignatureUploadString = '';\n this.saveInitialUploadString = '';\n this.signatureUploadString = '';\n this.initialUploadString = '';\n this.clearUploadString = false;\n this.textValue = '';\n this.signatureDrawString = '';\n this.initialDrawString = '';\n // eslint-disable-next-line\n this.signatureTextContentTop = 0.2;\n // eslint-disable-next-line\n this.signatureTextContentLeft = 0.7;\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.signatureDrawString;\n }\n else if (this.pdfViewerBase.isInitialField && this.isSaveInitial) {\n image_1.src = this.initialDrawString;\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.drawSavedTypeSignature = function () {\n var output = '';\n if (!this.pdfViewerBase.isToolbarSignClicked && (this.issaveTypeSignature || this.issaveTypeInitial)) {\n if (!this.pdfViewerBase.isInitialField && this.issaveTypeSignature) {\n output = this.saveSignatureTypeString;\n }\n else {\n output = this.saveInitialTypeString;\n }\n }\n return output;\n };\n \n Signature.prototype.drawSavedImageSignature = function () {\n var output = '';\n if (!this.pdfViewerBase.isToolbarSignClicked && (this.issaveImageSignature || this.issaveImageInitial)) {\n if (!this.pdfViewerBase.isInitialField && this.issaveImageSignature) {\n output = this.saveSignatureUploadString;\n }\n else {\n output = this.saveInitialUploadString;\n }\n }\n return output;\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 = document.getElementById('checkbox');\n var typeCheckbox = document.getElementById('checkbox1');\n var imageCheckbox = document.getElementById('checkbox2');\n var isSignatureAdded = false;\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) {\n if (checkbox.checked) {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = true;\n this.signatureDrawString = this.saveImageString;\n this.saveSignatureString = this.outputString;\n }\n else {\n this.isSaveInitial = true;\n this.initialDrawString = 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 }\n this.saveTypeSignature(typeCheckbox);\n this.saveUploadSignature(imageCheckbox);\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 (type) {\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 var checkbox = document.getElementById('checkbox');\n var typeCheckbox = document.getElementById('checkbox1');\n var imageCheckbox = document.getElementById('checkbox2');\n var isSignatureAdded = false;\n if (!isSignatureAdded) {\n this.saveDrawSignature(checkbox);\n this.saveUploadSignature(imageCheckbox);\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveTypeString = canvas.toDataURL();\n this.updateSignatureTypeValue();\n if (typeCheckbox && typeCheckbox.checked) {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = true;\n this.signatureImageString = this.saveTypeString;\n this.saveSignatureTypeString = this.textValue;\n this.issaveTypeSignature = true;\n }\n else {\n this.isSaveInitial = true;\n this.initialImageString = this.saveTypeString;\n this.saveInitialTypeString = this.textValue;\n this.issaveTypeInitial = true;\n }\n }\n else {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = false;\n this.saveSignatureTypeString = '';\n this.issaveTypeSignature = false;\n }\n else {\n this.isSaveInitial = false;\n this.saveInitialTypeString = '';\n this.issaveTypeInitial = false;\n }\n }\n if (!this.pdfViewerBase.isInitialField) {\n this.signatureTypeString = this.saveTypeString;\n }\n else {\n this.initialTypeString = this.saveTypeString;\n }\n this.pdfViewer.formFieldsModule.drawSignature('Type', this.textValue, this.pdfViewerBase.currentTarget);\n isSignatureAdded = true;\n this.hideSignaturePanel();\n }\n }\n };\n Signature.prototype.imageAddSignature = function (type) {\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 var checkbox = document.getElementById('checkbox');\n var typeCheckbox = document.getElementById('checkbox1');\n var imageCheckbox = document.getElementById('checkbox2');\n var isSignatureAdded = false;\n if (!isSignatureAdded) {\n this.saveDrawSignature(checkbox);\n this.saveTypeSignature(typeCheckbox);\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveUploadString = canvas.toDataURL();\n if (imageCheckbox && imageCheckbox.checked) {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = true;\n this.signatureImageString = this.saveUploadString;\n this.saveSignatureUploadString = this.outputString;\n this.issaveImageSignature = true;\n }\n else {\n this.isSaveInitial = true;\n this.initialImageString = this.saveUploadString;\n this.saveInitialUploadString = this.outputString;\n this.issaveImageInitial = true;\n }\n }\n else {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = false;\n this.saveSignatureUploadString = '';\n this.issaveImageSignature = false;\n }\n else {\n this.isSaveInitial = false;\n this.saveInitialUploadString = '';\n this.issaveImageInitial = false;\n }\n }\n if (!this.pdfViewerBase.isInitialField) {\n this.signatureUploadString = this.saveUploadString;\n }\n else {\n this.initialUploadString = this.saveUploadString;\n }\n this.pdfViewer.formFieldsModule.drawSignature('Image', '', this.pdfViewerBase.currentTarget);\n isSignatureAdded = true;\n this.hideSignaturePanel();\n }\n }\n };\n Signature.prototype.saveDrawSignature = function (checkbox) {\n if (checkbox) {\n if (checkbox.checked) {\n if (this.drawOutputString !== '') {\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveImageString = canvas.toDataURL();\n if (!this.pdfViewerBase.isInitialField) {\n this.saveSignatureString = this.drawOutputString;\n this.signatureDrawString = this.saveImageString;\n }\n else {\n this.saveInitialString = this.drawOutputString;\n this.initialDrawString = this.saveImageString;\n }\n this.checkSaveFiledSign(this.pdfViewerBase.isInitialField, true);\n }\n }\n else {\n if (!this.pdfViewerBase.isInitialField) {\n this.saveSignatureString = '';\n }\n else {\n this.saveInitialString = '';\n }\n this.checkSaveFiledSign(this.pdfViewerBase.isInitialField, false);\n }\n }\n };\n Signature.prototype.saveTypeSignature = function (typeCheckbox) {\n if (typeCheckbox) {\n if (typeCheckbox.checked) {\n this.updateSignatureTypeValue();\n if (this.textValue !== '') {\n if (!this.pdfViewerBase.isInitialField) {\n this.issaveTypeSignature = true;\n this.saveSignatureTypeString = this.textValue;\n }\n else {\n this.issaveTypeInitial = true;\n this.saveInitialTypeString = this.textValue;\n }\n }\n }\n else {\n if (!this.pdfViewerBase.isInitialField) {\n this.saveSignatureTypeString = '';\n this.issaveTypeSignature = false;\n }\n else {\n this.saveInitialTypeString = '';\n this.issaveTypeInitial = false;\n }\n }\n }\n };\n Signature.prototype.saveUploadSignature = function (imageCheckbox) {\n if (imageCheckbox) {\n if (imageCheckbox.checked) {\n var imageCanvas = document.getElementById(this.pdfViewer.element.id + '_signatureuploadCanvas_');\n var uploadString = imageCanvas.toDataURL();\n var imageString = document.getElementById(this.pdfViewer.element.id + '_e-pv-upload-button').style.visibility === 'hidden' ? uploadString : '';\n if (imageString !== '') {\n if (!this.pdfViewerBase.isInitialField) {\n this.issaveImageSignature = true;\n this.saveSignatureUploadString = imageString;\n }\n else {\n this.issaveImageInitial = true;\n this.saveInitialUploadString = imageString;\n }\n }\n }\n else {\n if (!this.pdfViewerBase.isInitialField) {\n this.saveSignatureUploadString = '';\n this.issaveImageSignature = false;\n }\n else {\n this.saveInitialUploadString = '';\n this.issaveImageInitial = false;\n }\n }\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 (this.pdfViewerBase.isToolbarSignClicked) {\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 }\n else {\n if (isType) {\n this.signtypevalue = fontElements[parseInt(j.toString(), 10)].textContent;\n this.textValue = fontElements[parseInt(j.toString(), 10)].textContent;\n }\n else {\n this.textValue = fontElements[parseInt(j.toString(), 10)].textContent;\n }\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 if (!this.pdfViewerBase.isInitialField && this.issaveTypeSignature && !this.pdfViewerBase.isToolbarSignClicked) {\n inputText.value = this.drawSavedTypeSignature();\n }\n else if (this.pdfViewerBase.isInitialField && this.issaveTypeInitial && !this.pdfViewerBase.isToolbarSignClicked) {\n inputText.value = this.drawSavedTypeSignature();\n }\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 fontDiv.style.paddingRight = '0px';\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 if (this.issaveTypeSignature && !this.pdfViewerBase.isInitialField && !this.pdfViewerBase.isToolbarSignClicked) {\n checkBoxObj.checked = true;\n }\n else if (this.issaveTypeInitial && this.pdfViewerBase.isInitialField && !this.pdfViewerBase.isToolbarSignClicked) {\n checkBoxObj.checked = true;\n }\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 var imageUploadString = '';\n if (!this.pdfViewerBase.isInitialField && this.issaveImageSignature && !this.pdfViewerBase.isToolbarSignClicked) {\n imageUploadString = this.drawSavedImageSignature();\n }\n else if (this.pdfViewerBase.isInitialField && this.issaveImageInitial && !this.pdfViewerBase.isToolbarSignClicked) {\n imageUploadString = this.drawSavedImageSignature();\n }\n if (imageUploadString !== '' && !this.pdfViewerBase.isToolbarSignClicked) {\n this.clearUploadString = false;\n var ctx_1 = uploadCanvas.getContext('2d');\n var image_2 = new Image();\n image_2.src = imageUploadString;\n image_2.onload = function () {\n ctx_1.drawImage(image_2, 0, 0, uploadCanvas.width, uploadCanvas.height);\n };\n uploadButton.element.style.display = 'hidden';\n }\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 if (this.issaveImageSignature && !this.pdfViewerBase.isInitialField && !this.pdfViewerBase.isToolbarSignClicked) {\n checkBoxObj.checked = true;\n }\n else if (this.issaveImageInitial && this.pdfViewerBase.isInitialField && !this.pdfViewerBase.isToolbarSignClicked) {\n checkBoxObj.checked = true;\n }\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 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 var textbox = document.getElementById(this.pdfViewer.element.id + '_e-pv-Signtext-box');\n if (!this.pdfViewerBase.isInitialField && this.saveSignatureTypeString !== '' && textbox.value !== '' && !this.pdfViewerBase.isToolbarSignClicked) {\n this.renderSignatureText();\n }\n else if (this.pdfViewerBase.isInitialField && this.saveInitialTypeString !== '' && textbox.value !== '' && !this.pdfViewerBase.isToolbarSignClicked) {\n this.renderSignatureText();\n }\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 var signbutton = document.getElementById(this.pdfViewer.element.id + '_e-pv-upload-button');\n if (this.saveSignatureUploadString !== \"\" && !this.pdfViewerBase.isInitialField && !this.clearUploadString && !this.pdfViewerBase.isToolbarSignClicked) {\n this.enableCreateButton(false);\n signbutton.style.visibility = 'hidden';\n this.outputString = this.saveSignatureUploadString;\n }\n if (this.saveInitialUploadString !== \"\" && this.pdfViewerBase.isInitialField && !this.clearUploadString && !this.pdfViewerBase.isToolbarSignClicked) {\n this.enableCreateButton(false);\n signbutton.style.visibility = 'hidden';\n this.outputString = this.saveInitialUploadString;\n }\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.pdfViewerBase.isToolbarSignClicked || this.signaturetype !== 'Type') {\n if (this.outputString !== \"\") {\n this.enableCreateButton(false);\n }\n else {\n this.enableCreateButton(true);\n }\n }\n else {\n if (this.textValue !== \"\") {\n this.enableCreateButton(false);\n }\n else {\n this.enableCreateButton(true);\n }\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.fontName !== \"\" && this.signfontStyle[parseInt(i.toString(), 10)].FontName === this.fontName) {\n this.fontsign[parseInt(i.toString(), 10)].style.borderColor = 'red';\n }\n else if (isNullOrUndefined(this.fontName) && 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 var context_2 = canvas.getContext('2d');\n var canvasContent = canvas.toDataURL();\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 var image_3 = new Image();\n image_3.src = canvasContent;\n image_3.onload = function () {\n context_2.drawImage(image_3, 0, 0, canvas.width, canvas.height);\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 var checkbox = document.getElementById('checkbox');\n var checkBoxElement = document.getElementById('checkbox');\n if (checkbox && checkBoxElement.nextElementSibling) {\n checkBoxElement.nextElementSibling.classList.remove('e-check');\n checkbox.checked = false;\n }\n }\n else if (this.signaturetype === 'Type') {\n isClearTypeTab = true;\n var checkbox = document.getElementById('checkbox1');\n var checkBoxElement = document.getElementById('checkbox1');\n if (checkbox && checkBoxElement.nextElementSibling) {\n checkBoxElement.nextElementSibling.classList.remove('e-check');\n checkbox.checked = false;\n this.textValue = '';\n }\n }\n else {\n isClearImageTab = true;\n this.clearUploadString = true;\n var checkbox = document.getElementById('checkbox2');\n var checkBoxElement = document.getElementById('checkbox2');\n if (checkbox && checkBoxElement.nextElementSibling) {\n checkBoxElement.nextElementSibling.classList.remove('e-check');\n checkbox.checked = false;\n }\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 if (this.pdfViewer.isSignatureEditable) {\n var signatureSettings = this.pdfViewer.handWrittenSignatureSettings;\n var annotationSettings = this.pdfViewer.annotationSettings;\n var annotationAuthor = (signatureSettings.author !== 'Guest') ? signatureSettings.author : annotationSettings.author ? annotationSettings.author : 'Guest';\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[parseInt(z.toString(), 10)].author = annotationAuthor;\n }\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 var zoomvalue = this.pdfViewerBase.getZoomFactor();\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 if (annotations.shapeAnnotationType === 'SignatureText' && annotations.wrapper && annotations.wrapper.children[1]) {\n left = left + annotations.wrapper.pivot.x + (this.signatureTextContentLeft - (this.signatureTextContentTop * (zoomvalue - (zoomvalue / this.signatureTextContentLeft))));\n top = top + ((annotations.wrapper.children[1].bounds.y - top) - (annotations.wrapper.children[1].bounds.y - top) / 3) + annotations.wrapper.pivot.y + (this.signatureTextContentTop * zoomvalue);\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 var zoomvalue = this.pdfViewerBase.getZoomFactor();\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 var top_2 = void 0;\n var left = void 0;\n if (annotationBase.shapeAnnotationType === 'SignatureText' && annotationBase.wrapper && annotationBase.wrapper.children[1]) {\n top_2 = annotationBase.wrapper.children[0].bounds.y;\n left = annotationBase.wrapper.children[0].bounds.x + annotationBase.wrapper.pivot.x + (this.signatureTextContentLeft - (this.signatureTextContentTop * (zoomvalue - (zoomvalue / this.signatureTextContentLeft))));\n top_2 = top_2 + ((annotationBase.wrapper.children[1].bounds.y - top_2) - (annotationBase.wrapper.children[1].bounds.y - top_2) / 3) + annotationBase.wrapper.pivot.y + (this.signatureTextContentTop * zoomvalue);\n pageAnnotations[parseInt(i.toString(), 10)].bounds = { left: left, top: top_2, width: annotationBase.bounds.width, height: annotationBase.bounds.height };\n }\n else {\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 }\n // eslint-disable-next-line max-len\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 (!isNullOrUndefined(index) && 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;\n if (this.pdfViewer.initialRenderPages > 10) {\n limit = this.pdfViewer.initialRenderPages <= this.pdfViewerBase.pageCount ? this.pdfViewer.initialRenderPages : this.pdfViewerBase.pageCount;\n }\n else {\n limit = this.pdfViewerBase.pageCount < 10 ? this.pdfViewerBase.pageCount : 10;\n }\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 if (this.pdfViewerBase.isMixedSizeDocument && (this.pdfViewerBase.highestWidth * this.pdfViewerBase.getZoomFactor()) > this.pdfViewerBase.viewerContainer.clientWidth) {\n this.pdfViewerBase.viewerContainer.scrollLeft = (this.pdfViewerBase.pageContainer.offsetWidth - this.pdfViewerBase.viewerContainer.clientWidth) / 2;\n }\n else {\n this.pdfViewerBase.viewerContainer.scrollLeft += scrollX_1 * scaleCorrectionFactor;\n }\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 if (this.pdfViewerBase.isMixedSizeDocument && (this.pdfViewerBase.highestWidth * this.pdfViewerBase.getZoomFactor()) > this.pdfViewerBase.viewerContainer.clientWidth) {\n this.pdfViewerBase.viewerContainer.scrollLeft = (this.pdfViewerBase.pageContainer.offsetWidth - this.pdfViewerBase.viewerContainer.clientWidth) / 2;\n }\n else {\n this.pdfViewerBase.viewerContainer.scrollLeft += scrollX_2 * scaleCorrectionFactor;\n }\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 if (Browser.isDevice) {\n if (this.pdfViewer.formDesignerModule) {\n var fomrFieldCollection = void 0;\n var pageNumber_1 = this.pdfViewer.currentPageNumber;\n fomrFieldCollection = this.pdfViewer.formFieldCollection.filter(function (data) { return data.pageNumber === pageNumber_1; });\n for (var i = 0; i < fomrFieldCollection.length; i++) {\n document.querySelectorAll(\"[id^=\" + fomrFieldCollection[parseInt(i.toString(), 10)].id + \"]\").forEach(function (formField) { return formField.style.display = 'none'; });\n }\n }\n else {\n document.querySelectorAll(\"[id^=\\\"pdfViewerinput_\\\"]\").forEach(function (formField) { return formField.parentElement.style.display = 'none'; });\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 && annotationModule.inkAnnotationModule.outputString !== '') {\n // eslint-disable-next-line\n annotationModule.inkAnnotationModule.inkPathDataCollection.push({ pathData: annotationModule.inkAnnotationModule.outputString, zoomFactor: annotationModule.inkAnnotationModule.inkAnnotationInitialZoom });\n annotationModule.inkAnnotationModule.outputString = '';\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 if (this.pdfViewer.initialRenderPages > this.pdfViewerBase.pageRenderCount) {\n lowerPageValue = 0;\n higherPageValue = (higherPageValue < this.pdfViewer.initialRenderPages) ? (this.pdfViewer.initialRenderPages <= this.pdfViewerBase.pageCount) ? this.pdfViewer.initialRenderPages : this.pdfViewerBase.pageCount : (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n }\n else {\n lowerPageValue = (lowerPageValue > 0) ? lowerPageValue : 0;\n higherPageValue = (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n }\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 var _this = this;\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 setTimeout(function () { _this.isMagnified = false; }, 500);\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 if (this.pdfViewer.magnificationModule) {\n this.pdfViewer.magnificationModule.resizeCanvas(pageNumber);\n }\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 var redirect = proxy.pdfViewerBase.checkRedirection(data);\n if (!redirect) {\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 };\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 if (this.pdfViewer.isFormDesignerToolbarVisible) {\n this.pdfViewer.designerMode = true;\n this.pdfViewer.formDesignerModule.setMode(\"designer\");\n this.adjustViewer(false);\n this.toolbarElement.style.display = '';\n this.isToolbarHidden = false;\n this.adjustViewer(true);\n this.primaryToolbar.selectItem(this.primaryToolbar.formDesignerItem);\n this.pdfViewer.isFormDesignerToolbarVisible = true;\n }\n else {\n this.toolbarElement.style.display = 'none';\n this.isToolbarHidden = true;\n if (!this.pdfViewer.isAnnotationToolbarVisible) {\n this.adjustViewer(true);\n }\n this.primaryToolbar.deSelectItem(this.primaryToolbar.formDesignerItem);\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 if (!isNullOrUndefined(this.undoItem) && !isNullOrUndefined(this.undoItem.parentElement)) {\n this.enableCollectionAvailable(this.pdfViewer.annotationModule.actionCollection, this.undoItem.parentElement);\n }\n if (!isNullOrUndefined(this.redoItem) && !isNullOrUndefined(this.redoItem.parentElement)) {\n this.enableCollectionAvailable(this.pdfViewer.annotationModule.redoCollection, this.redoItem.parentElement);\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 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 var proxy = this;\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: proxy.pdfViewer.localeObj.getConstant('Fit Page'), id: '9' }, { percent: proxy.pdfViewer.localeObj.getConstant('Fit Width'), id: '10' }, { percent: proxy.pdfViewer.localeObj.getConstant('Automatic'), id: '11' }\n ];\n // eslint-disable-next-line max-len\n if (!proxy.pdfViewer.enableRtl) {\n proxy.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: proxy.openZoomDropdown.bind(proxy), select: function (args) {\n if (args.e.type == 'keydown' && args.itemData.percent !== proxy.zoomDropDown.element.value) {\n proxy.zoomDropDownChange(proxy.zoomDropDown.element.value);\n args.cancel = true;\n }\n }\n });\n }\n else {\n proxy.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: proxy.openZoomDropdown.bind(proxy), select: function (args) {\n if (args.e.type == 'keydown' && args.itemData.percent !== proxy.zoomDropDown.element.value) {\n proxy.zoomDropDownChange(proxy.zoomDropDown.element.value);\n args.cancel = true;\n }\n }\n });\n }\n proxy.zoomDropDown.appendTo(proxy.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: initializeCSPTemplate(function () { return 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 var commentPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (!isNullOrUndefined(commentPanel) && !isNullOrUndefined(this.pdfViewerBase.navigationPane)) {\n if (commentPanel.style.display === 'block') {\n this.pdfViewerBase.navigationPane.closeCommentPanelContainer();\n }\n }\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 if (!this.pdfViewer.enableRtl) {\n this.thicknessDropDown.open = this.thicknessDropDownOpen.bind(this);\n }\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 if (!this.pdfViewer.enableRtl) {\n this.opacityDropDown.open = this.opacityDropDownOpen.bind(this);\n }\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 if (!this.pdfViewer.enableRtl) {\n this.opacityDropDown.open = this.opacityDropDownOpen.bind(this);\n }\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 if (!this.pdfViewer.enableRtl) {\n this.thicknessDropDown.open = this.thicknessDropDownOpen.bind(this);\n }\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: initializeCSPTemplate(function (data) { return \"\" + data.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: initializeCSPTemplate(function (data) { return \"\" + data.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.updateToolbarItems();\n // eslint-disable-next-line max-len\n if ((this.pdfViewer.isAnnotationToolbarOpen || this.pdfViewer.isAnnotationToolbarVisible) && this.pdfViewer.enableAnnotationToolbar) {\n this.adjustViewer(false);\n this.toolbarElement.style.display = '';\n this.isToolbarHidden = false;\n this.adjustViewer(true);\n this.primaryToolbar.selectItem(this.primaryToolbar.annotationItem);\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.refreshOverflow();\n }\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 * enableTileRendering: false,\n * x: 0,\n * y: 0\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.contextMenuSettings = {\n * contextMenuAction: 'RightClick',\n * contextMenuItems: [\n * ContextMenuItem.Comment,\n * ContextMenuItem.Copy,\n * ContextMenuItem.Cut,\n * ContextMenuItem.Delete,\n * ContextMenuItem.Highlight,\n * ContextMenuItem.Paste,\n * ContextMenuItem.Properties,\n * ContextMenuItem.ScaleRatio,\n * ContextMenuItem.Strikethrough,\n * ContextMenuItem.Underline\n * ]\n * };\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 Object.defineProperty(PdfViewer.prototype, \"accessibilityTags\", {\n /**\n * Gets the Accessibility Tags object of the pdf viewer.\n *\n * @asptype AccessibilityTags\n * @blazorType AccessibilityTags\n * @returns { AccessibilityTags }\n */\n get: function () {\n return this.accessibilityTagsModule;\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 (!Browser.isDevice || this.enableDesktopMode) {\n if (this.toolbarModule && this.formDesignerModule && !oldProp.isFormDesignerToolbarVisible && newProp.isFormDesignerToolbarVisible) {\n if (this.toolbarModule.annotationToolbarModule && this.isAnnotationToolbarVisible) {\n this.isAnnotationToolbarVisible = false;\n this.toolbarModule.annotationToolbarModule.showAnnotationToolbar();\n }\n this.toolbarModule.formDesignerToolbarModule.resetFormDesignerToolbar();\n }\n else {\n if (!isNullOrUndefined(this.toolbarModule) && !isNullOrUndefined(this.formDesignerModule) && this.toolbarModule.formDesignerToolbarModule && !this.isFormDesignerToolbarVisible) {\n this.isFormDesignerToolbarVisible = false;\n this.formDesignerModule.setMode('edit');\n this.toolbarModule.formDesignerToolbarModule.resetFormDesignerToolbar();\n }\n }\n }\n break;\n case 'isAnnotationToolbarVisible':\n if (!Browser.isDevice || this.enableDesktopMode) {\n if (this.toolbarModule && this.annotationModule && !oldProp.isAnnotationToolbarVisible && newProp.isAnnotationToolbarVisible) {\n if (this.toolbarModule.formDesignerToolbarModule && this.isFormDesignerToolbarVisible) {\n this.isFormDesignerToolbarVisible = false;\n this.toolbarModule.formDesignerToolbarModule.showFormDesignerToolbar();\n }\n this.toolbarModule.annotationToolbarModule.resetToolbar();\n }\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 modules.push({\n member: 'AccessibilityTags', args: [this, this.viewerBase]\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 (this.viewerBase.isSignaturePathData(fieldValue.value)) {\n fieldValue.signatureType = 'Path';\n }\n else if (this.viewerBase.isSignatureImageData(fieldValue.value)) {\n fieldValue.signatureType = 'Image';\n }\n else {\n fieldValue.signatureType = '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 var _loop_1 = function () {\n var currentData = FormFieldsData[m];\n var fieldName;\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 //map the signature field and its data object to find the signature field name.\n var fieldData = FormFieldsData.filter(function (item) { return item.FieldName === currentData.FieldName.split('_')[0]; });\n if (!isNullOrUndefined(fieldData) && !isNullOrUndefined(fieldData[0])) {\n if (fieldData[0].Name === \"SignatureField\" || fieldData[0].Name === \"InitialField\") {\n fieldName = currentData.FieldName.split('_')[0];\n currentData.LineBounds = FormFieldsData.filter(function (item) { return item.FieldName === fieldName; })[0].LineBounds;\n }\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_1.updateSignatureValue(currentData, fieldValue);\n }\n }\n this_1.formFieldsModule.updateFormFieldsCollection(currentData);\n }\n };\n var this_1 = this;\n for (var m = 0; m < FormFieldsData.length; m++) {\n _loop_1();\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 = this.viewerBase.isSignatureImageData(fieldValue.value) ? 'Image' : (this.viewerBase.isSignaturePathData(fieldValue.value) ? '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 if (annotationDataFormat == 'Json') {\n if (importData.includes('pdfAnnotation')) {\n this.importAnnotationsAsJson(importData);\n }\n else if (importData.split('.')[1] === 'json') {\n this.viewerBase.isPDFViewerJson = true;\n this.viewerBase.importAnnotations(importData, annotationDataFormat, isXfdfFile);\n }\n else {\n var newImportData = importData.split(',')[1] ? importData.split(',')[1] : importData.split(',')[0];\n importData = decodeURIComponent(escape(atob(newImportData)));\n this.importAnnotationsAsJson(importData);\n }\n }\n else {\n this.viewerBase.importAnnotations(importData, annotationDataFormat, isXfdfFile);\n }\n }\n }\n else {\n if (importData.split('.')[1] === 'json') {\n if (importData.includes('pdfAnnotation')) {\n this.importAnnotationsAsJson(importData);\n }\n else {\n var newImportData = importData.split(',')[1] ? importData.split(',')[1] : importData.split(',')[0];\n importData = decodeURIComponent(escape(atob(newImportData)));\n this.importAnnotationsAsJson(importData);\n }\n }\n else {\n this.viewerBase.importAnnotations(importData, AnnotationDataFormat.Xfdf, isXfdfFile);\n }\n }\n }\n else {\n var imporedAnnotation = importData.pdfAnnotation;\n if (typeof (importData) === 'object' && !isNullOrUndefined(imporedAnnotation) && !isNullOrUndefined(Object.keys(imporedAnnotation)) && !isNullOrUndefined(Object.keys(imporedAnnotation)[0]) && Object.keys(imporedAnnotation[Object.keys(imporedAnnotation)[0]]).length > 1) {\n this.viewerBase.importAnnotations(importData);\n }\n else {\n importData = JSON.stringify(importData);\n this.viewerBase.isPDFViewerJson = false;\n this.viewerBase.importAnnotations(btoa(importData), AnnotationDataFormat.Json);\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewer.prototype.importAnnotationsAsJson = function (importData) {\n var jsonData = JSON.parse(importData);\n var firstAnnotation = jsonData.pdfAnnotation[Object.keys(jsonData.pdfAnnotation)[0]];\n if ((Object.keys(jsonData.pdfAnnotation).length >= 1) && (firstAnnotation.textMarkupAnnotation || firstAnnotation.measureShapeAnnotation || firstAnnotation.freeTextAnnotation || firstAnnotation.stampAnnotations || firstAnnotation.signatureInkAnnotation || (firstAnnotation.shapeAnnotation && firstAnnotation.shapeAnnotation[0].Bounds))) {\n this.viewerBase.isPDFViewerJson = true;\n this.viewerBase.importAnnotations(jsonData, AnnotationDataFormat.Json);\n }\n else {\n this.viewerBase.isPDFViewerJson = false;\n this.viewerBase.importAnnotations(btoa(importData), AnnotationDataFormat.Json);\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 *@param {AnnotationDataFormat} annotationDataFormat - Export the annotation based on the format.\n \n * @returns Promise\n */\n PdfViewer.prototype.exportAnnotationsAsObject = function (annotationDataFormat) {\n var _this = this;\n if (annotationDataFormat === void 0) { annotationDataFormat = AnnotationDataFormat.Json; }\n if (this.annotationModule) {\n return new Promise(function (resolve, reject) {\n _this.viewerBase.exportAnnotationsAsObject(annotationDataFormat).then(function (value) {\n resolve(value);\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 (formFieldDataFormat === void 0) { formFieldDataFormat = FormFieldDataFormat.Json; }\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, cancel: false };\n this.trigger('exportStart', eventArgs);\n if (eventArgs.cancel) {\n return false;\n }\n else {\n return true;\n }\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, cancel: false };\n this.trigger('exportStart', eventArgs);\n if (eventArgs.cancel) {\n return false;\n }\n else {\n return true;\n }\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(0)\n ], PdfViewer.prototype, \"retryTimeout\", void 0);\n __decorate$2([\n Property(2)\n ], PdfViewer.prototype, \"initialRenderPages\", 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(true)\n ], PdfViewer.prototype, \"enableAccessibilityTags\", 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 var redirect = proxy.pdfViewerBase.checkRedirection(data);\n if (!redirect) {\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 };\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_1 = 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_1.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_1.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_1.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: initializeCSPTemplate(function (data) { return bookmarkIconView_1.outerHTML.replace('${Title}', data.Title); }),\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') && element.classList.contains('.e-active')) {\n element = element.querySelector('.e-active').querySelector('.e-fullrow');\n }\n else if (element.classList.contains('e-treeview')) {\n element = element.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') && element.classList.contains('.e-active')) {\n element = element.querySelector('.e-active').querySelector('.e-fullrow');\n }\n else if (element.classList.contains('e-treeview')) {\n element = element.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 var redirect = proxy.pdfViewerBase.checkRedirection(printImage);\n if (redirect) {\n proxy.pdfViewerBase.showPrintLoadingIndicator(false);\n }\n else {\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 }\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' || currentData.Name === 'CheckBox') {\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: initializeCSPTemplate(function () { return 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 var collectionData = this.pdfViewer.formFieldCollections;\n if (signatureFields.length === 0) {\n signatureFields = this.getSignField();\n }\n // eslint-disable-next-line\n var currentField;\n if (this.currentTarget) {\n if (this.pdfViewer.formDesignerModule) {\n for (var i = 0; i < collectionData.length; i++) {\n currentField = collectionData[i];\n if (this.currentTarget.id === currentField.id) {\n this.currentTarget = document.getElementById(currentField.id);\n this.getSignatureIndex(i, collectionData.length, isNextSignField);\n break;\n }\n }\n }\n else {\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 }\n else {\n if (nextSign) {\n if (this.pdfViewer.formDesignerModule) {\n currentField = signatureFields[0];\n if (currentField.id) {\n this.currentTarget = document.getElementById(currentField.id);\n this.getSignatureIndex(0, signatureFields.length, isNextSignField, true);\n }\n }\n else {\n currentField = 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 };\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 var collectionData = this.pdfViewer.formFieldCollections;\n // eslint-disable-next-line\n var currentField;\n if (curSignIndex < collectionData.length) {\n for (var i = 0; i < collectionData.length; i++) {\n if (this.pdfViewer.formDesignerModule) {\n var curSignIndexId = collectionData[curSignIndex].id;\n var signatureFieldData = collectionData[i];\n if (curSignIndexId === signatureFieldData.id) {\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 + 1);\n this.renderFormFields(pageIndex, false);\n }\n this.currentTarget = document.getElementById(signatureFieldData.id);\n currentField = signatureFieldData;\n break;\n }\n }\n else {\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_1 = signatureFieldData.PageIndex >= 0 ? signatureFieldData.PageIndex : signatureFieldData.pageNumber;\n var isRender_1 = this.pdfViewer.annotationModule.findRenderPageList(pageIndex_1);\n if (!isRender_1) {\n this.pdfViewer.navigation.goToPage(pageIndex_1 + 1);\n this.renderFormFields(pageIndex_1, false);\n }\n this.currentTarget = document.getElementById(signatureFieldData.uniqueID);\n currentField = signatureFieldData;\n break;\n }\n }\n }\n if (this.currentTarget === null) {\n var pageIndex_2 = currentField.PageIndex >= 0 ? currentField.PageIndex : currentField.pageNumber;\n this.pdfViewer.navigation.goToPage(pageIndex_2);\n this.currentTarget = document.getElementById(currentField.uniqueID);\n }\n if (this.currentTarget) {\n if (this.currentTarget.className === 'e-pdfviewer-signatureformfields-signature' && !(this.pdfViewer.formDesignerModule)) {\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' || this.currentTarget.className === 'e-pdfviewer-signatureformfields-signature') {\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' || currentData.Name === 'InitialField') {\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 if (this.pdfViewer.formDesignerModule) {\n var targetName = this.currentTarget && this.currentTarget.offsetParent ? this.currentTarget.offsetParent.name : this.currentTarget ? this.currentTarget.name : target.name ? target.name : target.offsetParent.name;\n }\n else {\n var targetName = this.currentTarget ? this.currentTarget.name : target.name ? target.name : target.offsetParent.name;\n }\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 zoomvalue = this.pdfViewerBase.getZoomFactor();\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.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 if (!(inputField.className === \"e-pdfviewer-signatureformfields e-pv-signature-focus\")) {\n inputField.remove();\n }\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.ActualFieldName === null && count && (currentData.Name === 'ink' || currentData.Name === 'SignatureField' || currentData.Name === 'SignatureImage' || currentData.Name === 'SignatureText') && (this.pdfViewer.formDesigner ? ((currentData.FieldName.split('_')[0]) === (signData.ActualFieldName) || (currentData.FieldName.split('_')[0]) === (signData.FieldName)) : ((currentData.FieldName.split('_')[0] === (signData.FieldName)) && !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 signData.Bounds = currentData.LineBounds;\n }\n if (currentData.ActualFieldName === null && count && (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 ((this.pdfViewerBase.isSignatureImageData(data.Value))) {\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 (this.pdfViewerBase.isSignaturePathData(data.Value)) {\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 else {\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 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 /**\n * @private\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' || currentData.Name === 'InitialField') {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.nameTable[currentData.uniqueID];\n if (annotation.propName !== 'annotations') {\n annotation = this.pdfViewer.nameTable[currentData.uniqueID + '_content'];\n }\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.annotation.deleteAnnotationById(annotation.id);\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.target.className === 'e-pv-checkbox-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 if (this.pdfViewer.selectedItems && !isNullOrUndefined(this.pdfViewer.selectedItems.annotations) && this.pdfViewer.selectedItems.annotations.length > 0 && this.pdfViewerBase.activeElements && !isNullOrUndefined(this.pdfViewerBase.activeElements.activePageID)) {\n this.pdfViewer.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n }\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], true);\n }\n if (collections[i].formFieldAnnotationType === 'Checkbox') {\n this.updateCheckboxFormDesignerProperties(collections[i], true);\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 var fillColor = '#daeaf7ff';\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 ? (obj.isMultiline ? 'default' : 'none') : 'default';\n if (obj.isReadonly) {\n inputElement.disabled = true;\n inputElement.style.cursor = 'default';\n inputElement.style.backgroundColor = obj.backgroundColor != fillColor ? obj.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 var fillColor = '#daeaf7ff';\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 = obj.backgroundColor != fillColor ? obj.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 var fillColor = '#daeaf7ff';\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 = obj.backgroundColor != fillColor ? obj.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 var fillColor = '#daeaf7ff';\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 = obj.backgroundColor != fillColor ? obj.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 var fillColor = '#daeaf7ff';\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 = obj.backgroundColor != fillColor ? obj.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 var fillColor = '#daeaf7ff';\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 = obj.backgroundColor != fillColor ? obj.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 _this = this;\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n if (data) {\n var formFieldsData = JSON.parse(data);\n // Get Formfields present in non rendered pages\n if (formFieldsData.length != this.pdfViewer.formFieldCollections.length) {\n var formFieldNotContains = this.pdfViewer.formFieldCollections.filter(function (_a) {\n var id1 = _a.id;\n return !_this.pdfViewer.formFieldCollection.some(function (_a) {\n var id2 = _a.id;\n return id2 === id1;\n });\n });\n for (var k = 0; k < formFieldNotContains.length; k++) {\n var items = this.loadedFormFieldValue(formFieldNotContains[k]);\n formFieldsData.push({ Key: items.id + \"_content\", FormField: items });\n }\n }\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 return (JSON.stringify(formFieldsData));\n }\n else {\n return null;\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.loadedFormFieldValue = function (currentData) {\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 var options = [];\n var dropListoptions = [];\n var selectedIndex = [];\n var finalSignBounds;\n var signType = '';\n this.data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (!isNullOrUndefined(this.data)) {\n this.formFieldsData = JSON.parse(this.data);\n if ((currentData.type === 'DropdownList' || currentData.type === 'ListBox')) {\n var dropListData = this.formFieldsData.filter(function (fieldData) { return (currentData.name === fieldData.FieldName); });\n if (dropListData.length > 0) {\n dropListoptions = dropListData[0].TextList;\n selectedIndex.push(dropListData[0].selectedIndex);\n for (var i_2 = 0; i_2 < dropListoptions.length; i_2++) {\n options.push({ itemName: dropListoptions[i_2], itemValue: dropListoptions[i_2] });\n }\n }\n }\n if ((currentData.type === 'InitialField' || currentData.type === 'SignatureField')) {\n this.formFieldsData = JSON.parse(this.data);\n var signData_1 = this.formFieldsData.filter(function (signfieldName) { return (currentData.name === signfieldName.FieldName); });\n if (signData_1.length > 0) {\n var boundsData = this.formFieldsData.filter(function (datafieldName) { return (datafieldName.Name === 'ink' || datafieldName.Name === 'SignatureField' || datafieldName.Name === 'SignatureImage' || datafieldName.Name === 'SignatureText') && (signData_1[0].FieldName === datafieldName.FieldName.split(\"_\")[0]); });\n for (var i = 0; i < boundsData.length; i++) {\n if ((signData_1[0].FieldName !== boundsData[i].FieldName)) {\n value = boundsData[i].Value;\n currentData.fontFamily = boundsData[i].FontFamily;\n currentData.fontSize = boundsData[i].FontSize;\n if (!signData_1.Bounds) {\n var signBounds = boundsData[i].LineBounds;\n var currentLeft = void 0;\n var currentTop = void 0;\n var currentWidth = void 0;\n var currentHeight = void 0;\n var currentPage = parseFloat(boundsData[i].PageIndex);\n if (signBounds.x || signBounds.y || signBounds.width || signBounds.height) {\n currentLeft = signBounds.x;\n currentTop = signBounds.y;\n currentWidth = signBounds.width;\n currentHeight = signBounds.height;\n }\n else {\n currentLeft = this.pdfViewer.formFieldsModule.ConvertPointToPixel(signBounds.X);\n currentTop = this.pdfViewer.formFieldsModule.ConvertPointToPixel(signBounds.Y);\n currentWidth = this.pdfViewer.formFieldsModule.ConvertPointToPixel(signBounds.Width);\n currentHeight = this.pdfViewer.formFieldsModule.ConvertPointToPixel(signBounds.Height);\n }\n var bound = { left: currentLeft, top: currentTop, width: currentWidth, height: currentHeight };\n finalSignBounds = this.pdfViewer.formFieldsModule.updateSignatureBounds(bound, currentPage, false);\n }\n if (boundsData[i].Name === \"SignatureImage\") {\n signType = 'Image';\n }\n if (boundsData[i].Name === \"ink\") {\n signType = 'Path';\n }\n if (boundsData[i].Name === \"SignatureText\") {\n signType = 'Text';\n }\n if (signType === 'Path') {\n var collectionData = processPathData(boundsData[i].Value);\n var csData = splitArrayCollection(collectionData);\n value = JSON.stringify(csData);\n }\n break;\n }\n }\n }\n }\n }\n var fieldProperties = {\n lineBound: { X: bounds.x, Y: bounds.y, Width: bounds.width, Height: bounds.height },\n pageNumber: parseFloat(currentData.pageIndex) + 1, name: currentData.name, tooltip: currentData.tooltip,\n value: value ? value : currentData.value, radiobuttonItem: [],\n signatureType: currentData.signatureType ? currentData.signatureType : signType, id: currentData.id,\n insertSpaces: currentData.insertSpaces ? currentData.insertSpaces : false, isChecked: currentData.isChecked ? currentData.isChecked : false,\n isSelected: currentData.isSelected ? currentData.isSelected : false, fontFamily: currentData.fontFamily,\n fontStyle: currentData.fontStyle, backgroundColor: backColor, fontColor: foreColor, borderColor: borderRGB, thickness: currentData.thickness,\n fontSize: currentData.fontSize, isMultiline: currentData.isMultiline ? currentData.isMultiline : false, rotation: 0,\n isReadOnly: currentData.isReadOnly ? currentData.isReadOnly : false,\n isRequired: currentData.isRequired ? currentData.isRequired : false, textAlign: currentData.alignment, formFieldAnnotationType: currentData.type,\n zoomvalue: 1, option: options, maxLength: currentData.maxLength ? currentData.maxLength : 0,\n visibility: currentData.visibility, font: { isItalic: false, isBold: false, isStrikeout: false, isUnderline: false }\n };\n if (finalSignBounds) {\n fieldProperties.signatureBound = finalSignBounds;\n }\n if (selectedIndex.length > 0) {\n fieldProperties.selectedIndex = selectedIndex;\n }\n if (currentData.type === 'RadioButton') {\n var field = {\n lineBound: { X: bounds.x, Y: bounds.y, Width: bounds.width, Height: bounds.height },\n pageNumber: parseFloat(currentData.pageIndex) + 1, name: currentData.name, tooltip: currentData.tooltip,\n value: currentData.value, signatureType: currentData.signatureType ? currentData.signatureType : '', id: currentData.id,\n isChecked: currentData.isChecked ? currentData.isChecked : false, isSelected: currentData.isSelected ? currentData.isSelected : false,\n fontFamily: currentData.fontFamily, fontStyle: currentData.fontStyle, backgroundColor: backColor,\n 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,\n textAlign: currentData.alignment, formFieldAnnotationType: currentData.type, zoomvalue: 1,\n maxLength: currentData.maxLength ? currentData.maxLength : 0, visibility: currentData.visibility,\n 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, false);\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, false);\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, updateValue, 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.formFieldValue || isUndoRedo) {\n this.updateValuePropertyChange(selectedItem, checkBoxElement, isUndoRedo, index, formFieldsData, updateValue);\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, updateValue, 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.formFieldValue || isUndoRedo) {\n this.updateValuePropertyChange(selectedItem, radioButton, isUndoRedo, index, formFieldsData, updateValue);\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, updateValue) {\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 if (updateValue) {\n isValueChanged = false;\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 }\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' && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType !== \"RadioButton\" && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType !== \"Checkbox\") {\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: initializeCSPTemplate(function () { return 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 collectiondata = this.pdfViewer.formFieldCollections;\n var dataCollection;\n for (var i = 0; i < collectiondata.length; i++) {\n dataCollection = collectiondata[i].type;\n if (dataCollection === \"SignatureField\" || dataCollection === \"InitialField\") {\n signatureFieldCollection.push(collectiondata[i]);\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 var fillColor = '#daeaf7ff';\n inputElement.disabled = isReadOnly;\n if (isReadOnly) {\n if (selectedItem.formFieldAnnotationType === 'RadioButton') {\n inputElement.parentElement.style.cursor = 'default';\n }\n else if (selectedItem.formFieldAnnotationType === 'SignatureField' || selectedItem.formFieldAnnotationType === 'InitialField') {\n var thickness = !isNullOrUndefined(selectedItem.thickness) ? 1 : selectedItem.thickness;\n inputElement.parentElement.style.borderWidth = thickness;\n }\n else {\n inputElement.style.cursor = 'default';\n }\n }\n if (selectedItem.formFieldAnnotationType === 'RadioButton') {\n inputElement.parentElement.style.backgroundColor = selectedItem.backgroundColor != fillColor ? selectedItem.backgroundColor : 'transparent';\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 inputElement.style.backgroundColor = selectedItem.backgroundColor != fillColor ? selectedItem.backgroundColor : 'transparent';\n inputElement.style.pointerEvents = selectedItem.isReadonly ? (selectedItem.isMultiline ? 'auto' : 'none') : 'auto';\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 * The 'AccessibilityTags' module helps to access the tagged layers in a PDF document for the users with disabilities.\n */\nvar AccessibilityTags = /** @__PURE__ @class */ (function () {\n /**\n * @param {PdfViewer} pdfViewer - The PdfViewer.\n * @param {PdfViewerBase} pdfViewerBase - The PdfViewerBase.\n * @private\n */\n function AccessibilityTags(pdfViewer, pdfViewerBase) {\n this.createTag = function (taggedTextResponse) {\n var _this = this;\n var tagType = taggedTextResponse.TagType;\n var parentTagType = taggedTextResponse.ParentTagType;\n var text = taggedTextResponse.Text;\n var altText = taggedTextResponse.AltText;\n var bounds = taggedTextResponse.Bounds;\n var childTags = taggedTextResponse.ChildElements;\n var textTag = document.createElement(this.getTag(tagType));\n textTag.style = \"padding:0px;margin:0px\";\n if (parentTagType != \"Document\" && parentTagType != \"Part\") {\n textTag.style.position = 'absolute';\n }\n if (bounds) {\n this.setStyleToTaggedTextDiv(textTag, bounds, taggedTextResponse.FontSize, taggedTextResponse.FontName, taggedTextResponse.FontStyle);\n this.setTextElementProperties(textTag);\n }\n if (text.trim() != \"\") {\n textTag.innerText = text;\n }\n if (altText && altText.trim() !== \"\" && (tagType === \"Image\" || tagType === \"Figure\")) {\n textTag.alt = altText;\n textTag.src = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNgYAAAAAMAASsJTYQAAAAASUVORK5CYII=\";\n }\n if (childTags && childTags.length > 0) {\n childTags.forEach(function (element) {\n if (tagType === \"Table\") {\n if (element.ChildElements) {\n element.ChildElements.forEach(function (newelement) {\n textTag.appendChild(_this.createTag(newelement));\n });\n }\n }\n else {\n textTag.appendChild(_this.createTag(element));\n }\n });\n }\n return textTag;\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n AccessibilityTags.prototype.addTaggedLayer = function (pageIndex) {\n var taggedLayer;\n if (this.pdfViewer.enableAccessibilityTags && this.pdfViewerBase.isTaggedPdf) {\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n taggedLayer = document.getElementById(this.pdfViewer.element.id + '_taggedLayer_' + pageIndex);\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n if (textLayer) {\n textLayer.setAttribute('aria-hidden', 'true');\n }\n if (!taggedLayer) {\n taggedLayer = createElement('div', { id: this.pdfViewer.element.id + '_taggedLayer_' + pageIndex, className: 'e-pv-tagged-layer e-pv-text-layer' });\n }\n taggedLayer.innerHTML = \"\";\n taggedLayer.style.width = this.pdfViewerBase.pageSize[parseInt(pageIndex.toString(), 10)].width * this.pdfViewerBase.getZoomFactor() + 'px';\n taggedLayer.style.height = this.pdfViewerBase.pageSize[parseInt(pageIndex.toString(), 10)].height * this.pdfViewerBase.getZoomFactor() + 'px';\n taggedLayer.style.pointerEvents = \"none\";\n if (pageDiv) {\n pageDiv.appendChild(taggedLayer);\n }\n }\n return taggedLayer;\n };\n /**\n * @param pageIndex\n * @private\n */\n AccessibilityTags.prototype.renderAccessibilityTags = function (pageIndex, taggedTextResponse) {\n var taggedLayer = this.addTaggedLayer(pageIndex);\n for (var i = 0; i < taggedTextResponse.length; i++) {\n var textDiv = createElement('div', { id: this.pdfViewer.element.id + '_taggedText_' + pageIndex + '_' + parseInt(i.toString(), 10), className: 'e-pv-text', attrs: { 'tabindex': '-1' } });\n var bounds = taggedTextResponse[parseInt(i.toString(), 10)].Bounds;\n if (taggedTextResponse[parseInt(parseInt(i.toString(), 10).toString(), 10)].TagType === \"Paragraph\" && taggedTextResponse[parseInt(i.toString(), 10)].ChildElements === null && taggedTextResponse[parseInt(i.toString(), 10)].Text.trim() === \"\") {\n continue;\n }\n else {\n textDiv.appendChild(this.createTag(taggedTextResponse[parseInt(i.toString(), 10)]));\n }\n textDiv.style.display = \"inline\";\n // eslint-disable-next-line max-len\n this.setStyleToTaggedTextDiv(textDiv, bounds, taggedTextResponse[parseInt(i.toString(), 10)].FontSize, taggedTextResponse[parseInt(i.toString(), 10)].FontName, taggedTextResponse[parseInt(i.toString(), 10)].FontStyle);\n this.setTextElementProperties(textDiv);\n taggedLayer.appendChild(textDiv);\n }\n };\n AccessibilityTags.prototype.getTag = function (tagType) {\n switch (tagType) {\n case \"Paragraph\":\n return \"p\";\n case \"Figure\":\n return \"img\";\n case \"Article\":\n return \"art\";\n case \"Annotation\":\n return \"annot\";\n case \"BibliographyEntry\":\n return \"bibentry\";\n case \"BlockQuotation\":\n return \"blockQuote\";\n case \"Caption\":\n return \"caption\";\n case \"Code\":\n return \"code\";\n case \"Division\":\n return \"div\";\n case \"Document\":\n return \"document\";\n case \"Form\":\n return \"form\";\n case \"Formula\":\n return \"formula\";\n case \"Index\":\n return \"index\";\n case \"Heading\":\n return \"h\";\n case \"HeadingLevel1\":\n return \"h1\";\n case \"HeadingLevel2\":\n return \"h2\";\n case \"HeadingLevel3\":\n return \"h3\";\n case \"HeadingLevel4\":\n return \"h4\";\n case \"HeadingLevel5\":\n return \"h5\";\n case \"HeadingLevel6\":\n return \"h6\";\n case \"Label\":\n return \"label\";\n case \"Link\":\n return \"a\";\n case \"List\":\n return \"ul\";\n case \"ListItem\":\n return \"li\";\n case \"ListBody\":\n return \"p\";\n case \"Note\":\n return \"note\";\n case \"Part\":\n return \"part\";\n case \"Quotation\":\n return \"quote\";\n case \"Reference\":\n return \"reference\";\n case \"Section\":\n return \"sect\";\n case \"Span\":\n return \"span\";\n case \"Table\":\n return \"table\";\n case \"TableDataCell\":\n return \"td\";\n case \"TableHeader\":\n return \"th\";\n case \"TableOfContent\":\n return \"toc\";\n case \"TableOfContentItem\":\n return \"toci\";\n case \"TableRow\":\n return \"tr\";\n case \"Image\":\n return \"img\";\n default:\n return \"p\";\n }\n };\n AccessibilityTags.prototype.setStyleToTaggedTextDiv = function (textDiv, bounds, fontSize, fontName, fontStyle) {\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n textDiv.style.left = this.pdfViewerBase.ConvertPointToPixel(bounds.X) * zoomFactor + 'px';\n textDiv.style.top = this.pdfViewerBase.ConvertPointToPixel(bounds.Y) * zoomFactor + 'px';\n textDiv.style.width = this.pdfViewerBase.ConvertPointToPixel(bounds.Width) * zoomFactor + 'px';\n var textHeight = this.pdfViewerBase.ConvertPointToPixel(bounds.Height) * zoomFactor;\n textDiv.style.height = textHeight + 'px';\n textDiv.style.fontSize = this.pdfViewerBase.ConvertPointToPixel(fontSize) * zoomFactor + 'px';\n if (fontName && (fontName === \"Wingdings\" || fontName === \"Symbol\")) {\n textDiv.style.fontFamily = \"Verdana\";\n }\n else if (fontName) {\n textDiv.style.fontFamily = fontName;\n }\n if (fontStyle) {\n textDiv.style.fontWeight = fontStyle;\n }\n textDiv.style.color = 'transparent';\n };\n AccessibilityTags.prototype.setTextElementProperties = function (textDiv) {\n textDiv.style.transformOrigin = '0%';\n };\n /**\n * @private\n */\n AccessibilityTags.prototype.getModuleName = function () {\n return 'AccessibilityTags';\n };\n /**\n * @private\n */\n AccessibilityTags.prototype.destroy = function () {\n return true;\n };\n return AccessibilityTags;\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, AccessibilityTags };\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 this.content = null;\n this.relateTo = null;\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 height = this.element.clientHeight;\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, height);\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, height) {\n if (height === void 0) { height = 0; }\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' && !ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else if (this.targetType === 'container' && ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - 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.updatePersistData = function () {\n if (this.enablePersistence) {\n this.setProperties({ width: parseFloat(this.element.style.width), height: parseFloat(this.element.style.height),\n position: { X: parseFloat(this.dragObj.element.style.left), Y: parseFloat(this.dragObj.element.style.top) } }, true);\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 this.updatePersistData();\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 _this.updatePersistData();\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 + '_title' });\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 this.updatePersistData();\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n this.updatePersistData();\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) && !isNullOrUndefined(oldProp.position.X) ? oldProp.position.X : this.position.X;\n var positionY = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.Y) ? oldProp.position.Y : this.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 this.updatePersistData();\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(['width', 'height', 'position']);\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, \"enablePersistence\", 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 : null;\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 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 };\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 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 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.addDataTooltipId = function (target, id) {\n attributes(target, { 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDataTooltipId = function (target) {\n target.removeAttribute('data-tooltip-id');\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 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 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 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 if (Object.keys(this.htmlAttributes).length !== 0) {\n for (var attr in this.htmlAttributes) {\n if (attr === \"class\") {\n this.tooltipEle.classList.add(this.htmlAttributes[\"\" + attr]);\n }\n else {\n this.tooltipEle.setAttribute(attr, this.htmlAttributes[\"\" + attr]);\n }\n }\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.addDataTooltipId(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.addDataTooltipId(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 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 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 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 if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\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 }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = this.isBodyContainer ?\n fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: true }, eleOffset) : eleOffset;\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) - (position.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 = position.left;\n eleOffset.top = position.top;\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 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 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.removeDataTooltipId(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 (!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 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 && !this.isSticky) {\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 }\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.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 if (this.element.nodeName !== \"BODY\") {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n else {\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 EventHandler.add(target, 'focus', this.targetHover, this);\n }\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 === 'focusin') {\n EventHandler.add(target, 'focusout', 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 }\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 }\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 if (this.element.nodeName === 'BODY') {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n else {\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 EventHandler.remove(target, 'focus', this.targetHover);\n }\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 EventHandler.remove(target, 'focusout', 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 var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\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 Property('')\n ], Tooltip.prototype, \"htmlAttributes\", 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_MAT3_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_MATERIAL3SPIN = 'e-spin-material3';\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 createMaterial3Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material3', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIAL3SPIN);\n mat_calculate_attributes(radius, container, 'Material3', CLS_MATERIAL3SPIN);\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 'Material3':\n createMaterial3Spinner(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 'Material3':\n defaultSize = DEFT_MAT3_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')) || !isNullOrUndefined(container.querySelector('svg.e-spin-material3'))) {\n var svg = void 0;\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material');\n }\n else if (!isNullOrUndefined(container.querySelector('svg.e-spin-material3')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material3');\n }\n if (!isNullOrUndefined(svg)) {\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 *\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' || type === 'Material3') {\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 if (container.classList.contains(CLS_SPINWRAP)) {\n spinnerWrap = container;\n }\n else {\n var spinWrapCollection = void 0;\n spinWrapCollection = container.querySelectorAll('.' + CLS_SPINWRAP);\n spinnerWrap = Array.from(spinWrapCollection).find(function (wrap) { return wrap.parentElement === container; }) || null;\n }\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 case 'Material3':\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 if (!isNullOrUndefined(spinTemplate)) {\n replaceContent(container, spinTemplate, spinCSSClass);\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 if (!isNullOrUndefined(svgElement)) {\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/**\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, Tooltip, 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 formatPainterClick = 'formatPainterClick';\n/**\n * @hidden\n * @deprecated\n */\nvar formatPainterDoubleClick = 'formatPainterDoubleClick';\n/**\n * @hidden\n * @deprecated\n */\nvar emojiPicker = 'emojiPicker';\n/**\n * @hidden\n * @deprecated\n */\nvar maximizeMinimizeClick = 'maximizeMinimizeClick';\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 'formatpainter': {\n 'id': 'FormatPainter',\n 'icon': 'e-rte-format-painter',\n 'tooltip': 'Format Painter',\n 'command': 'FormatPainter',\n 'subCommand': 'FormatPainter'\n },\n 'emojipicker': {\n 'id': 'EmojiPicker',\n 'icon': 'e-emoji',\n 'tooltip': 'Emoji Icon',\n 'command': 'EmojiPicker',\n 'subCommand': 'EmojiPicker'\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}\nvar windowKeys = {\n 'Insert Link': 'Ctrl + K',\n 'Insert Image': 'Ctrl + Shift + I',\n 'Create 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 'Upper Case': 'Ctrl + Shift + U',\n 'Lower Case': 'Ctrl + Shift + L',\n 'Superscript': 'Ctrl + Shift + =',\n 'Subscript': 'Ctrl + =',\n 'Source Code': 'Ctrl + Shift + H',\n 'Maximize': 'Ctrl + Shift + F',\n 'Minimize': 'Esc',\n 'Clear Format': 'Ctrl + Shift + R',\n 'Numbered List': 'Ctrl + Shift + O',\n 'Bulleted List': 'Ctrl + Alt + O',\n 'Format Painter': 'Alt + Shift + C, Alt + Shift + V'\n};\nvar defaultEmojiIcons = [{\n name: 'Smilies & People', code: '1F600', iconCss: 'e-emoji', icons: [{ code: '1F600', desc: 'Grinning face' },\n { code: '1F603', desc: 'Grinning face with big eyes' },\n { code: '1F604', desc: 'Grinning face with smiling eyes' },\n { code: '1F606', desc: 'Grinning squinting face' },\n { code: '1F605', desc: 'Grinning face with sweat' },\n { code: '1F602', desc: 'Face with tears of joy' },\n { code: '1F923', desc: 'Rolling on the floor laughing' },\n { code: '1F60A', desc: 'Smiling face with smiling eyes' },\n { code: '1F607', desc: 'Smiling face with halo' },\n { code: '1F642', desc: 'Slightly smiling face' },\n { code: '1F643', desc: 'Upside-down face' },\n { code: '1F60D', desc: 'Smiling face with heart-eyes' },\n { code: '1F618', desc: 'Face blowing a kiss' },\n { code: '1F61B', desc: 'Face with tongue' },\n { code: '1F61C', desc: 'Winking face with tongue' },\n { code: '1F604', desc: 'Grinning face with smiling eyes' },\n { code: '1F469', desc: 'Woman' },\n { code: '1F468', desc: 'Man' },\n { code: '1F467', desc: 'Girl' },\n { code: '1F466', desc: 'Boy' },\n { code: '1F476', desc: 'Baby' },\n { code: '1F475', desc: 'Old woman' },\n { code: '1F474', desc: 'Old man' },\n { code: '1F46E', desc: 'Police officer' },\n { code: '1F477', desc: 'Construction worker' },\n { code: '1F482', desc: 'Guard' },\n { code: '1F575', desc: 'Detective' },\n { code: '1F9D1', desc: 'Cook' }]\n }, {\n name: 'Animals & Nature', code: '1F435', iconCss: 'e-animals', icons: [{ code: '1F436', desc: 'Dog face' },\n { code: '1F431', desc: 'Cat face' },\n { code: '1F42D', desc: 'Mouse face' },\n { code: '1F439', desc: 'Hamster face' },\n { code: '1F430', desc: 'Rabbit face' },\n { code: '1F98A', desc: 'Fox face' },\n { code: '1F43B', desc: 'Bear face' },\n { code: '1F43C', desc: 'Panda face' },\n { code: '1F428', desc: 'Koala' },\n { code: '1F42F', desc: 'Tiger face' },\n { code: '1F981', desc: 'Lion face' },\n { code: '1F42E', desc: 'Cow face' },\n { code: '1F437', desc: 'Pig face' },\n { code: '1F43D', desc: 'Pig nose' },\n { code: '1F438', desc: 'Frog face' },\n { code: '1F435', desc: 'Monkey face' },\n { code: '1F649', desc: 'Hear-no-evil monkey' },\n { code: '1F64A', desc: 'Speak-no-evil monkey' },\n { code: '1F412', desc: 'Monkey' },\n { code: '1F414', desc: 'Chicken' },\n { code: '1F427', desc: 'Penguin' },\n { code: '1F426', desc: 'Bird' },\n { code: '1F424', desc: 'Baby chick' },\n { code: '1F986', desc: 'Duck' },\n { code: '1F985', desc: 'Eagle' }]\n }, {\n name: 'Food & Drink', code: '1F347', iconCss: 'e-food-and-drinks', icons: [{ code: '1F34E', desc: 'Red apple' },\n { code: '1F34C', desc: 'Banana' },\n { code: '1F347', desc: 'Grapes' },\n { code: '1F353', desc: 'Strawberry' },\n { code: '1F35E', desc: 'Bread' },\n { code: '1F950', desc: 'Croissant' },\n { code: '1F955', desc: 'Carrot' },\n { code: '1F354', desc: 'Hamburger' },\n { code: '1F355', desc: 'Pizza' },\n { code: '1F32D', desc: 'Hot dog' },\n { code: '1F35F', desc: 'French fries' },\n { code: '1F37F', desc: 'Popcorn' },\n { code: '1F366', desc: 'Soft ice cream' },\n { code: '1F367', desc: 'Shaved ice' },\n { code: '1F36A', desc: 'Cookie' },\n { code: '1F382', desc: 'Birthday cake' },\n { code: '1F370', desc: 'Shortcake' },\n { code: '1F36B', desc: 'Chocolate bar' },\n { code: '1F369', desc: 'Donut' },\n { code: '1F36E', desc: 'Custard' },\n { code: '1F36D', desc: 'Lollipop' },\n { code: '1F36C', desc: 'Candy' },\n { code: '1F377', desc: 'Wine glass' },\n { code: '1F37A', desc: 'Beer mug' },\n { code: '1F37E', desc: 'Bottle with popping cork' }]\n }, {\n name: 'Activities', code: '1F383', iconCss: 'e-activities', icons: [{ code: '26BD', desc: 'Soccer ball' },\n { code: '1F3C0', desc: 'Basketball' },\n { code: '1F3C8', desc: 'American football' },\n { code: '26BE', desc: 'Baseball' },\n { code: '1F3BE', desc: 'Tennis' },\n { code: '1F3D0', desc: 'Volleyball' },\n { code: '1F3C9', desc: 'Rugby football' },\n { code: '1F3B1', desc: 'Pool 8 ball' },\n { code: '1F3D3', desc: 'Ping pong' },\n { code: '1F3F8', desc: 'Badminton' },\n { code: '1F94A', desc: 'Boxing glove' },\n { code: '1F3CA', desc: 'Swimmer' },\n { code: '1F3CB', desc: 'Weightlifter' },\n { code: '1F6B4', desc: 'Bicyclist' },\n { code: '1F6F9', desc: 'Skateboard' },\n { code: '1F3AE', desc: 'Video game' },\n { code: '1F579', desc: 'Joystick' },\n { code: '1F3CF', desc: 'Cricket' },\n { code: '1F3C7', desc: 'Horse racing' },\n { code: '1F3AF', desc: 'Direct hit' },\n { code: '1F3D1', desc: 'Field hockey' },\n { code: '1F3B0', desc: 'Slot machine' },\n { code: '1F3B3', desc: 'Bowling' },\n { code: '1F3B2', desc: 'Game die' },\n { code: '265F', desc: 'Chess pawn' }]\n }, {\n name: 'Travel & Places', code: '1F30D', iconCss: 'e-travel-and-places', icons: [{ code: '2708', desc: 'Airplane' },\n { code: '1F697', desc: 'Automobile' },\n { code: '1F695', desc: 'Taxi' },\n { code: '1F6B2', desc: 'Bicycle' },\n { code: '1F68C', desc: 'Bus' },\n { code: '1F682', desc: 'Locomotive' },\n { code: '1F6F3', desc: 'Passenger ship' },\n { code: '1F680', desc: 'Rocket' },\n { code: '1F681', desc: 'Helicopter' },\n { code: '1F6A2', desc: 'Ship' },\n { code: '1F3DF', desc: 'Stadium' },\n { code: '1F54C', desc: 'Mosque' },\n { code: '26EA', desc: 'Church' },\n { code: '1F6D5', desc: 'Hindu Temple' },\n { code: '1F3D4', desc: 'Snow-capped mountain' },\n { code: '1F3EB', desc: 'School' },\n { code: '1F30B', desc: 'Volcano' },\n { code: '1F3D6', desc: 'Beach with umbrella' },\n { code: '1F3DD', desc: 'Desert island' },\n { code: '1F3DE', desc: 'National park' },\n { code: '1F3F0', desc: 'Castle' },\n { code: '1F5FC', desc: 'Tokyo tower' },\n { code: '1F5FD', desc: 'Statue of liberty' },\n { code: '26E9', desc: 'Shinto shrine' },\n { code: '1F3EF', desc: 'Japanese castle' },\n { code: '1F3A2', desc: 'Roller coaster' }]\n }, {\n name: 'Objects', code: '1F507', iconCss: 'e-objects', icons: [{ code: '1F4A1', desc: 'Light bulb' },\n { code: '1F526', desc: 'Flashlight' },\n { code: '1F4BB', desc: 'Laptop computer' },\n { code: '1F5A5', desc: 'Desktop computer' },\n { code: '1F5A8', desc: 'Printer' },\n { code: '1F4F7', desc: 'Camera' },\n { code: '1F4F8', desc: 'Camera with flash' },\n { code: '1F4FD', desc: 'Film projector' },\n { code: '1F3A5', desc: 'Movie camera' },\n { code: '1F4FA', desc: 'Television' },\n { code: '1F4FB', desc: 'Radio' },\n { code: '1F50B', desc: 'Battery' },\n { code: '231A', desc: 'Watch' },\n { code: '1F4F1', desc: 'Mobile phone' },\n { code: '260E', desc: 'Telephone' },\n { code: '1F4BE', desc: 'Floppy disk' },\n { code: '1F4BF', desc: 'Optical disk' },\n { code: '1F4C0', desc: 'Digital versatile disc' },\n { code: '1F4BD', desc: 'Computer disk' },\n { code: '1F3A7', desc: 'Headphone' },\n { code: '1F3A4', desc: 'Microphone' },\n { code: '1F3B6', desc: 'Multiple musical notes' },\n { code: '1F4DA', desc: 'Books' }]\n }, {\n name: 'Symbols', code: '1F3E7', iconCss: 'e-symbols', icons: [{ code: '274C', desc: 'Cross mark' },\n { code: '2714', desc: 'Check mark' },\n { code: '26A0', desc: 'Warning sign' },\n { code: '1F6AB', desc: 'Prohibited' },\n { code: '2139', desc: 'Information' },\n { code: '267B', desc: 'Recycling symbol' },\n { code: '1F6AD', desc: 'No smoking' },\n { code: '1F4F5', desc: 'No mobile phones' },\n { code: '1F6AF', desc: 'No littering' },\n { code: '1F6B3', desc: 'No bicycles' },\n { code: '1F6B7', desc: 'No pedestrians' },\n { code: '2795', desc: 'Plus' },\n { code: '2796', desc: 'Minus' },\n { code: '2797', desc: 'Divide' },\n { code: '2716', desc: 'Multiplication' },\n { code: '1F4B2', desc: 'Dollar banknote' },\n { code: '1F4AC', desc: 'Speech balloon' },\n { code: '2755', desc: 'White exclamation mark' },\n { code: '2754', desc: 'White question mark' },\n { code: '2764', desc: 'Red heart' }]\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 'formatPainter': 'Format Painter',\n 'emojiPicker': 'Emoji Picker',\n 'embeddedCode': 'Embedded Code',\n 'pasteEmbeddedCodeHere': 'Paste Embedded Code here',\n 'emojiPickerTypeToFind': 'Type to find',\n 'emojiPickerNoResultFound': 'No results found',\n 'emojiPickerTrySomethingElse': 'Try something else',\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 'formatpainter': 'formatPainter',\n 'emojipicker': 'emojiPicker',\n 'embeddedCode': 'Embedded Code',\n 'pasteEmbeddedCodeHere': 'Paste Embedded Code here',\n 'emojiPickerTypeToFind': 'Type to find',\n 'emojiPickerNoResultFound': 'No results found',\n 'emojiPickerTrySomethingElse': 'Try something else',\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') || (item === 'NumberFormatList' && key === 'numberFormatList' ||\n item === 'BulletFormatList' && key === 'bulletFormatList')) {\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 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 if (item.selectors.tags[2] && item.selectors.tags[2].indexOf('iframe') > -1) {\n item.selectors.tags[2] = 'iframe:not(.e-rte-embed-url)';\n }\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 this.parent.on(maximizeMinimizeClick, this.destroyTooltip, this);\n };\n ToolbarRenderer.prototype.destroyTooltip = function () {\n this.tooltip.close();\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 if (this.parent.showTooltip) {\n this.tooltip = new Tooltip({\n target: '#' + this.parent.getID() + '_toolbar_wrapper [title]',\n showTipPointer: true,\n openDelay: 400,\n cssClass: this.parent.cssClass,\n windowCollision: true,\n position: 'BottomCenter'\n });\n this.tooltip.appendTo(args.target);\n }\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 args.element.setAttribute('role', 'button');\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 if (this.parent.showTooltip) {\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 else {\n return {\n id: this.parent.getID() + '_' + container + '_' + this.tools[itemStr.toLocaleLowerCase()].id,\n prefixIcon: this.tools[itemStr.toLocaleLowerCase()].icon,\n command: this.tools[itemStr.toLocaleLowerCase()].command,\n subCommand: this.tools[itemStr.toLocaleLowerCase()].subCommand\n };\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 var currentContentElem = _this.parent.createElement('div');\n currentContentElem.appendChild(_this.parent.formatter.getUndoRedoStack()[_this.parent.formatter.getUndoRedoStack().length - 1].text);\n if (currentContentElem.innerHTML.trim() === _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 for (var num = 0; num < items.length; num++) {\n var tooltipText = items[num].tooltipText;\n var shortCutKey = void 0;\n if (windowKeys[\"\" + tooltipText]) {\n shortCutKey = Browser.isDevice && isIDevice() ? windowKeys[\"\" + tooltipText].replace('Ctrl', 'Cmd') : windowKeys[\"\" + tooltipText];\n }\n else {\n shortCutKey = tooltipText;\n }\n if (shortCutKey) {\n items[num].tooltipText = (tooltipText !== shortCutKey) ? tooltipText + ' (' + shortCutKey + ')' : tooltipText;\n }\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 args.baseToolbar.toolbarObj.refreshOverflow();\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.parent.element.classList.remove(CLS_RTL);\n this.baseToolbar.toolbarObj.refreshOverflow();\n if (this.parent.enableRtl) {\n this.parent.element.classList.add(CLS_RTL);\n }\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 isAligned = (e.target.classList.contains('e-imginline') ||\n e.target.classList.contains('e-imgbreak')) ? false : true;\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 target = isAligned ? e.target : target;\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 positionX: x, positionY: y };\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 if (_this.parent.showTooltip) {\n _this.tooltip = new Tooltip({\n target: '#' + _this.element.id + ' [title]',\n openDelay: 400,\n showTipPointer: true,\n windowCollision: true,\n position: 'BottomCenter'\n });\n _this.tooltip.appendTo(_this.element);\n }\n _this.popupObj.position.X = beforeQuickToolbarArgs.positionX + 20;\n _this.popupObj.position.Y = beforeQuickToolbarArgs.positionY + 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(document.querySelector('.e-tooltip-wrap'))) {\n if (!isNullOrUndefined(document.querySelector('#' + this.element.id + ' [data-tooltip-id]'))) {\n var tooltipTargetEle = document.querySelector('#' + this.element.id + ' [data-tooltip-id]');\n var dataContent = tooltipTargetEle.getAttribute('data-content');\n tooltipTargetEle.removeAttribute('data-content');\n tooltipTargetEle.setAttribute('title', dataContent);\n tooltipTargetEle.removeAttribute('data-tooltip-id');\n }\n this.tooltip.destroy();\n }\n else {\n if (!isNullOrUndefined(this.tooltip)) {\n this.tooltip.destroy();\n }\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 * @param {string} enterAction - specifies the enter key action API\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 numberFormatList: false,\n bulletFormatList: 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 var formatPainterCopy = !isNullOrUndefined(args.requestType) && args.requestType === 'FormatPainter' && args.action === 'format-copy';\n if (!isNullOrUndefined(args) && !isNullOrUndefined(args.requestType) && args.requestType !== 'Undo' && args.requestType !== 'Redo' && !formatPainterCopy) {\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 * Format painter event constant\n *\n * @hidden\n */\nvar FORMAT_PAINTER_ACTIONS = 'format_painter_actions';\n/**\n * Emoji picker event constant\n *\n * @hidden\n */\nvar EMOJI_PICKER_ACTIONS = 'emoji_picker_actions';\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 var isKeyboardVideoInsert = (!isNullOrUndefined(value) && !isNullOrUndefined(value.cssClass) &&\n value.cssClass !== 'e-video-inline');\n if (self.editorMode === 'HTML') {\n if (!isNullOrUndefined(args) && !isKeyboardVideoInsert) {\n if (isNullOrUndefined(args.name) || (!isNullOrUndefined(args.name) && args.name !== 'showDialog')) {\n saveSelection = this.editorManager.nodeSelection.save(range, self.contentModule.getDocument());\n }\n }\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 && args.item.command !== 'EmojiPicker'\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') || args.item.subCommand === 'FormatPainter' || args.item.subCommand === 'EmojiPicker')) {\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 var formatPainterCopy = !isNullOrUndefined(actionBeginArgs.requestType) && actionBeginArgs.requestType === 'FormatPainter' && actionBeginArgs.name === 'format-copy';\n var formatPainterPaste = !isNullOrUndefined(actionBeginArgs.requestType) && actionBeginArgs.requestType === 'FormatPainter' && actionBeginArgs.name === 'format-paste';\n if ((_this.getUndoRedoStack().length === 0 && actionBeginArgs.item.command !== 'Links' && actionBeginArgs.item.command !== 'Images' && !formatPainterCopy)\n || formatPainterPaste) {\n _this.saveData();\n }\n self.isBlur = false;\n self.contentModule.getEditPanel().focus();\n if (self.editorMode === 'HTML' && !isKeyboardVideoInsert) {\n if (isNullOrUndefined(args.selectType) || (!isNullOrUndefined(args.selectType) && args.selectType !== 'showDialog')) {\n saveSelection.restore();\n }\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 'format-copy': 'alt+shift+c',\n 'format-paste': 'alt+shift+v'\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 (isNullOrUndefined(action) && save.range.startContainer.nodeType === 1 &&\n save.range.startContainer.querySelectorAll('audio,video,image').length === 0) {\n start.innerHTML = '
      ';\n }\n else 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' && start.nodeName !== 'BR') {\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 === '' && (startNodeParent.querySelectorAll('audio,video').length === 0)) {\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 if (!isNullOrUndefined(lasNode)) {\n detach(lasNode);\n }\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 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 InsertHtml.removeEmptyElements = function (element) {\n var emptyElements = element.querySelectorAll(':empty');\n for (var i = 0; i < emptyElements.length; i++) {\n var lineWithDiv = true;\n if (emptyElements[i].tagName === 'DIV') {\n lineWithDiv = emptyElements[i].style.borderBottom === 'none' ||\n emptyElements[i].style.borderBottom === '' ? true : false;\n }\n if (SELF_CLOSING_TAGS.indexOf(emptyElements[i].tagName.toLowerCase()) < 0 && lineWithDiv) {\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) === ' ' && (!isNullOrUndefined(range.endContainer.nextSibling) && 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 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 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 if (e.item.isEmbedUrl && videoElm_1) {\n videoElm_1.classList.add('e-rte-embed-url');\n }\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 */\n if (1 === rowSpanVal) {\n allCells[maxI][j].removeAttribute('rowspan');\n var cell = this.getMergedRow(this.getCorrespondingColumns())[j];\n if (cell) {\n var cloneNode = cell.cloneNode(true);\n cloneNode.innerHTML = '
      ';\n if (cell.parentElement) {\n cell.parentElement.insertBefore(cloneNode, cell);\n }\n }\n }\n else {\n allCells[maxI][j].setAttribute('rowspan', rowSpanVal.toString());\n }\n /* eslint-enable */\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.getMergedRow = function (cells) {\n var mergedRow;\n for (var i = 0; i < cells.length; i++) {\n if (cells[i].length !== this.curTable.rows[0].childNodes.length) {\n mergedRow = cells[i];\n }\n }\n return mergedRow;\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 && firstCell) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, \n // eslint-disable-next-line\n firstCell, 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 /* eslint-disable */\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && (node.style.textDecoration === 'underline' ||\n node.style.textDecorationLine === 'underline')) {\n /* eslint-enable */\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 /* eslint-disable */\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && (node.style.textDecoration === 'line-through' ||\n node.style.textDecorationLine === 'line-through')) {\n /* eslint-enable */\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 'font',\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 * @param {FormatPainterValue} painterValues specifies the element created and last child\n * @returns {void}\n * @hidden\n * @deprecated\n */\n SelectionCommands.applyFormat = function (docElement, format, endNode, enterAction, value, selector, painterValues) {\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 || value === 'formatPainter') {\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 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 {\n nodes[index] = this.insertFormat(docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, painterValues, 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 else if (isFontStyle && !nodes[index].contains(formatNode) && nodes[index].nodeType === 3 &&\n nodes[index].textContent !== formatNode.textContent) {\n // If the selection is within the format node .\n var isFullNodeSelected = nodes[index].textContent === nodes[index].wholeText;\n var nodeTraverse = nodes[index];\n var styleElement = this.GetFormatNode(format, value);\n // while loop and traverse back until text content does not match with parent text content\n while (nodeTraverse && nodeTraverse.textContent === nodeTraverse.parentElement.textContent) {\n nodeTraverse = nodeTraverse.parentElement;\n }\n if (isFullNodeSelected && formatNode.textContent !== nodeTraverse.textContent) {\n var nodeArray = [];\n var priorityNode = this.getPriorityFormatNode(nodeTraverse, endNode);\n if (priorityNode && priorityNode.textContent === nodeTraverse.textContent) {\n nodeTraverse = priorityNode;\n }\n nodeArray.push(nodeTraverse);\n this.applyStyles(nodeArray, 0, styleElement);\n return nodes[index];\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, painterValues, domNode, endNode) {\n if (!isCursor) {\n if ((formatNode === null && isFormat) || isFontStyle) {\n if (nodes[index].nodeName !== 'BR') {\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 (value === 'formatPainter' || isFontStyle) {\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 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 if (format === 'fontcolor') {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n }\n if (value === 'formatPainter') {\n return this.insertFormatPainterElem(nodes, index, range, nodeCutter, painterValues, domNode);\n }\n var currentNode = nodes[index];\n var priorityNode = this.getPriorityFormatNode(currentNode, endNode);\n // 1. Checking is there any priority node present in the selection range. (Use case for nested styles);\n // 2 Or font style is applied. (Use case not a nested style)\n if (!isNullOrUndefined(priorityNode) || isFontStyle) {\n var currentFormatNode = isNullOrUndefined(priorityNode) ? currentNode : priorityNode;\n currentFormatNode = !isNullOrUndefined(priorityNode) && priorityNode.style.fontSize !== '' ?\n currentFormatNode.firstChild : currentFormatNode;\n if (isNullOrUndefined(priorityNode) || format === 'fontsize') {\n while (currentFormatNode) {\n var isSameTextContent = currentFormatNode.parentElement.textContent.trim()\n === nodes[index].textContent.trim();\n var parent_1 = currentFormatNode.parentElement;\n if (!domNode.isBlockNode(parent_1) && isSameTextContent &&\n !(parent_1.nodeName === 'SPAN' && parent_1.classList.contains('e-img-inner'))) {\n currentFormatNode = parent_1;\n }\n else {\n break;\n }\n }\n }\n var nodeList = [];\n // Since color is different for different themnes, we need to wrap the fontColor over the text node.\n if (format === 'fontcolor') {\n var closestAnchor = closest(nodes[index].parentElement, 'A');\n if (!isNullOrUndefined(closestAnchor) && closestAnchor.firstChild.textContent.trim()\n === nodes[index].textContent.trim()) {\n currentFormatNode = nodes[index];\n }\n }\n if (nodes[index].textContent.trim() !== currentFormatNode.textContent.trim()) {\n currentFormatNode = nodes[index];\n }\n nodeList[0] = currentFormatNode;\n this.applyStyles(nodeList, 0, element);\n }\n else {\n nodes[index] = this.applyStyles(nodes, index, element);\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.getPriorityFormatNode = function (node, endNode) {\n var isFormatted = new IsFormatted();\n var fontSizeNode = isFormatted.getFormattedNode(node, 'fontsize', endNode);\n var fontColorNode;\n var backgroundColorNode;\n var fontNameNode;\n if (isNullOrUndefined(fontSizeNode)) {\n backgroundColorNode = isFormatted.getFormattedNode(node, 'backgroundcolor', endNode);\n if (isNullOrUndefined(backgroundColorNode)) {\n fontNameNode = isFormatted.getFormattedNode(node, 'fontname', endNode);\n if (isNullOrUndefined(fontNameNode)) {\n fontColorNode = isFormatted.getFormattedNode(node, 'fontcolor', endNode);\n if (isNullOrUndefined(fontColorNode)) {\n return null;\n }\n else {\n return fontColorNode;\n }\n }\n else {\n return fontNameNode;\n }\n }\n else {\n return backgroundColorNode;\n }\n }\n else {\n return fontSizeNode;\n }\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 // Below function is used to insert the element created by the format painter plugin.\n SelectionCommands.insertFormatPainterElem = function (nodes, index, range, nodeCutter, painterValues, domNode) {\n var parent = !domNode.isBlockNode(nodes[index].parentElement) ?\n nodes[index].parentElement : nodes[index];\n if (!domNode.isBlockNode(parent)) {\n while (parent.textContent.trim() === parent.parentElement.textContent.trim() && !domNode.isBlockNode(parent.parentElement)) {\n parent = parent.parentElement;\n }\n }\n // The below code is used to remove the already present inline style from the text node.\n if (!isNullOrUndefined(parent) && parent.nodeType === 1 && !(parent.classList.contains('e-rte-img-caption') || parent.classList.contains('e-img-inner'))) {\n this.formatPainterCleanup(index, nodes, parent, range, nodeCutter, domNode);\n }\n var elem = painterValues.element;\n // The below code is used to apply the inline format copied.\n if (!isNullOrUndefined(elem)) {\n // Step 1: Cloning the element that is created by format painter.\n // Step 2: Finding the last child of the nested elememt using the paintervalues.lastchild nodename\n // Step 3: Assigning the nodes[index] text content to the last child element.\n // Step 4: Wrapping the cloned element with the nodes[index]\n var clonedElement = elem.cloneNode(true);\n var elemList = clonedElement.querySelectorAll(painterValues.lastChild.nodeName);\n var lastElement = void 0;\n if (elemList.length > 0) {\n lastElement = elemList[elemList.length - 1];\n }\n else {\n if (!isNullOrUndefined(clonedElement) && clonedElement.nodeName === painterValues.lastChild.nodeName) {\n lastElement = clonedElement;\n }\n }\n lastElement.textContent = nodes[index].textContent;\n var lastChild = lastElement.childNodes[0];\n nodes[index] = InsertMethods.Wrap(nodes[index], clonedElement);\n nodes[index].textContent = '';\n nodes[index] = lastChild;\n }\n return nodes[index];\n };\n SelectionCommands.formatPainterCleanup = function (index, nodes, parent, range, nodeCutter, domNode) {\n var INVALID_TAGS = ['A', 'AUDIO', 'IMG', 'VIDEO', 'IFRAME'];\n if (index === 0 && parent.textContent.trim() !== nodes[index].textContent.trim()) {\n nodeCutter.SplitNode(range, parent, true);\n var childELemList = nodes[index].parentElement.childNodes;\n for (var i = 0; i < childELemList.length; i++) {\n if (childELemList[i].textContent.trim() === nodes[i].textContent.trim()) {\n parent.parentNode.insertBefore(childELemList[i], parent);\n break;\n }\n }\n var blockChildNodes = parent.parentElement.childNodes;\n for (var k = 0; k < blockChildNodes.length; k++) {\n if (blockChildNodes[k].textContent.trim() === '' || blockChildNodes[k].textContent.length === 0) {\n detach(blockChildNodes[k]);\n }\n }\n }\n else if (parent.textContent.trim() !== nodes[index].textContent.trim()) {\n parent.parentElement.insertBefore(nodes[index], parent);\n }\n else {\n while (!isNullOrUndefined(parent) && parent.nodeType !== 3 && !domNode.isBlockNode(parent)) {\n var temp = void 0;\n for (var i = 0; i < parent.childNodes.length; i++) {\n var currentChild = parent.childNodes[i];\n if (currentChild.textContent.trim().length !== 0 && currentChild.nodeType !== 3) {\n temp = parent.childNodes[i];\n }\n }\n if (INVALID_TAGS.indexOf(parent.tagName) === -1) {\n InsertMethods.unwrap(parent);\n }\n parent = temp;\n }\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 * @param {string} command - specifies the command value\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ClearFormat.clear = function (docElement, endNode, enterAction, selector, command) {\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 nodes = range.collapsed ? nodeSelection.getSelectionNodeCollection(range) :\n nodeSelection.getSelectionNodeCollectionBr(range);\n var save = nodeSelection.save(range, docElement);\n var cursorRange = false;\n if (range.collapsed && command !== 'ClearFormat') {\n cursorRange = true;\n range = nodeCutter.GetCursorRange(docElement, range, nodes[0]);\n }\n var isCollapsed = range.collapsed;\n if (!isCollapsed) {\n var preNode = void 0;\n if (nodes.length > 0 && 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 if (nodes.length > 1) {\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 if (cursorRange) {\n nodeSelection.setCursorPoint(docElement, range.endContainer, range.endOffset);\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, e.subCommand);\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 UndoRedoManager.prototype.getTextContentFromFragment = function (fragment) {\n var textContent = '';\n for (var i = 0; i < fragment.childNodes.length; i++) {\n var childNode = fragment.childNodes[i];\n if (childNode.nodeType === Node.TEXT_NODE) {\n textContent += childNode.textContent;\n }\n else if (childNode.nodeType === Node.ELEMENT_NODE) {\n textContent += this.getTextContentFromFragment(childNode);\n }\n }\n return textContent;\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 clonedElement = this.parent.editableElement.cloneNode(true);\n var fragment = document.createDocumentFragment();\n while (clonedElement.firstChild) {\n fragment.appendChild(clonedElement.firstChild);\n }\n var changEle = { text: fragment, 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.getTextContentFromFragment(this.undoRedoStack[this.undoRedoStack.length - 1].text).trim() ===\n this.getTextContentFromFragment(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 = '';\n this.parent.editableElement.appendChild(removedContent.cloneNode(true));\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 var addedContent = this.undoRedoStack[this.steps + 1].text;\n this.parent.editableElement.innerHTML = '';\n this.parent.editableElement.appendChild(addedContent.cloneNode(true));\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.upperRomanNumber = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX',\n 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX'];\n this.lowerRomanNumber = ['i', 'ii', 'iii', 'iv', 'v', 'vi', 'vii', 'viii', 'ix',\n 'x', 'xi', 'xii', 'xiii', 'xiv', 'xv', 'xvi', 'xvii', 'xviii', 'xix', 'xx'];\n this.lowerGreekNumber = ['α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ',\n 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω'];\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.cleanList(elm, 'UL');\n this.cleanList(elm, 'OL');\n this.styleCorrection(elm, wordPasteStyleConfig);\n this.removingComments(elm);\n this.removeUnwantedElements(elm);\n this.removeEmptyElements(elm);\n this.removeEmptyAnchorTag(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.cleanList = function (elm, listTag) {\n var replacableElem = elm.querySelectorAll(listTag + ' div');\n for (var j = replacableElem.length - 1; j >= 0; j--) {\n var parentElem = replacableElem[j].parentNode;\n while (replacableElem[j].firstChild) {\n parentElem.insertBefore(replacableElem[j].firstChild, replacableElem[j]);\n }\n var closestListElem = this.findClosestListElem(replacableElem[j]);\n if (closestListElem) {\n this.insertAfter(replacableElem[j], closestListElem);\n }\n }\n };\n MsWordPaste.prototype.insertAfter = function (newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n MsWordPaste.prototype.findClosestListElem = function (listElem) {\n var closestListElem;\n while (!isNullOrUndefined(listElem)) {\n listElem = !isNullOrUndefined(listElem.closest('ul')) && listElem.tagName !== 'UL' ?\n listElem.closest('ul') : (listElem.tagName !== 'OL' ? listElem.closest('ol') : null);\n closestListElem = !isNullOrUndefined(listElem) ? listElem : closestListElem;\n }\n return closestListElem;\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 &&\n allNodes[index].tagName.charAt(0) !== 'H' && allNodes[index].tagName !== 'LI' &&\n allNodes[index].tagName !== 'OL' && allNodes[index].tagName !== 'UL') {\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('Grafik') < 0 &&\n imgElem[i].getAttribute('v:shapes').toLowerCase().indexOf('image') < 0 &&\n imgElem[i].getAttribute('v:shapes').indexOf('Graphic') < 0 &&\n imgElem[i].getAttribute('v:shapes').indexOf('_x0000_s') < 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 !(this.hasParentWithClass(element, 'MsoListParagraph')) &&\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.hasParentWithClass = function (element, className) {\n var currentParentElem = element.parentElement;\n while (!isNullOrUndefined(currentParentElem)) {\n if (currentParentElem.classList.contains(className)) {\n return true;\n }\n currentParentElem = currentParentElem.parentElement;\n }\n return false;\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 var lineWithDiv = true;\n if (emptyElements[i].tagName === 'DIV') {\n lineWithDiv = emptyElements[i].style.borderBottom === 'none' ||\n emptyElements[i].style.borderBottom === '' ? true : false;\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' && lineWithDiv) {\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 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 !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, 10))) {\n startAttr = parseInt(startString, 10);\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 else if (listStyleType === 'upper-roman') {\n startAttr = this.upperRomanNumber.indexOf(this.listContents[0].split('.')[0]) + 1;\n }\n else if (listStyleType === 'lower-roman') {\n startAttr = this.lowerRomanNumber.indexOf(this.listContents[0].split('.')[0]) + 1;\n }\n else if (listStyleType === 'lower-greek') {\n startAttr = this.lowerGreekNumber.indexOf(this.listContents[0].split('.')[0]) + 1;\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 if (type === 'ol') {\n var charCode = listContent.split('.')[0].charCodeAt(0);\n switch (true) {\n case this.upperRomanNumber.indexOf(listContent.split('.')[0]) > -1:\n currentListClass = 'upper-roman';\n break;\n case this.lowerRomanNumber.indexOf(listContent.split('.')[0]) > -1:\n currentListClass = 'lower-roman';\n break;\n case this.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 listClass = ['MsoListParagraphCxSpFirst', 'MsoListParagraphCxSpMiddle', 'MsoListParagraphCxSpLast'];\n var isNormalList = false;\n for (var i = 0; i < listClass.length; i++) {\n if (listClass[i].indexOf(collection[index].class) >= 0) {\n isNormalList = true;\n break;\n }\n }\n if (!isNullOrUndefined(prevList) && index !== 0 &&\n collection[index - 1].listType !== collection[index].listType &&\n !isNormalList) {\n prevList = null;\n }\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 if (collection[index].nestedLevel > pLevel && isNormalList) {\n var initialNode = void 0;\n initialNode = createElement(collection[index].listType);\n prevList = createElement('li');\n initialNode.appendChild(prevList);\n initialNode.style.listStyleType = 'none';\n for (var j = 0; j < collection[index].nestedLevel - 1; j++) {\n prevList.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n temp.appendChild(prevList);\n temp.style.listStyleType = 'none';\n }\n prevList.appendChild(pElement);\n root.appendChild(initialNode);\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 }\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 //Add to support separate list which looks like same list and also to add all tags as it is inside list\n if (firstChild.childNodes.length > 0) {\n var listOrder = firstChild.querySelector('span[style=\"mso-list:Ignore\"]');\n if (!isNullOrUndefined(listOrder)) {\n this.listContents.push(listOrder.textContent.trim());\n detach(listOrder);\n this.removingComments(elem);\n this.removeUnwantedElements(elem);\n }\n }\n }\n this.listContents.push(elem.innerHTML);\n };\n MsWordPaste.prototype.removeEmptyAnchorTag = function (element) {\n var removableElement = element.querySelectorAll('a:not([href])');\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 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 * 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 if (this.isOrderedList(node)) {\n return true;\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 if (this.isUnorderedList(node)) {\n return true;\n }\n else {\n return null;\n }\n };\n return ToolbarStatus;\n}());\n\nvar EmojiPickerAction = /** @__PURE__ @class */ (function () {\n function EmojiPickerAction(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n EmojiPickerAction.prototype.addEventListener = function () {\n this.parent.observer.on(EMOJI_PICKER_ACTIONS, this.emojiInsert, this);\n };\n EmojiPickerAction.prototype.emojiInsert = function (args) {\n var node = document.createTextNode(args.value);\n var selection = window.getSelection();\n var range = selection.getRangeAt(0);\n var cursorPos = range.startOffset;\n for (var i = cursorPos - 1; i >= cursorPos - 15; i--) {\n var prevChar_1 = selection.focusNode.textContent.substring(i - 1, i);\n var isPrevSpace_1 = /:$/.test(prevChar_1);\n if (isPrevSpace_1) {\n this.beforeApplyFormat(true);\n break;\n }\n }\n var colon = /:$/.test(selection.focusNode.textContent.charAt(cursorPos - 1));\n var prevChar = selection.focusNode.textContent.charAt(cursorPos - 2);\n var isPrevSpace = /\\s/.test(prevChar);\n if (colon && (isPrevSpace || selection.focusOffset === 1)) {\n this.beforeApplyFormat(true);\n }\n InsertHtml.Insert(this.parent.currentDocument, node, this.parent.editableElement);\n if (args.callBack) {\n args.callBack({\n requestType: args.subCommand,\n editorMode: 'HTML',\n event: args.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n EmojiPickerAction.prototype.beforeApplyFormat = function (isBlockFormat) {\n var range1 = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var node = this.parent.nodeSelection.getNodeCollection(range1)[0];\n var blockNewLine = !(node.parentElement.innerHTML.replace(/ |
      /g, '').trim() === ':' || node.textContent.trim().indexOf('/') === 0);\n var startNode = node;\n if (blockNewLine && isBlockFormat) {\n while (startNode !== this.parent.editableElement) {\n startNode = startNode.parentElement;\n }\n }\n var startPoint = range1.startOffset;\n while (this.parent.nodeSelection.getRange(document).toString().indexOf(':') === -1) {\n this.parent.nodeSelection.setSelectionText(document, node, node, startPoint, range1.endOffset);\n startPoint--;\n }\n var range2 = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var node2 = this.parent.nodeCutter.GetSpliceNode(range2, node);\n node2.parentNode.removeChild(node2);\n };\n return EmojiPickerAction;\n}());\n\n/**\n * Base export\n */\n\nvar FormatPainterActions = /** @__PURE__ @class */ (function () {\n function FormatPainterActions(parent, options) {\n this.INVALID_TAGS = ['A', 'AUDIO', 'IMG', 'VIDEO', 'IFRAME'];\n this.parent = parent;\n this.settings = options;\n this.addEventListener();\n this.setDeniedFormats();\n }\n FormatPainterActions.prototype.addEventListener = function () {\n this.parent.observer.on(FORMAT_PAINTER_ACTIONS, this.actionHandler, this);\n this.parent.observer.on(MODEL_CHANGED_PLUGIN, this.onPropertyChanged, this);\n };\n FormatPainterActions.prototype.onPropertyChanged = function (prop) {\n if (prop && prop.module === 'formatPainter') {\n if (!isNullOrUndefined(prop.newProp.formatPainterSettings.allowedFormats)) {\n this.settings.allowedFormats = prop.newProp.formatPainterSettings.allowedFormats;\n }\n if (!isNullOrUndefined(prop.newProp.formatPainterSettings.deniedFormats)) {\n this.settings.deniedFormats = prop.newProp.formatPainterSettings.deniedFormats;\n this.setDeniedFormats();\n }\n }\n };\n FormatPainterActions.prototype.removeEventListener = function () {\n this.parent.observer.off(FORMAT_PAINTER_ACTIONS, this.actionHandler);\n this.parent.observer.off(MODEL_CHANGED_PLUGIN, this.onPropertyChanged);\n };\n /**\n * Destroys the format painter.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n FormatPainterActions.prototype.destroy = function () {\n this.removeEventListener();\n this.INVALID_TAGS = null;\n this.copyCollection = null;\n this.deniedFormatsCollection = null;\n this.newElem = null;\n this.newElemLastChild = null;\n this.settings = null;\n this.parent = null;\n };\n FormatPainterActions.prototype.actionHandler = function (args) {\n this.settings.allowedContext = ['Text', 'List', 'Table'];\n if (!isNullOrUndefined(args) && !isNullOrUndefined(args.item) && !isNullOrUndefined(args.item.formatPainterAction)) {\n switch (args.item.formatPainterAction) {\n case 'format-copy':\n this.copyAction();\n break;\n case 'format-paste':\n this.pasteAction();\n break;\n case 'escape':\n this.escapeAction();\n break;\n }\n this.callBack(args);\n }\n };\n FormatPainterActions.prototype.callBack = function (event) {\n if (event.callBack) {\n event.callBack({\n requestType: 'FormatPainter',\n action: event.item.formatPainterAction,\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 FormatPainterActions.prototype.generateElement = function () {\n var copyCollection = this.copyCollection.slice(); // To clone without reversing the collcection array\n copyCollection.reverse();\n var length = copyCollection.length;\n var elemCollection = createElement('div', { className: 'e-format-paste-wrapper' });\n var lastAppendChild;\n for (var i = 0; i < length; i++) {\n var _a = copyCollection[i], attrs = _a.attrs, className = _a.className, styles = _a.styles, tagName = _a.tagName;\n var elem = createElement(tagName);\n if (className !== '') {\n elem.className = className;\n }\n for (var i_1 = 0; i_1 < attrs.length; i_1++) {\n var property = attrs[i_1].name;\n var value = attrs[i_1].value;\n elem.setAttribute(property, value);\n }\n for (var i_2 = 0; i_2 < styles.length; i_2++) {\n var property = styles[i_2].property;\n var value = styles[i_2].value;\n var priority = styles[i_2].priority;\n elem.style.setProperty(property, value, priority);\n }\n if (elemCollection.childElementCount === 0) {\n elemCollection.append(elem);\n lastAppendChild = elem;\n }\n else {\n lastAppendChild.append(elem);\n lastAppendChild = elem;\n }\n }\n var elemChild = this.removeDeniedFormats(elemCollection);\n var currentElem = elemChild;\n while (currentElem) {\n if (currentElem.firstChild === null) {\n lastAppendChild = currentElem;\n currentElem = undefined;\n }\n else {\n currentElem = currentElem.firstChild;\n }\n }\n this.newElem = elemChild;\n this.newElemLastChild = lastAppendChild;\n };\n FormatPainterActions.prototype.pasteAction = function () {\n if (isNullOrUndefined(this.copyCollection) || this.copyCollection.length === 0) {\n this.paintPlainTextFormat();\n return;\n }\n this.insertFormatNode(this.newElem, this.newElemLastChild);\n };\n FormatPainterActions.prototype.removeDeniedFormats = function (parentElement) {\n if (!isNullOrUndefined(this.deniedFormatsCollection) && this.deniedFormatsCollection.length > 0) {\n var deniedPropArray = this.deniedFormatsCollection;\n var length_1 = deniedPropArray.length;\n for (var i = 0; i < length_1; i++) {\n var tag = deniedPropArray[i].tag;\n if (deniedPropArray[i].tag) {\n var elementsList = parentElement.querySelectorAll(tag);\n for (var j = 0; j < elementsList.length; j++) {\n if (deniedPropArray[i].classes.length > 0) {\n var classes = deniedPropArray[i].classes;\n var classLength = classes.length;\n for (var k = 0; k < classLength; k++) {\n if (elementsList[j].classList.contains(classes[k])) {\n removeClass([elementsList[j]], classes[k].trim());\n }\n }\n if (elementsList[j].classList.length === 0) {\n elementsList[j].removeAttribute('class');\n }\n }\n if (deniedPropArray[i].styles.length > 0) {\n var styles = deniedPropArray[i].styles;\n var styleLength = styles.length;\n for (var k = 0; k < styleLength; k++) {\n elementsList[j].style.removeProperty(styles[k].trim());\n }\n if (elementsList[j].style.length === 0) {\n elementsList[j].removeAttribute('style');\n }\n }\n if (deniedPropArray[i].attributes.length > 0) {\n var attributes$$1 = deniedPropArray[i].attributes;\n var attributeLength = attributes$$1.length;\n for (var k = 0; k < attributeLength; k++) {\n elementsList[j].removeAttribute(attributes$$1[k].trim());\n }\n }\n }\n }\n }\n }\n return parentElement.firstElementChild;\n };\n FormatPainterActions.prototype.copyAction = function () {\n var copyCollection = [];\n var range = this.parent.nodeSelection.getRange(document);\n var domSelection = this.parent.nodeSelection;\n var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :\n domSelection.getSelectionNodeCollectionBr(range);\n if (nodes.length === 0 && domSelection.getSelectionNodeCollectionBr(range).length === 0) {\n return;\n }\n else {\n nodes = nodes.length === 0 ? domSelection.getSelectionNodeCollectionBr(range) : nodes;\n }\n var parentElem = nodes[0].parentElement;\n var currentContext = this.findCurrentContext(parentElem);\n var allowedRulesArray = this.settings.allowedFormats.indexOf(';') > -1 ? this.settings.allowedFormats.split(';') :\n [this.settings.allowedFormats];\n for (var i = 0; i < allowedRulesArray.length; i++) {\n allowedRulesArray[i] = allowedRulesArray[i].trim();\n }\n var _a = this.getRangeParentElem(currentContext, parentElem), rangeParentElem = _a[0], context = _a[1];\n if (currentContext === null) {\n currentContext = context;\n }\n if (!isNullOrUndefined(currentContext) && this.settings.allowedContext.indexOf(currentContext) > -1) {\n if (range.startContainer.nodeName === '#text') {\n parentElem = range.startContainer.parentElement;\n }\n var lastElement = parentElem;\n do {\n if (allowedRulesArray.indexOf(parentElem.nodeName.toLowerCase()) > -1) {\n var allAttributes = parentElem.attributes;\n var attribute = [];\n for (var i = 0; i < allAttributes.length; i++) {\n if (allAttributes[i].name !== 'class' && allAttributes[i].name !== 'style') {\n attribute.push(allAttributes[i]);\n }\n }\n var classes = parentElem.className;\n var allStyles = parentElem.style;\n var styleProp = [];\n for (var i = 0; i < allStyles.length; i++) {\n var property = allStyles[i];\n var value = allStyles.getPropertyValue(property);\n var priority = allStyles.getPropertyPriority(property);\n styleProp.push({ property: property, value: value, priority: priority });\n }\n copyCollection.push({\n attrs: attribute, className: classes, styles: styleProp, tagName: parentElem.nodeName\n });\n }\n if (rangeParentElem === parentElem) {\n parentElem = undefined;\n }\n else if (!isNullOrUndefined(parentElem.parentElement)) {\n parentElem = parentElem.parentElement;\n }\n if (lastElement === parentElem) {\n break;\n }\n } while (!isNullOrUndefined(parentElem) || parentElem === this.parent.editableElement);\n this.copyCollection = copyCollection;\n }\n this.generateElement();\n };\n FormatPainterActions.prototype.getRangeParentElem = function (currentContext, rangeParent) {\n var startContainer = rangeParent;\n var rangeParentELem;\n if (startContainer.nodeType === 3) {\n startContainer = startContainer.parentElement;\n }\n switch (currentContext) {\n case 'Table':\n rangeParentELem = closest(startContainer, 'td');\n if (isNullOrUndefined(rangeParentELem)) {\n rangeParentELem = closest(startContainer, 'th');\n }\n break;\n case 'List':\n rangeParentELem = closest(startContainer, 'li');\n break;\n case 'Text':\n rangeParentELem = closest(startContainer, 'p');\n break;\n }\n if (isNullOrUndefined(rangeParentELem)) {\n var nearBlockParentName = this.getNearestBlockParentElement(rangeParent);\n if (!isNullOrUndefined(nearBlockParentName) && nearBlockParentName !== 'UL' &&\n nearBlockParentName !== 'OL' && nearBlockParentName !== 'LI') {\n rangeParentELem = closest(startContainer, nearBlockParentName);\n currentContext = 'Text';\n }\n }\n if (currentContext === 'List') {\n rangeParentELem = rangeParentELem.parentElement;\n }\n return [rangeParentELem, currentContext];\n };\n FormatPainterActions.prototype.getNearestBlockParentElement = function (rangeParent) {\n var node = rangeParent;\n if (node.nodeType === 3) {\n node = node.parentNode;\n }\n // iterate untill the content editable div\n while (node && node !== this.parent.editableElement) {\n // If true return the block node name.\n if (!isNullOrUndefined(node) && this.isBlockElement(node)) {\n return node.nodeName;\n }\n // if false re assign node to parent node\n node = node.parentNode;\n }\n return null;\n };\n FormatPainterActions.prototype.isBlockElement = function (node) {\n var blockTags = ['P', 'DIV', 'UL', 'OL', 'LI', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6',\n 'ADDRESS', 'ARTICLE', 'ASIDE', 'BLOCKQUOTE', 'FIGCAPTION', 'FIGURE', 'FOOTER', 'HEADER',\n 'HR', 'MAIN', 'NAV', 'SECTION', 'SUMMARY', 'PRE'];\n return blockTags.indexOf(node.nodeName) > -1;\n };\n FormatPainterActions.prototype.escapeAction = function () {\n this.copyCollection = [];\n };\n FormatPainterActions.prototype.paintPlainTextFormat = function () {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var domSelection = this.parent.nodeSelection;\n var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :\n domSelection.getSelectionNodeCollectionBr(range);\n var isInValid;\n if (nodes.length > 1) {\n for (var i = 0; i < nodes.length; i++) {\n isInValid = this.validateELementTag(nodes[i]);\n }\n }\n else {\n isInValid = this.validateELementTag(range.startContainer) && this.validateELementTag(range.endContainer);\n }\n if (!isInValid) {\n this.parent.execCommand('Clear', 'ClearFormat', null, null);\n }\n };\n FormatPainterActions.prototype.validateELementTag = function (node) {\n if (node.nodeType === 3) {\n node = node.parentElement;\n }\n return this.INVALID_TAGS.indexOf(node.tagName) > -1;\n };\n FormatPainterActions.prototype.findCurrentContext = function (parentElem) {\n if (closest(parentElem, 'p')) {\n return 'Text';\n }\n else if (closest(parentElem, 'li')) {\n return 'List';\n }\n else if (closest(parentElem, 'td') || closest(parentElem, 'tr') || closest(parentElem, 'th')) {\n return 'Table';\n }\n return null;\n };\n FormatPainterActions.prototype.insertFormatNode = function (elem, lastChild) {\n var clonedElem = elem.cloneNode(true);\n if (!this.isBlockElement(elem)) {\n var newBlockElem = createElement('P');\n newBlockElem.appendChild(elem);\n clonedElem = newBlockElem.cloneNode(true);\n }\n var endNode = this.parent.editableElement;\n var docElement = this.parent.currentDocument;\n var childElem = clonedElem.firstChild;\n var inlineElement;\n while (childElem) {\n if (this.isBlockElement(childElem)) {\n childElem = childElem.firstChild;\n }\n else {\n inlineElement = childElem.parentNode.removeChild(childElem);\n break;\n }\n }\n var formatValues = {\n element: inlineElement,\n lastChild: lastChild\n };\n SelectionCommands.applyFormat(docElement, null, endNode, 'P', 'formatPainter', null, formatValues);\n var range = this.parent.nodeSelection.getRange(docElement);\n var isCollapsed = range.collapsed;\n var blockNodes = this.parent.domNode.blockNodes();\n var isFullNodeSelected = false;\n if (blockNodes.length === 1) {\n isFullNodeSelected = blockNodes[0].textContent.trim() === range.toString().trim();\n }\n if (this.isBlockElement(clonedElem) && isCollapsed || blockNodes.length > 1 || isFullNodeSelected) {\n this.insertBlockNode(clonedElem, range, docElement, blockNodes);\n }\n };\n FormatPainterActions.prototype.insertBlockNode = function (element, range, docElement, nodes) {\n var domSelection = this.parent.nodeSelection;\n var saveSelection = domSelection.save(range, docElement);\n this.parent.domNode.setMarker(saveSelection);\n var listElement; // To clone to multiple list elements\n var cloneListParentNode;\n var sameListType = false;\n if (element.nodeName === 'UL' || element.nodeName === 'OL') {\n cloneListParentNode = element.cloneNode(true);\n listElement = cloneListParentNode.firstChild;\n }\n var cloneElementNode = isNullOrUndefined(cloneListParentNode) ? element : element.firstChild;\n for (var index = 0; index < nodes.length; index++) {\n if (this.INVALID_TAGS.indexOf(nodes[index].nodeName) > -1 ||\n nodes[index].querySelectorAll('a,img,audio,video,iframe').length > 0) {\n continue;\n }\n var cloneParentNode = cloneElementNode.cloneNode(false);\n // Appending all the child elements\n while (nodes[index].firstChild) {\n if (nodes[index].textContent.trim().length !== 0) {\n cloneParentNode.appendChild(nodes[index].firstChild);\n }\n else {\n nodes[index].removeChild(nodes[index].firstChild);\n }\n }\n if (nodes[index].nodeName === 'TD' || nodes[index].nodeName === 'TH') {\n if (isNullOrUndefined(cloneListParentNode)) {\n nodes[index].appendChild(cloneParentNode);\n continue;\n }\n else if (index === 0 && !isNullOrUndefined(cloneListParentNode)) {\n nodes[index].appendChild(cloneListParentNode);\n cloneListParentNode.appendChild(cloneParentNode);\n continue;\n }\n else {\n nodes[index].appendChild(cloneParentNode);\n continue;\n }\n }\n if (!isNullOrUndefined(cloneListParentNode)) {\n sameListType = this.isSameListType(element, nodes[index]);\n }\n if (cloneParentNode.nodeName === 'LI' && !sameListType) {\n this.insertNewList(range, nodes, index, cloneListParentNode, cloneParentNode);\n }\n else if (sameListType) {\n this.insertSameList(nodes, index, cloneListParentNode, cloneParentNode);\n }\n else {\n nodes[index].parentNode.replaceChild(cloneParentNode, nodes[index]);\n }\n /**Removing the inserted block node in list and appending to previous element sibling */\n if (cloneParentNode.nodeName !== 'LI' && (cloneParentNode.parentElement.nodeName === 'OL' ||\n cloneParentNode.parentElement.nodeName === 'UL')) {\n var parent_1 = cloneParentNode.parentElement;\n // Cutting single ul or ol to two ul or ol based on the range\n this.parent.nodeCutter.SplitNode(range, parent_1, true);\n if (!isNullOrUndefined(parent_1.previousElementSibling)) {\n parent_1.previousElementSibling.after(cloneParentNode);\n // To remove the nested list items out of the block element\n if (cloneParentNode.childNodes.length > 1) {\n for (var j = 0; j < cloneParentNode.childNodes.length; j++) {\n var currentChild = cloneParentNode.childNodes[j];\n if (currentChild.nodeName === 'OL' || currentChild.nodeName === 'UL') {\n cloneParentNode.after(currentChild);\n }\n }\n }\n }\n else {\n parent_1.parentElement.prepend(cloneParentNode);\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n !isNullOrUndefined(listElement) ? detach(listElement) : false;\n this.cleanEmptyLists();\n var save = this.parent.domNode.saveMarker(saveSelection, null);\n save.restore();\n };\n FormatPainterActions.prototype.insertNewList = function (range, nodes, index, cloneListParentNode, cloneParentNode) {\n // Appending the li nodes to the ol or ul node\n if (index === 0) {\n var nodeName = nodes[index].nodeName;\n nodes[index] = nodes[index].parentNode.replaceChild(cloneListParentNode, nodes[index]);\n var parent_2 = nodeName === 'LI' ? cloneListParentNode.parentElement\n : cloneListParentNode;\n // Splicing and then inserting the node to previous element sibling of the Listparent.parent\n this.parent.nodeCutter.SplitNode(range, parent_2, true);\n if (nodes[index].nodeName === 'LI' && !isNullOrUndefined(parent_2)) {\n cloneListParentNode.append(cloneParentNode);\n if (!isNullOrUndefined(parent_2.parentNode)) {\n parent_2.parentNode.insertBefore(cloneListParentNode, parent_2);\n }\n }\n else {\n if (!isNullOrUndefined(parent_2)) {\n if (!isNullOrUndefined(parent_2.previousElementSibling) && parent_2.previousElementSibling.nodeName === cloneListParentNode.nodeName) {\n var currentParent = parent_2.previousElementSibling;\n currentParent.append(cloneParentNode);\n while (currentParent.firstChild) {\n cloneListParentNode.append(currentParent.firstChild);\n }\n }\n else if (!isNullOrUndefined(parent_2.nextElementSibling) && parent_2.nextElementSibling.nodeName === cloneListParentNode.nodeName) {\n var currentParent = parent_2.nextElementSibling;\n currentParent.prepend(cloneParentNode);\n while (currentParent.firstChild) {\n cloneListParentNode.append(currentParent.firstChild);\n }\n }\n else {\n cloneListParentNode.append(cloneParentNode);\n }\n }\n else {\n cloneListParentNode.append(cloneParentNode);\n }\n }\n }\n else {\n cloneListParentNode.append(cloneParentNode);\n }\n this.detachEmptyBlockNodes(nodes[index]);\n };\n FormatPainterActions.prototype.insertSameList = function (nodes, index, cloneListParentNode, cloneParentNode) {\n if (index === 0) {\n if (!isNullOrUndefined(nodes[index].parentNode) && (nodes[index].parentNode.nodeName === 'UL' || nodes[index].parentNode.nodeName === 'OL')) {\n // append the nodes[index].parentNode.childNodes to the clonelistparentnode\n if (nodes.length === 1) {\n // When clicked with cursor in the single list item\n while (cloneParentNode.firstChild) {\n nodes[index].append(cloneParentNode.firstChild);\n }\n for (var i = 0; i < nodes[index].parentNode.childNodes.length; i++) {\n var currentChild = nodes[index].parentNode.childNodes[i];\n cloneListParentNode.append(currentChild.cloneNode(true));\n }\n }\n else {\n cloneListParentNode.append(cloneParentNode);\n }\n // replace the older ol and ul with new ol and ul of clonelistparentnode\n nodes[index].parentNode.parentNode.replaceChild(cloneListParentNode, nodes[index].parentNode);\n }\n }\n else {\n cloneListParentNode.append(cloneParentNode);\n }\n this.detachEmptyBlockNodes(nodes[index]);\n };\n FormatPainterActions.prototype.isSameListType = function (element, node) {\n var isSameListType = false;\n var nearestListNode = closest(node, 'ol, ul');\n if (!isNullOrUndefined(nearestListNode) && nearestListNode.querySelectorAll('li').length > 0) {\n if (nearestListNode.nodeName === element.nodeName) {\n isSameListType = true;\n }\n else {\n isSameListType = false;\n }\n }\n return isSameListType;\n };\n FormatPainterActions.prototype.cleanEmptyLists = 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 FormatPainterActions.prototype.setDeniedFormats = function () {\n var deniedFormatsCollection = [];\n if (isNullOrUndefined(this.settings) || isNullOrUndefined(this.settings.deniedFormats)) {\n return;\n }\n var deniedFormats = this.settings.deniedFormats.indexOf(';') > -1 ? this.settings.deniedFormats.split(';') :\n [this.settings.deniedFormats];\n var length = deniedFormats.length;\n for (var i = 0; i < length; i++) {\n var formatString = deniedFormats[i];\n if (formatString !== '') {\n formatString.trim();\n var collection = this.makeDeniedFormatsCollection(formatString);\n if (!isNullOrUndefined(collection)) {\n deniedFormatsCollection.push(collection);\n }\n }\n }\n this.deniedFormatsCollection = deniedFormatsCollection;\n };\n FormatPainterActions.prototype.detachEmptyBlockNodes = function (node) {\n if (!isNullOrUndefined(node) && node.textContent.trim() === '') {\n detach(node);\n }\n };\n FormatPainterActions.prototype.makeDeniedFormatsCollection = function (value) {\n var openParenIndex = value.indexOf('(');\n var closeParenIndex = value.indexOf(')');\n var openBracketIndex = value.indexOf('[');\n var closeBracketIndex = value.indexOf(']');\n var openBraceIndex = value.indexOf('{');\n var closeBraceIndex = value.indexOf('}');\n var classes = [];\n var attributes$$1 = '';\n var styles = '';\n var tagName = '';\n var classList = [];\n var attributesList = [];\n var stylesList = [];\n if (openParenIndex > -1 && closeParenIndex > -1) {\n classes = value.substring(openParenIndex + 1, closeParenIndex).split(' ');\n classList = classes[0].split(')')[0].split(',');\n }\n if (openBracketIndex > -1 && closeBracketIndex > -1) {\n attributes$$1 = value.substring(openBracketIndex + 1, closeBracketIndex);\n attributesList = attributes$$1.split(',');\n }\n if (openBraceIndex > -1 && closeBraceIndex > -1) {\n styles = value.substring(openBraceIndex + 1, closeBraceIndex);\n stylesList = styles.split(',');\n }\n var openIndexArray = [openParenIndex, openBracketIndex, openBraceIndex];\n openIndexArray = openIndexArray.filter(function (index) { return index > -1; });\n var len = openIndexArray.length;\n var min;\n if (len === 1) {\n min = openIndexArray[0];\n }\n else if (len === 2) {\n min = Math.min(openIndexArray[0], openIndexArray[1]);\n }\n else if (len === 3) {\n min = Math.min(openIndexArray[0], openIndexArray[1], openIndexArray[2]);\n }\n tagName = value.substring(0, min);\n tagName = tagName.trim();\n return ({\n tag: tagName, styles: stylesList, classes: classList,\n attributes: attributesList\n });\n };\n return FormatPainterActions;\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.formatPainterEditor = new FormatPainterActions(this, options.formatPainterSettings);\n this.emojiPickerObj = new EmojiPickerAction(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 case 'formatpainter':\n this.observer.notify(FORMAT_PAINTER_ACTIONS, { item: exeValue, subCommand: value, event: event, callBack: callBack });\n break;\n case 'emojipicker':\n this.observer.notify(EMOJI_PICKER_ACTIONS, { item: exeValue, subCommand: value, value: text,\n event: event, callBack: callBack });\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, options.formatPainterSettings);\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 * @param {FormatPainterSettingsModel} formatPainterSettings - specifies the format painter settings\n * @returns {void}\n * @hidden\n * @deprecated\n */\n HTMLFormatter.prototype.updateFormatter = function (editElement, doc, options, formatPainterSettings) {\n if (editElement && doc) {\n this.editorManager = new EditorManager({\n document: doc,\n editableElement: editElement,\n options: options,\n formatPainterSettings: formatPainterSettings\n });\n }\n };\n return HTMLFormatter;\n}(Formatter));\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 currentValue !== '


      ' && currentValue !== '

      ' && currentValue !== '
      ') {\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.classList.contains('e-mention-chip')) {\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 var previousLength_1 = range.startContainer.textContent.length;\n var previousRange = range.startOffset;\n range.startContainer.textContent = range.startContainer.textContent.replace(regEx, '');\n pointer = previousRange === 0 ? previousRange : previousRange - (previousLength_1 - range.startContainer.textContent.length);\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 ?\n (focusNode.textContent === currentChildNode[i].textContent ? pointer :\n pointer - (focusNode.textContent.length - focusNode.textContent.replace(regEx, '').length)) :\n 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 var isPreviousNotContentEditable = true;\n if (!isNullOrUndefined(currentRange.startContainer.previousSibling) &&\n currentRange.startContainer.previousSibling.nodeName === 'SPAN') {\n isPreviousNotContentEditable = currentRange.startContainer.previousSibling.contentEditable === 'false' ? false : true;\n }\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 isPreviousNotContentEditable) {\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 var lastNode = this.oldRangeElement.lastChild;\n while (lastNode.nodeType !== 3 && lastNode.nodeName !== '#text' &&\n lastNode.nodeName !== 'BR') {\n lastNode = lastNode.lastChild;\n }\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), \n // eslint-disable-next-line\n lastNode, lastNode.textContent.length);\n if (this.oldRangeElement.querySelectorAll('BR').length === 1) {\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 _this = this;\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 (item.command !== 'FormatPainter') {\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 case 'EmojiPicker':\n this.parent.notify(emojiPicker, { member: 'emojiPicker', args: args });\n break;\n default:\n this.parent.formatter.process(this.parent, args, args.originalEvent, null);\n break;\n }\n }\n }\n else {\n if (args.originalEvent.detail === 1) {\n clearTimeout(this.clickTimeout);\n this.clickTimeout = setTimeout(function () {\n _this.parent.notify(formatPainterClick, {\n member: 'formatPainter', args: args\n });\n }, 200);\n }\n else {\n clearTimeout(this.clickTimeout);\n this.parent.notify(formatPainterDoubleClick, {\n member: 'formatPainter', args: args\n });\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 formatPainterSettings: this.parent.formatPainterSettings\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 var file = void 0;\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 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 var tempDivElem = this.parent.createElement('div');\n tempDivElem.innerHTML = value;\n var isValueNotEmpty = tempDivElem.textContent !== '' || !isNullOrUndefined(tempDivElem.querySelector('img')) ||\n !isNullOrUndefined(tempDivElem.querySelector('table'));\n if (this.parent.pasteCleanupSettings.prompt) {\n if (isValueNotEmpty) {\n e.args.preventDefault();\n this.pasteDialog(value, args);\n }\n else if (Browser.userAgent.indexOf('Firefox') !== -1 && isNullOrUndefined(file)) {\n this.fireFoxImageUpload();\n }\n }\n else if (!isValueNotEmpty && !this.parent.pasteCleanupSettings.plainText &&\n Browser.userAgent.indexOf('Firefox') !== -1) {\n this.fireFoxImageUpload();\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.fireFoxImageUpload = function () {\n var _this = this;\n setTimeout(function () {\n if (Browser.userAgent.indexOf('Firefox') !== -1) {\n var currentFocusNode = _this.nodeSelectionObj.getRange(_this.contentRenderer.getDocument()).startContainer;\n if (currentFocusNode.nodeName !== '#text') {\n // eslint-disable-next-line\n currentFocusNode = currentFocusNode.childNodes[_this.nodeSelectionObj.getRange(_this.contentRenderer.getDocument()).startOffset];\n }\n if (currentFocusNode.previousSibling.nodeName === 'IMG') {\n currentFocusNode.previousSibling.classList.add('pasteContent_Img');\n currentFocusNode.previousSibling.classList.add(CLS_RTE_IMAGE);\n if (_this.parent.insertImageSettings.display === 'inline') {\n currentFocusNode.previousSibling.classList.add(CLS_IMGINLINE);\n }\n else {\n currentFocusNode.previousSibling.classList.add(CLS_IMGBREAK);\n }\n currentFocusNode.previousSibling.classList.add();\n _this.setImageProperties(currentFocusNode.previousSibling);\n }\n }\n _this.imgUploading(_this.parent.inputElement);\n }, 500);\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 /* 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 imgElement.elements[0].classList.add('pasteContent_Img');\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 this.setImageProperties(allImg[i]);\n }\n this.addTempClass(clipBoardElem);\n if (clipBoardElem.textContent !== '' || !isNullOrUndefined(clipBoardElem.querySelector('img')) ||\n !isNullOrUndefined(clipBoardElem.querySelector('table'))) {\n var tempWrapperElem = this.parent.createElement('div');\n tempWrapperElem.innerHTML = value;\n var filesData = [];\n if (!isNullOrUndefined(tempWrapperElem.querySelector('img'))) {\n var imgElem = tempWrapperElem.querySelectorAll('img');\n var base64Src = [];\n var imgName = [];\n var uploadImg = [];\n for (var i = 0; i < imgElem.length; i++) {\n if (imgElem[i].getAttribute('src') &&\n imgElem[i].getAttribute('src').split(',')[0].indexOf('base64') >= 0) {\n base64Src.push(imgElem[i].getAttribute('src'));\n imgName.push(getUniqueID('rte_image'));\n uploadImg.push(imgElem[i]);\n }\n }\n var fileList = [];\n var currentData = void 0;\n for (var i = 0; i < base64Src.length; i++) {\n fileList.push(this.base64ToFile(base64Src[i], imgName[i]));\n currentData = {\n name: fileList[i].name, rawFile: fileList[i],\n size: fileList[i].size, type: fileList[i].type,\n status: '', validationMessages: { minSize: '', maxSize: '' }, statusCode: '1'\n };\n filesData.push(currentData);\n }\n }\n this.parent.trigger(afterPasteCleanup, { value: clipBoardElem.innerHTML, filesData: filesData }, function (updatedArgs) { value = updatedArgs.value; });\n clipBoardElem.innerHTML = value;\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.setImageProperties = function (allImg) {\n if (this.parent.insertImageSettings.width !== 'auto') {\n allImg.setAttribute('width', this.parent.insertImageSettings.width);\n }\n if (this.parent.insertImageSettings.minWidth !== '0' && this.parent.insertImageSettings.minWidth !== 0) {\n allImg.style.minWidth = this.parent.insertImageSettings.minWidth.toString();\n }\n if (this.parent.insertImageSettings.maxWidth !== null) {\n allImg.style.maxWidth = this.parent.getInsertImgMaxWidth().toString();\n }\n if (this.parent.insertImageSettings.height !== 'auto') {\n allImg.setAttribute('height', this.parent.insertImageSettings.height);\n }\n if (this.parent.insertImageSettings.minHeight !== '0' && this.parent.insertImageSettings.minHeight !== 0) {\n allImg.style.minHeight = this.parent.insertImageSettings.minHeight.toString();\n }\n if (this.parent.insertImageSettings.maxHeight !== null) {\n allImg.style.maxHeight = this.parent.insertImageSettings.maxHeight.toString();\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.trigger(afterPasteCleanup, { value: clipBoardElem.innerHTML, filesData: null }, function (updatedArgs) { value = updatedArgs.value; });\n clipBoardElem.innerHTML = value;\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) ? eventType.clientX - boundRect.left + 'px' : boundRect.right - eventType.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 beforeSend: this.parent.fileManagerSettings.beforeSend,\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 if (this.parent.showTooltip && !isNullOrUndefined(document.querySelector('.e-tooltip-wrap'))) {\n this.parent.notify(maximizeMinimizeClick, { args: event });\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.showTooltip && !isNullOrUndefined(document.querySelector('.e-tooltip-wrap'))) {\n this.parent.notify(maximizeMinimizeClick, { args: event });\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.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\nvar FormatPainter = /** @__PURE__ @class */ (function () {\n function FormatPainter(parent) {\n this.isSticky = false;\n this.isActive = false;\n this.parent = parent;\n this.addEventListener();\n }\n FormatPainter.prototype.addEventListener = function () {\n this.parent.on(formatPainterClick, this.toolbarClick, this);\n this.parent.on(formatPainterDoubleClick, this.toolbarDoubleClick, this);\n this.parent.on(editAreaClick, this.editAreaClick, this);\n this.parent.on(keyDown, this.onKeyDown, this);\n this.parent.on(destroy, this.destroy, this);\n };\n FormatPainter.prototype.toolbarClick = function (clickargs) {\n this.parent.focusIn();\n if (!this.isSticky) {\n this.isActive = true;\n this.actionHandler(clickargs, 'click');\n }\n else {\n // Handling the format painter double click toolbar esape action\n clickargs.args.action = 'escape';\n this.actionHandler(clickargs, 'keyBoard');\n }\n };\n FormatPainter.prototype.toolbarDoubleClick = function (args) {\n this.isActive = true;\n this.isSticky = true;\n this.parent.focusIn();\n this.actionHandler(args, 'dbClick');\n };\n FormatPainter.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n if ((originalEvent.altKey && originalEvent.shiftKey && (originalEvent.action === 'format-copy' || originalEvent.action === 'format-paste'))\n || (originalEvent.action === 'escape' && (this.previousAction === 'format-copy' || this.previousAction === 'format-paste'))) {\n if ((originalEvent.action === 'format-copy' || originalEvent.action === 'format-paste')) {\n originalEvent.stopPropagation();\n }\n this.actionHandler(event, 'keyBoard');\n }\n };\n FormatPainter.prototype.actionHandler = function (event, type) {\n var action;\n var isKeyboard = false;\n var originalEvent;\n var args;\n var item;\n switch (type) {\n case 'dbClick':\n args = event.args;\n item = args.item;\n originalEvent = event.args.originalEvent;\n action = 'format-copy';\n break;\n case 'keyBoard':\n args = null;\n originalEvent = event.args;\n isKeyboard = true;\n action = event.args.action;\n if (action === 'escape') {\n this.isSticky = false;\n this.isActive = false;\n }\n break;\n case 'click':\n args = event.args;\n item = args.item;\n originalEvent = event.args.originalEvent;\n action = 'format-copy';\n break;\n case 'docClick':\n originalEvent = event;\n action = 'format-paste';\n break;\n }\n this.updateCursor(isKeyboard);\n var enable = type === 'docClick' || action === 'escape' ? false : true;\n this.updateToolbarBtn(enable);\n if (isNullOrUndefined(item)) {\n item = {\n command: 'FormatPainter',\n subCommand: 'FormatPainter'\n };\n }\n var actionBeginArgs = {\n requestType: 'FormatPainter', originalEvent: originalEvent, name: action, item: item\n };\n var value = {\n formatPainterAction: action\n };\n this.parent.formatter.process(this.parent, actionBeginArgs, originalEvent, value);\n this.previousAction = action;\n };\n FormatPainter.prototype.updateCursor = function (isKeyboard) {\n if (!this.parent.inputElement.classList.contains('e-rte-cursor-brush') && !isKeyboard) {\n addClass([this.parent.inputElement], 'e-rte-cursor-brush');\n }\n else if (!this.isSticky) {\n removeClass([this.parent.inputElement], 'e-rte-cursor-brush');\n }\n };\n FormatPainter.prototype.updateToolbarBtn = function (enable) {\n var toolbarBtn = this.parent.element.querySelector('.e-rte-format-painter').parentElement.parentElement;\n if (enable) {\n addClass([toolbarBtn], 'e-active');\n }\n else if (!this.isSticky) {\n removeClass([toolbarBtn], 'e-active');\n }\n };\n FormatPainter.prototype.editAreaClick = function (args) {\n if (this.isActive) {\n if (!this.isSticky) {\n this.isActive = false;\n }\n this.actionHandler(args, 'docClick');\n this.updateToolbarBtn(false);\n }\n };\n FormatPainter.prototype.destroy = function () {\n if (isNullOrUndefined(this.parent) || this.parent.isDestroyed) {\n return;\n }\n this.parent.off(formatPainterClick, this.toolbarClick);\n this.parent.off(editAreaClick, this.editAreaClick);\n this.parent.off(formatPainterDoubleClick, this.toolbarDoubleClick);\n this.parent.off(keyDown, this.onKeyDown);\n this.parent.off(destroy, this.destroy);\n if (!isNullOrUndefined(this.parent.formatter.editorManager.formatPainterEditor)) {\n this.parent.formatter.editorManager.formatPainterEditor.destroy();\n }\n this.parent = undefined;\n this.isSticky = undefined;\n this.isActive = undefined;\n this.previousAction = undefined;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n FormatPainter.prototype.getModuleName = function () {\n return 'formatPainter';\n };\n return FormatPainter;\n}());\n\nvar EmojiPicker = /** @__PURE__ @class */ (function () {\n function EmojiPicker(parent, serviceLocator) {\n this.parent = parent;\n this.locator = serviceLocator;\n this.i10n = serviceLocator.getService('rteLocale');\n this.renderFactory = this.locator.getService('rendererFactory');\n this.baseToolbar = new BaseToolbar(this.parent, this.locator);\n this.addEventListener();\n }\n /**\n * Destroys the Count.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n EmojiPicker.prototype.destroy = function () {\n this.removeEventListener();\n };\n EmojiPicker.prototype.addEventListener = function () {\n this.parent.on(emojiPicker, this.toolbarClick, this);\n this.parent.on(docClick, this.docClick, this);\n this.parent.on(keyDown, this.onkeyPress, this);\n this.parent.on(keyUp, this.onkeyUp, this);\n this.parent.on(contentscroll, this.contentscroll, this);\n this.parent.on(scroll, this.contentscroll, this);\n };\n // eslint-disable-next-line\n EmojiPicker.prototype.toolbarClick = function (args) {\n var _this = this;\n var _a, _b;\n var spanElement = this.parent.element.querySelector('.e-emoji');\n this.divElement = spanElement.closest('div');\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n this.save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n this.clickEvent = args.args;\n var emojiPicker$$1 = this.parent.emojiPickerSettings.iconsSet;\n if (this.popupObj) {\n removeClass([this.divElement], 'e-active');\n if (this.popupObj.element.querySelector('.e-rte-emoji-search') || !this.parent.emojiPickerSettings.showSearchBox) {\n this.popupObj.hide();\n return;\n }\n this.popupObj.hide();\n }\n this.popDiv = this.parent.createElement('div', { className: 'e-rte-emojipicker-popup', id: this.parent.getID() + '_emojiPicker' });\n this.parent.getToolbar().appendChild(this.popDiv);\n EventHandler.add(this.popDiv, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.popDiv, 'keyup', this.searchFilter, this);\n var extendEle = this.parent.element.querySelector('.e-toolbar-extended');\n var zIndex;\n if (!isNullOrUndefined(extendEle)) {\n var computedStyle = window.getComputedStyle(extendEle);\n zIndex = computedStyle.getPropertyValue('z-index');\n }\n else {\n zIndex = '10001';\n }\n var target;\n var xValue;\n var yValue;\n if (!isNullOrUndefined(args.args)) {\n target = args.args.originalEvent.target;\n target = target.classList.contains('e-toolbar-item') ? target.firstChild : target.parentElement;\n xValue = 'left';\n yValue = 'bottom';\n }\n else if (isNullOrUndefined(args.x) && isNullOrUndefined(args.y)) {\n target = this.parent.inputElement;\n if (window.getSelection().rangeCount > 0) {\n var coordinates = this.getCoordinates();\n xValue = coordinates.left;\n yValue = coordinates.top;\n }\n }\n else {\n target = this.parent.inputElement;\n xValue = args.x;\n yValue = args.y;\n }\n this.popupObj = new Popup(this.popDiv, {\n targetType: 'relative',\n relateTo: target,\n collision: { X: 'fit', Y: 'none' },\n offsetY: 8,\n viewPortElement: this.parent.element,\n position: { X: xValue, Y: yValue },\n enableRtl: this.parent.enableRtl,\n zIndex: parseInt(zIndex, 10) + 1,\n actionOnScroll: 'hide',\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 this.popupObj.refreshPosition(target);\n // header search element\n if ((!isNullOrUndefined(args.args) || (isNullOrUndefined(args.x) && isNullOrUndefined(args.y))) && this.parent.emojiPickerSettings.showSearchBox) {\n var inputEle = createElement('input', { id: 'e-rte-emoji-search', className: 'e-rte-emoji-search' });\n this.popDiv.append(inputEle);\n var inputobj = new TextBox({\n placeholder: this.i10n.getConstant('emojiPickerTypeToFind'),\n showClearButton: true\n });\n inputobj.appendTo(inputEle);\n inputEle.focus();\n }\n var closeIcon = this.popupObj.element.querySelector('.e-clear-icon');\n if (!isNullOrUndefined(closeIcon)) {\n EventHandler.add(closeIcon, 'mousedown', this.searchFilter, this);\n }\n // Header emoji toolbar div\n var emojiToolBar = this.parent.createElement('div', { className: 'e-rte-emojipicker-toolbar' });\n this.popDiv.appendChild(emojiToolBar);\n var pushToolBar = [];\n for (var i = 0; i < this.parent.emojiPickerSettings.iconsSet.length; i++) {\n if (!isNullOrUndefined(this.parent.emojiPickerSettings.iconsSet[i].iconCss)) {\n pushToolBar.push({ prefixIcon: this.parent.emojiPickerSettings.iconsSet[i].iconCss, htmlAttributes: (_a = {}, _a['title'] = this.parent.emojiPickerSettings.iconsSet[i].name, _a) });\n }\n else {\n pushToolBar.push({ text: '&#x' + this.parent.emojiPickerSettings.iconsSet[i].code + ';', htmlAttributes: (_b = {}, _b['title'] = this.parent.emojiPickerSettings.iconsSet[i].name, _b) });\n }\n }\n var toolbarObj = new Toolbar({\n items: pushToolBar,\n clicked: this.emojiToolbarClick.bind(this)\n });\n toolbarObj.appendTo(emojiToolBar);\n // emoji btn div\n var emojiBtnDiv = this.parent.createElement('div', { className: 'e-rte-emojipicker-btn' });\n this.popDiv.appendChild(emojiBtnDiv);\n var height;\n var popupBorder = window.getComputedStyle(this.popDiv);\n if ((isNullOrUndefined(args.args) && !(isNullOrUndefined(args.x) && isNullOrUndefined(args.y))) || !this.parent.emojiPickerSettings.showSearchBox) {\n height = (this.popDiv.getBoundingClientRect().height - emojiToolBar.getBoundingClientRect().height - (2 * parseFloat(popupBorder.borderWidth))) + 'px';\n emojiBtnDiv.style.setProperty('height', height, 'important');\n }\n else {\n var inputELe = this.parent.element.querySelector('.e-rte-emoji-search').parentElement;\n var getComputedStyle_1 = window.getComputedStyle(inputELe);\n height = (this.popDiv.getBoundingClientRect().height - emojiToolBar.getBoundingClientRect().height\n - inputELe.getBoundingClientRect().height\n - parseFloat(getComputedStyle_1.marginTop) - parseFloat(getComputedStyle_1.marginBottom)\n - (2 * parseFloat(popupBorder.borderWidth))) + 'px';\n emojiBtnDiv.style.setProperty('height', height, 'important');\n }\n for (var i = 0; i < emojiPicker$$1.length; i++) {\n var emojiGroupDiv = this.parent.createElement('div', { className: 'e-rte-emojipicker-group' });\n emojiBtnDiv.appendChild(emojiGroupDiv);\n var emojiName = this.parent.createElement('div', { className: 'e-rte-emojipicker-name' });\n emojiName.innerText = this.parent.emojiPickerSettings.iconsSet[i].name;\n emojiName.setAttribute('aria-label', this.parent.emojiPickerSettings.iconsSet[i].name);\n emojiGroupDiv.appendChild(emojiName);\n var emojiBtn = this.parent.createElement('div', { className: 'e-rte-emojipickerbtn-group' });\n emojiGroupDiv.appendChild(emojiBtn);\n for (var j = 0; j < emojiPicker$$1[i].icons.length; j++) {\n var button = this.parent.createElement('button', { className: 'e-btn ' + ' ' + 'e-control' });\n button.innerHTML = this.buttoncode(this.parent.emojiPickerSettings.iconsSet[i].icons[j].code);\n button.setAttribute('aria-label', (this.parent.emojiPickerSettings.iconsSet[i].icons[j].desc));\n button.setAttribute('title', (this.parent.emojiPickerSettings.iconsSet[i].icons[j].desc));\n emojiBtn.appendChild(button);\n if (button.innerHTML.length > 2) {\n button.style.fontSize = '17px';\n }\n }\n }\n EventHandler.add(emojiBtnDiv, 'scroll', this.scrollEvent, this);\n EventHandler.add(emojiBtnDiv, 'click', this.emojiBtnClick, this);\n var emojiButtons = this.parent.element.querySelectorAll('.e-rte-emojipicker-btn button');\n if (isNullOrUndefined(this.parent.element.querySelector('.e-rte-emoji-search')) && !isNullOrUndefined(args.args)) {\n emojiButtons[0].focus();\n addClass([emojiButtons[0]], 'e-focus');\n }\n var popup = this.parent.element.querySelector('.e-rte-emojipicker-btn');\n var toolbarName = this.parent.element.querySelectorAll('.e-rte-emojipicker-toolbar button');\n var scrollTop;\n if (!isNullOrUndefined(popup)) {\n scrollTop = Math.round(popup.scrollTop);\n }\n for (var i = 0; i < toolbarName.length; i++) {\n /* eslint-disable */\n if (toolbarName[i].classList.contains('e-selected')) {\n removeClass([toolbarName[i]], 'e-selected');\n }\n /* eslint-enable */\n }\n if (scrollTop < toolbarName[0].offsetHeight) {\n addClass([toolbarName[0]], 'e-selected');\n }\n if (this.popupObj) {\n addClass([this.divElement], 'e-active');\n }\n };\n EmojiPicker.prototype.buttoncode = function (value) {\n var valueLength = value.split('-');\n // eslint-disable-next-line\n var joinedEmoji = valueLength.map(function (cp) { return String.fromCodePoint(parseInt(cp, 16)); }).join('\\u200D');\n return joinedEmoji;\n };\n EmojiPicker.prototype.docClick = function (e) {\n var target = e.args.target;\n if (target && target.classList && ((this.popupObj && !closest(target, '[id=' + '\\'' + this.popupObj.element.id + '\\'' + ']')))\n && (!target.classList.contains('e-emoji') && !target.classList.contains('e-toolbar-item'))) {\n if (this.popupObj) {\n removeClass([this.divElement], 'e-active');\n this.popupObj.hide();\n }\n }\n };\n EmojiPicker.prototype.scrollEvent = function () {\n var popup = this.parent.element.querySelector('.e-rte-emojipicker-btn');\n var emojiSet = this.parent.element.querySelectorAll('.e-rte-emojipicker-group');\n var toolbarName = this.parent.element.querySelectorAll('.e-rte-emojipicker-toolbar button');\n var scrollTop;\n if (!isNullOrUndefined(popup)) {\n scrollTop = Math.round(popup.scrollTop);\n }\n var firstSetWidth = 0;\n for (var j = 0; j < toolbarName.length; j++) {\n if (scrollTop < toolbarName[0].offsetHeight) {\n if (!isNullOrUndefined(toolbarName[j + 1])) {\n removeClass([toolbarName[j + 1]], 'e-selected');\n }\n addClass([toolbarName[0]], 'e-selected');\n }\n }\n for (var i = 0; i < emojiSet.length; i++) {\n // eslint-disable-next-line\n firstSetWidth += Math.round(emojiSet[i].offsetHeight);\n if (scrollTop >= firstSetWidth) {\n for (var k = 0; k < toolbarName.length; k++) {\n /* eslint-disable */\n if (toolbarName[k].classList.contains('e-selected')) {\n removeClass([toolbarName[k]], 'e-selected');\n }\n /* eslint-enable */\n }\n if (!isNullOrUndefined(toolbarName[i + 1])) {\n addClass([toolbarName[i + 1]], 'e-selected');\n }\n }\n }\n };\n EmojiPicker.prototype.contentscroll = function () {\n if (isNullOrUndefined(this.clickEvent) && this.popupObj) {\n removeClass([this.divElement], 'e-active');\n this.popupObj.hide();\n return;\n }\n };\n EmojiPicker.prototype.emojiToolbarClick = function (e) {\n var args = {\n // eslint-disable-next-line\n text: e.item.htmlAttributes.title,\n };\n var currentEleName = args.text;\n var emojiGroups = this.parent.element.querySelectorAll('.e-rte-emojipicker-group');\n var emojiButtons = this.parent.element.querySelectorAll('.e-rte-emojipicker-btn button');\n var toolbarName = this.parent.element.querySelectorAll('.e-rte-emojipicker-toolbar button');\n for (var i = 0; i < toolbarName.length; i++) {\n /* eslint-disable */\n if (toolbarName[i].classList.contains('e-selected')) {\n removeClass([toolbarName[i]], 'e-selected');\n }\n /* eslint-enable */\n }\n for (var i = 0; i < emojiButtons.length; i++) {\n if (emojiButtons[i].classList.contains('e-focus')) {\n removeClass([emojiButtons[i]], 'e-focus');\n }\n }\n // Loop through the selected elements and perform the same operation on each element\n var emojiGroupsheight = this.parent.element.querySelector('.e-rte-emojipicker-btn');\n var emojiHeight = 0;\n // eslint-disable-next-line\n emojiGroups.forEach(function (group) {\n var childNodes = group.childNodes[0];\n var focusBtn = group.childNodes[1].childNodes[0];\n var ariaLabel = childNodes.getAttribute('aria-label');\n if (currentEleName === ariaLabel) {\n if (childNodes) {\n emojiGroupsheight.scrollTop = emojiHeight + 10;\n addClass([focusBtn], 'e-focus');\n focusBtn.focus();\n }\n }\n else {\n emojiHeight += group.scrollHeight;\n removeClass([focusBtn], 'e-focus');\n }\n });\n };\n EmojiPicker.prototype.onKeyDown = function (e) {\n // Select all emoji buttons\n var emojiButtons = this.parent.element.querySelectorAll('.e-rte-emojipicker-btn button');\n var emojiGroups = this.parent.element.querySelectorAll('.e-rte-emojipickerbtn-group');\n var searchKeyHandler = this.parent.element.querySelector('.e-rte-emojisearch-btn button');\n if (e.keyCode === 27) {\n if (this.popupObj) {\n removeClass([this.divElement], 'e-active');\n this.popupObj.hide();\n }\n }\n if (e.keyCode === 13) {\n var activeEle = document.activeElement;\n if (activeEle.classList.contains('e-btn')) {\n this.emojiBtnClick(e);\n e.preventDefault();\n }\n }\n var srcElement = e.srcElement;\n if (!isNullOrUndefined(srcElement)) {\n if (srcElement.classList.contains('e-rte-emoji-search') && e.keyCode === 40) {\n for (var i = 0; i < emojiButtons.length; i++) {\n if (emojiButtons[i].classList.contains('e-focus')) {\n removeClass([emojiButtons[i]], 'e-focus');\n }\n }\n }\n }\n if (!isNullOrUndefined(searchKeyHandler)) {\n this.filterKeyHandler(e);\n }\n else {\n for (var i = 0; i < emojiButtons.length; i++) {\n var focusIndex = i;\n if (emojiButtons[i].classList.contains('e-focus')) {\n if (e.keyCode === 40) {\n // Move focus to next row if there is one\n if (emojiButtons.length - 4 > i) {\n var count$$1 = 0;\n for (var j = 0; j < emojiGroups.length; j++) {\n for (var k = 0; k < emojiGroups[j].childNodes.length; k++) {\n // eslint-disable-next-line\n var childNodes = emojiGroups[j].childNodes[k];\n if (childNodes.classList.contains('e-focus') && count$$1 !== 1) {\n var currentIndex = k;\n var lastChild = emojiGroups[j].lastChild;\n var lastRowIndex = Math.floor((k) % 6);\n var lastEleLength = emojiGroups[j].childNodes.length - 1;\n var lastEleIndex = Math.floor((lastEleLength) % 6);\n if (currentIndex !== -1) {\n var nextRowIndex = currentIndex + 6;\n if (!isNullOrUndefined(emojiGroups[j].childNodes[nextRowIndex])) {\n // next row has six buttons\n // handle focus change here\n var firstFocusEle = emojiButtons[i];\n removeClass([firstFocusEle], 'e-focus');\n var focusEle = emojiButtons[focusIndex += 6];\n addClass([focusEle], 'e-focus');\n focusEle.focus();\n break;\n }\n else if (isNullOrUndefined(emojiGroups[j].childNodes[nextRowIndex]) && !lastChild.classList.contains('e-focus') && lastEleIndex < lastRowIndex) {\n var firstFocusEle = emojiButtons[i];\n removeClass([firstFocusEle], 'e-focus');\n var focusEle = emojiGroups[j].lastChild;\n addClass([focusEle], 'e-focus');\n focusEle.focus();\n count$$1 = 1;\n break;\n }\n else {\n var firstFocusEle = emojiButtons[i];\n removeClass([firstFocusEle], 'e-focus');\n var focusEle = emojiGroups[j + 1]\n .childNodes[lastRowIndex];\n addClass([focusEle], 'e-focus');\n focusEle.focus();\n count$$1 = 1;\n break;\n }\n }\n }\n }\n }\n break;\n }\n }\n else if (e.keyCode === 38) {\n // Move focus to previous row if there is one\n if (i >= 6) {\n var count$$1 = 0;\n for (var j = 0; j < emojiGroups.length; j++) {\n for (var k = 0; k < emojiGroups[j].childNodes.length; k++) {\n var childNodes = emojiGroups[j].childNodes[k];\n if (childNodes.classList.contains('e-focus') && count$$1 !== 1) {\n // eslint-disable-next-line\n var currentIndex = k;\n var previousRowLength = isNullOrUndefined(emojiGroups[j - 1]) ? null :\n emojiGroups[j - 1].childNodes.length % 6 || 6;\n if (currentIndex !== -1) {\n var previousRowIndex = currentIndex - 6;\n if (!isNullOrUndefined(emojiGroups[j].childNodes[previousRowIndex])) {\n // previous row has six buttons\n // handle focus change here\n var firstFocusEle = emojiButtons[i];\n removeClass([firstFocusEle], 'e-focus');\n var focusEle = emojiButtons[focusIndex -= 6];\n addClass([focusEle], 'e-focus');\n focusEle.focus();\n break;\n }\n else if (isNullOrUndefined(emojiGroups[j - 1].childNodes[emojiGroups[j - 1]\n .childNodes.length - (previousRowLength - k)])) {\n var firstFocusEle = emojiButtons[i];\n removeClass([firstFocusEle], 'e-focus');\n var focusEle = emojiGroups[j - 1].lastChild;\n addClass([focusEle], 'e-focus');\n focusEle.focus();\n count$$1 = 1;\n break;\n }\n else {\n // previous row has less than six buttons\n // handle focus change here\n var firstFocusEle = emojiButtons[i];\n removeClass([firstFocusEle], 'e-focus');\n var focusEle = emojiGroups[j - 1].childNodes[emojiGroups[j - 1].\n childNodes.length - (previousRowLength - k)];\n addClass([focusEle], 'e-focus');\n focusEle.focus();\n count$$1 = 1;\n break;\n }\n }\n }\n }\n }\n }\n else {\n var firstFocusEle = emojiButtons[i];\n removeClass([firstFocusEle], 'e-focus');\n var focusEle = emojiButtons[focusIndex -= 1];\n var inputELe = this.popupObj.element.querySelector('.e-rte-emoji-search');\n if (isNullOrUndefined(focusEle) && !isNullOrUndefined(inputELe)) {\n inputELe.focus();\n break;\n }\n addClass([focusEle], 'e-focus');\n focusEle.focus();\n }\n break;\n }\n else if (e.keyCode === 39) {\n // Move focus to next button in current row\n if (emojiButtons.length !== i + 1) {\n var firstFocusEle = emojiButtons[i];\n removeClass([firstFocusEle], 'e-focus');\n var focusEle = emojiButtons[focusIndex += 1];\n addClass([focusEle], 'e-focus');\n emojiButtons[focusIndex].focus();\n }\n break;\n }\n else if (e.keyCode === 37) {\n // Move focus to previous button in current row\n if (i > 0) {\n var firstFocusEle = emojiButtons[i];\n removeClass([firstFocusEle], 'e-focus');\n var focusEle = emojiButtons[focusIndex -= 1];\n addClass([focusEle], 'e-focus');\n emojiButtons[focusIndex].focus();\n }\n break;\n }\n }\n }\n }\n if (e.keyCode === 40) {\n var firstFocusEle = this.parent.element.querySelector('.e-focus');\n if (isNullOrUndefined(firstFocusEle)) {\n var focusEle = emojiButtons[0];\n addClass([focusEle], 'e-focus');\n emojiButtons[0].focus();\n }\n }\n };\n EmojiPicker.prototype.filterKeyHandler = function (e) {\n var emojiButtons = this.parent.element.querySelectorAll('.e-rte-emojisearch-btn button');\n var firstFocusEle = this.parent.element.querySelector('.e-focus');\n if (isNullOrUndefined(firstFocusEle) && e.keyCode === 40) {\n var focusEle = emojiButtons[0];\n addClass([focusEle], 'e-focus');\n emojiButtons[0].focus();\n }\n else {\n for (var i = 0; i < emojiButtons.length; i++) {\n var focusIndex = i;\n // eslint-disable-next-line\n var childNodes = emojiButtons[i];\n if (childNodes.classList.contains('e-focus')) {\n if (e.keyCode === 38) {\n if (i >= 6) {\n var firstFocusEle_1 = emojiButtons[i];\n removeClass([firstFocusEle_1], 'e-focus');\n var focusEle = emojiButtons[focusIndex -= 6];\n addClass([focusEle], 'e-focus');\n focusEle.focus();\n break;\n }\n else {\n var firstFocusEle_2 = emojiButtons[i];\n removeClass([firstFocusEle_2], 'e-focus');\n var focusEle = emojiButtons[focusIndex -= 1];\n var inputELe = this.popupObj.element.querySelector('.e-rte-emoji-search');\n if (isNullOrUndefined(focusEle) && !isNullOrUndefined(inputELe)) {\n inputELe.focus();\n break;\n }\n addClass([focusEle], 'e-focus');\n focusEle.focus();\n }\n }\n else if (e.keyCode === 40) {\n if (emojiButtons.length - 6 > i) {\n var firstFocusEle_3 = emojiButtons[i];\n removeClass([firstFocusEle_3], 'e-focus');\n var focusEle = emojiButtons[focusIndex += 6];\n addClass([focusEle], 'e-focus');\n focusEle.focus();\n break;\n }\n }\n else if (e.keyCode === 39) {\n if (emojiButtons.length !== i + 1) {\n var firstFocusEle_4 = emojiButtons[i];\n removeClass([firstFocusEle_4], 'e-focus');\n var focusEle = emojiButtons[focusIndex += 1];\n addClass([focusEle], 'e-focus');\n emojiButtons[focusIndex].focus();\n }\n break;\n }\n else if (e.keyCode === 37) {\n if (i > 0) {\n var firstFocusEle_5 = emojiButtons[i];\n removeClass([firstFocusEle_5], 'e-focus');\n var focusEle = emojiButtons[focusIndex -= 1];\n addClass([focusEle], 'e-focus');\n emojiButtons[focusIndex].focus();\n break;\n }\n }\n }\n }\n }\n };\n EmojiPicker.prototype.searchFilter = function (e, value) {\n var inputElement = this.parent.element.querySelector('.e-rte-emoji-search');\n var contentELe = this.parent.element.querySelector('.e-content');\n if (document.activeElement === inputElement || document.activeElement === contentELe) {\n var trimmedStr = void 0;\n if (value !== ':' && !isNullOrUndefined(value)) {\n trimmedStr = value.replace(/^:/, '');\n }\n else if (!isNullOrUndefined(value)) {\n trimmedStr = value;\n }\n var inputValue = isNullOrUndefined(inputElement) ? trimmedStr : inputElement.value;\n var emojiButtons = this.parent.element.querySelectorAll('.e-rte-emojipicker-btn button');\n var emojipickerAll = this.parent.element.querySelector('.e-rte-emojipicker-btn');\n var emojiGroups = this.parent.element.querySelectorAll('.e-rte-emojipicker-group');\n var toolbarGroup = this.parent.element.querySelector('.e-rte-emojipicker-toolbar');\n var excludedDiv_1 = this.parent.element.querySelector('.e-rte-emojisearch-btn');\n var firstChild = this.popDiv.childNodes[0];\n var getComputedStyle_2 = window.getComputedStyle(firstChild);\n var inputHeight = firstChild.nodeName === 'SPAN' ? (firstChild.getBoundingClientRect().height + parseFloat(getComputedStyle_2.marginTop) +\n parseFloat(getComputedStyle_2.marginBottom)) : 0;\n var popupBorder = window.getComputedStyle(this.popDiv);\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var filteredButtons = isNullOrUndefined(excludedDiv_1) ? emojiButtons :\n // eslint-disable-next-line @typescript-eslint/tslint/config\n Array.from(emojiButtons).filter(function (button) { return !excludedDiv_1.contains(button); });\n if (inputValue === '' || value === ':') {\n toolbarGroup.style.display = '';\n emojipickerAll.style.height = (this.popDiv.getBoundingClientRect().height - toolbarGroup.getBoundingClientRect().height - inputHeight - (2 * parseFloat(popupBorder.borderWidth))) + 'px';\n // eslint-disable-next-line @typescript-eslint/tslint/config\n emojiGroups.forEach(function (element) {\n element.style.display = '';\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/tslint/config\n emojiGroups.forEach(function (element) {\n element.style.display = 'none';\n });\n toolbarGroup.style.display = 'none';\n emojipickerAll.style.height = (this.popDiv.getBoundingClientRect().height - inputHeight - (2 * parseFloat(popupBorder.borderWidth))) + 'px';\n }\n var emojiBtnDiv = this.parent.createElement('div', { className: 'e-rte-emojisearch-btn' });\n var emojis = this.parent.element.querySelector('.e-rte-emojisearch-btn');\n if (emojis) {\n emojis.remove();\n }\n var noEmojiObj = this.parent.createElement('div', { className: 'e-rte-emojiSearch-noEmoji' });\n var noEMoji = true;\n for (var i = 0; i < filteredButtons.length; i++) {\n if (!isNullOrUndefined(filteredButtons[i].getAttribute('title'))) {\n var title = filteredButtons[i].getAttribute('title').toLowerCase();\n var titleLength = title.split(' ');\n for (var j = 0; j < titleLength.length; j++) {\n if (titleLength[j].startsWith(inputValue.toLowerCase()) && inputValue !== '') {\n var emoji = filteredButtons[i].cloneNode(true);\n emojiBtnDiv.appendChild(emoji);\n noEMoji = false;\n break;\n }\n }\n }\n }\n if (noEMoji && !this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji') && (inputValue !== '' && value !== ':')) {\n noEmojiObj.innerHTML = '' + this.i10n.getConstant('emojiPickerNoResultFound') + ' 😥 ' + '
      ' + ' ' + this.i10n.getConstant('emojiPickerTrySomethingElse') + ' ? ';\n noEmojiObj.style.margin = '55px';\n emojipickerAll.appendChild(noEmojiObj);\n }\n else if (!noEMoji && this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji') || (inputValue === '' && value === ':')) {\n emojipickerAll.removeChild(this.parent.element.querySelector('.e-rte-emojiSearch-noEmoji'));\n }\n emojipickerAll.appendChild(emojiBtnDiv);\n }\n else {\n return;\n }\n };\n EmojiPicker.prototype.emojiBtnClick = function (e) {\n var event = new MouseEvent('mouseleave', { bubbles: true, cancelable: true });\n // Includes the emote button element tooltip and toolbar tooltip\n var emotePickerTooltips = this.parent.element.querySelectorAll('.e-rte-emojipicker-popup [data-tooltip-id]');\n for (var i = 0; i < emotePickerTooltips.length; i++) {\n emotePickerTooltips[i].dispatchEvent(event);\n }\n var targetEle = e.target;\n if (targetEle.tagName !== 'BUTTON') {\n return;\n }\n targetEle.focus();\n var startOffset = this.save.startOffset;\n var textContent = this.save.range.startContainer.textContent;\n var previousText = textContent.substring(startOffset, startOffset + 1);\n // When toolbar action is clicked then only restore the range. \n if (!isNullOrUndefined(this.clickEvent) || previousText !== ':') {\n this.save.restore();\n }\n if (this.popupObj) {\n removeClass([this.divElement], 'e-active');\n this.popupObj.hide();\n }\n var originalEvent = e;\n this.parent.formatter.process(this.parent, {\n item: {\n 'command': 'EmojiPicker',\n 'subCommand': 'EmojiPicker',\n value: targetEle.innerHTML\n }\n }, e, originalEvent);\n };\n EmojiPicker.prototype.onkeyPress = function (e) {\n var originalEvent = e.args;\n var selection = window.getSelection();\n if (selection.rangeCount <= 0) {\n return;\n }\n var range = selection.getRangeAt(0);\n var cursorPos = range.startOffset;\n var prevChar = selection.focusNode.textContent.substring(cursorPos - 1, cursorPos);\n var isPrevSpace = /\\s/.test(prevChar);\n var isPrevColon = selection.focusNode.textContent.substring(cursorPos - 1, cursorPos) === ':';\n var colon = selection.focusNode.textContent.charAt(cursorPos - 1) === ':';\n if (originalEvent.keyCode === 186 && originalEvent.shiftKey && (isPrevSpace || selection.focusOffset === 0)) {\n var coordinates = this.getCoordinates();\n this.parent.showEmojiPicker(coordinates.left, coordinates.top);\n }\n if (originalEvent.keyCode === 8 && colon && this.popupObj) {\n removeClass([this.divElement], 'e-active');\n this.popupObj.hide();\n }\n if (originalEvent.keyCode === 32 && isPrevColon && this.popupObj) {\n removeClass([this.divElement], 'e-active');\n this.popupObj.hide();\n }\n if (this.popupObj && (originalEvent.keyCode === 37 || originalEvent.keyCode === 38 || originalEvent.keyCode === 39\n || originalEvent.keyCode === 27 || originalEvent.keyCode === 40)) {\n this.onKeyDown(originalEvent);\n originalEvent.preventDefault();\n }\n };\n EmojiPicker.prototype.onkeyUp = function (e) {\n var originalEvent = e.args;\n var selection = window.getSelection();\n var range = selection.getRangeAt(0);\n var cursorPos = range.startOffset;\n // eslint-disable-next-line\n var selectedValue;\n var count$$1 = 0;\n for (var i = cursorPos - 1; i >= cursorPos - 15; i--) {\n var prevChar = selection.focusNode.textContent.substring(i - 1, i);\n var isPrevSpace = /:$/.test(prevChar);\n if (isPrevSpace && !isNullOrUndefined(this.popDiv) && count$$1 === 0) {\n selectedValue = range.startContainer.textContent.substring(i - 1, cursorPos);\n this.searchFilter(originalEvent, selectedValue);\n count$$1 = 1;\n }\n }\n var colon = selection.focusNode.textContent.substring(cursorPos - 1, cursorPos);\n if (colon === ':' && !isNullOrUndefined(this.popupObj)) {\n selectedValue = colon;\n this.searchFilter(originalEvent, selectedValue);\n }\n };\n EmojiPicker.prototype.getCoordinates = function () {\n var coordinates;\n var selection = window.getSelection();\n var range = selection.getRangeAt(0);\n var firstChild;\n if (range.startContainer.nodeName === 'P' || range.startContainer.nodeName === 'DIV') {\n if (range.startContainer.childNodes[0].nodeName !== '#text') {\n firstChild = range.startContainer.childNodes[0];\n }\n }\n // eslint-disable-next-line\n var rect = isNullOrUndefined(firstChild) ? range.getBoundingClientRect() : firstChild.getBoundingClientRect();\n var rteContent = this.parent.element.querySelector('.e-rte-content');\n var rteEle = this.parent.element;\n var toolbarHeight = rteEle.offsetHeight - rteContent.offsetHeight;\n var cursorTop = rect.top - this.parent.inputElement.getBoundingClientRect().top;\n var cursorLeft = rect.left - this.parent.inputElement.getBoundingClientRect().left;\n var screenHeight = window.innerHeight;\n var popupHeight = 330;\n var popupTop = cursorTop;\n var popupLeft = cursorLeft + rect.width;\n if (rteEle.getBoundingClientRect().top < 0) {\n popupTop = popupTop + rteContent.getBoundingClientRect().top - toolbarHeight;\n }\n if (rect.top < popupHeight) {\n // eslint-disable-next-line\n popupTop = popupTop;\n }\n else if (rect.top + popupHeight > screenHeight) {\n popupTop -= popupHeight + 20;\n }\n if (this.parent.inputElement) {\n coordinates = {\n top: popupTop + 60,\n left: popupLeft + 8\n };\n }\n return coordinates;\n };\n EmojiPicker.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(emojiPicker, this.toolbarClick);\n this.parent.off(docClick, this.docClick);\n this.parent.off(keyDown, this.onkeyPress);\n this.parent.off(keyUp, this.onkeyUp);\n this.parent.off(contentscroll, this.contentscroll);\n this.parent.off(scroll, this.contentscroll);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string value\n */\n EmojiPicker.prototype.getModuleName = function () {\n return 'emojiPicker';\n };\n return EmojiPicker;\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 name: !isInternal ? 'showDialog' : null\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 = this.parent.formatter.getUndoRedoStack()[i].text;\n temp.appendChild(contentElem.cloneNode(true));\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 var clonedElement = temp.cloneNode(true);\n var fragment = document.createDocumentFragment();\n while (clonedElement.firstChild) {\n fragment.appendChild(clonedElement.firstChild);\n }\n this.parent.formatter.getUndoRedoStack()[i].text = fragment;\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 img.style.height = expectedY + '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 var currentWidth = img.offsetWidth === 0 ? img.width + this.mouseX + parseInt(img.style.outlineWidth.split('p')[0], 10) : img.offsetWidth + this.mouseX;\n img.setAttribute('width', (currentWidth).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.botLeft || this.resizeBtnStat.topLeft) ? -(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 (!isNullOrUndefined(selectParentEle[0]) && 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 }\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 }\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 name: !isInternal ? 'showDialog' : null\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 name: !isInternal ? 'showDialog' : null\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: (Browser.isDevice) ? '300px' : '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 = this.parent.formatter.getUndoRedoStack()[i].text;\n temp.appendChild(contentElem.cloneNode(true));\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 }\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 }\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 name: !isInternal ? 'showDialog' : null\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 = this.parent.formatter.getUndoRedoStack()[i].text;\n temp.appendChild(contentElem.cloneNode(true));\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 var clonedElement = temp.cloneNode(true);\n var fragment = document.createDocumentFragment();\n while (clonedElement.firstChild) {\n fragment.appendChild(clonedElement.firstChild);\n }\n this.parent.formatter.getUndoRedoStack()[i].text = fragment;\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 ? '200px' : formatUnit(this.parent.insertVideoSettings.minWidth);\n vid.style.minHeight = this.parent.insertVideoSettings.minHeight === 0 ? '90px' : 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 ((!isNullOrUndefined(selectParentEle[0]) && 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 }\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 }\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 name: !isInternal ? 'showDialog' : null\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' || (!isNullOrUndefined(e.args) && 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: this.i10n.getConstant('pasteEmbeddedCodeHere'), 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: this.i10n.getConstant('embeddedCode'),\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: this.i10n.getConstant('webUrl'),\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[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 }\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 }\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 name: !isInternal ? 'showDialog' : null\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 = void 0;\n var pageY = void 0;\n if (Browser.isDevice && e.args.touches) {\n pageX = e.args.changedTouches[0].pageX;\n pageY = e.args.changedTouches[0].pageY;\n }\n else {\n pageX = (this.parent.iframeSettings.enable) ? window.pageXOffset\n + this.parent.element.getBoundingClientRect().left + args.clientX : args.pageX;\n pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset +\n this.parent.element.getBoundingClientRect().top + args.clientY : args.pageY;\n }\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 var isRowCellsMerged = false;\n var mergedCellIndex;\n var mergedElement;\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 if (_this.curTable.rows[i].cells[_this.colIndex]) {\n _this.curTable.rows[i].cells[_this.curTable.rows[i].cells.length === _this.colIndex ?\n _this.colIndex - 1 : _this.colIndex].style.width = (currentColumnCellWidth - differenceWidth) + '%';\n }\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 var currentRow = _this.curTable.rows[i];\n if ((totalwid - actualwid) > 20 && actualwid > 20) {\n var leftColumnWidth = totalwid - actualwid;\n var rightColWidth = actualwid;\n var index = void 0;\n var isMergedEleResize = false;\n var leftTableCell = void 0;\n var rightTableCell = void 0;\n for (var j = 0; j < currentRow.cells.length; j++) {\n if (currentRow.cells[j].hasAttribute('rowspan') && j <= _this.colIndex) {\n isRowCellsMerged = true;\n mergedCellIndex = i;\n mergedElement = currentRow.cells[j];\n }\n }\n if (!isNullOrUndefined(currentRow.cells[i]) && currentRow.cells[i].hasAttribute('colspan')) {\n index = parseInt(currentRow.cells[i].getAttribute('colspan'), 10) - 1;\n }\n else {\n index = _this.colIndex;\n }\n if (isRowCellsMerged) {\n var currentResizeRow = void 0;\n if (currentRow.cells.length < cellColl.length) {\n index = currentRow.cells.length === _this.colIndex ?\n _this.colIndex - 1 : _this.colIndex - (_this.colIndex - 1);\n currentResizeRow = _this.curTable.rows[!isNullOrUndefined(mergedCellIndex) ?\n mergedCellIndex : _this.colIndex - 1];\n if (currentResizeRow && (currentResizeRow.cells[_this.colIndex - 1] === mergedElement ||\n currentResizeRow.cells[currentResizeRow.cells.length - 1] === mergedElement)) {\n isMergedEleResize = true;\n }\n else {\n isMergedEleResize = false;\n }\n }\n else {\n index = _this.colIndex;\n }\n leftTableCell = !isMergedEleResize ? currentRow.cells[index - 1] : (currentResizeRow &&\n currentResizeRow.cells[currentResizeRow.cells.length - 1] !== mergedElement) ?\n currentResizeRow.cells[_this.colIndex - 1] : currentRow.cells[currentRow.cells.length - 1];\n rightTableCell = !isMergedEleResize ? currentRow.cells[index] : rightTableCell && rightTableCell.hasAttribute('rowspan') ?\n rightTableCell : currentResizeRow && currentResizeRow.cells[currentResizeRow.cells.length - 1] !== mergedElement ?\n currentRow.cells[index - 1] : currentResizeRow.cells[currentResizeRow.cells.length - 1];\n }\n if (!isNullOrUndefined(currentRow.cells[index - 1]) && !isRowCellsMerged) {\n currentRow.cells[index - 1].style.width =\n _this.convertPixelToPercentage(leftColumnWidth, tableWidth) + '%';\n }\n else {\n if (leftTableCell) {\n leftTableCell.style.width =\n _this.convertPixelToPercentage(leftColumnWidth, tableWidth) + '%';\n }\n }\n if (!isNullOrUndefined(currentRow.cells[index]) && !isRowCellsMerged) {\n currentRow.cells[index].style.width =\n _this.convertPixelToPercentage(rightColWidth, tableWidth) + '%';\n }\n else {\n if (rightTableCell) {\n rightTableCell.style.width =\n _this.convertPixelToPercentage(rightColWidth, tableWidth) + '%';\n }\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 var tableBoxPosition = _this.curTable.getBoundingClientRect().left\n - 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 'copyFormatPainter': {\n command: 'FormatPainter',\n value: 'format-copy'\n },\n 'applyFormatPainter': {\n command: 'FormatPainter',\n value: 'format-paste'\n },\n 'escapeFormatPainter': {\n command: 'FormatPainter',\n value: 'escape'\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 Event()\n ], FileManagerSettings.prototype, \"beforeSend\", void 0);\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 * Configure the format painter settings of the Rich Text Editor.\n */\nvar FormatPainterSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$5(FormatPainterSettings, _super);\n function FormatPainterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('b; em; font; sub; sup; kbd; i; s; u; code; strong; span; p; div; h1; h2; h3; h4; h5; h6; blockquote; ol; ul; li; pre;')\n ], FormatPainterSettings.prototype, \"allowedFormats\", void 0);\n __decorate$2([\n Property(null)\n ], FormatPainterSettings.prototype, \"deniedFormats\", void 0);\n return FormatPainterSettings;\n}(ChildProperty));\n/**\n * Specifies the emoji picker options in Rich Text Editor with the following properties.\n */\nvar EmojiSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$5(EmojiSettings, _super);\n function EmojiSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(defaultEmojiIcons)\n ], EmojiSettings.prototype, \"iconsSet\", void 0);\n __decorate$2([\n Property(true)\n ], EmojiSettings.prototype, \"showSearchBox\", void 0);\n return EmojiSettings;\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 && (!Browser.isDevice ? e.args.code === 'Enter' : e.args.key === '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 (!(_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 modules.push({\n member: 'formatPainter',\n args: [this]\n });\n modules.push({\n member: 'emojiPicker',\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', 'aria-label': 'Rich Text Editor' });\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 * Shows the emoji picker\n *\n * @param {number} x - specifies the number value.\n * @param {number} y - specifies the number value.\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.showEmojiPicker = function (x, y) {\n if (this.readonly) {\n return;\n }\n this.notify(emojiPicker, { x: x, y: y });\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 var internalValue;\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 internalValue = value;\n if (tool.command === 'FormatPainter') {\n if (!isNullOrUndefined(value)) {\n this.formatPainterSettings = value;\n }\n internalValue = {\n formatPainterAction: tool.value\n };\n }\n this.formatter.editorManager.execCommand(tool.command, tool.subCommand ? tool.subCommand : (internalValue ? internalValue : tool.value), null, null, (internalValue ? internalValue : tool.value), (internalValue ? internalValue : 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.readonly) ? this.eventInitializer() : this.unWireEvents();\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 // eslint-disable-next-line\n var currentEndOffset = currentEndContainer.textContent.length;\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 var notFormatPainterCopy = !isNullOrUndefined(e.action) && e.action !== 'format-copy';\n if (this.formatter.getUndoRedoStack().length === 0 && notFormatPainterCopy) {\n this.formatter.saveData();\n }\n if (e.action !== 'insert-link' &&\n e.action !== 'format-copy' && e.action !== 'format-paste' &&\n (!e.target || !e.target.classList.contains('e-mention')) &&\n (e.action && e.action !== 'paste' && e.action !== 'space'\n || e.which === 9 || (e.code === 'Backspace' && e.which === 8))) {\n var FormatPainterEscapeAction = false;\n if (!isNullOrUndefined(this.formatPainterModule)) {\n FormatPainterEscapeAction = this.formatPainterModule.previousAction === 'escape';\n }\n if (!FormatPainterEscapeAction) {\n this.formatter.process(this, null, e);\n }\n switch (e.action) {\n case 'toolbar-focus':\n if (this.toolbarSettings.enable) {\n // eslint-disable-next-line\n var selector = '.e-toolbar-item[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 if (this.iframeSettings.enable && this.inputElement.classList.contains('e-rte-placeholder')) {\n removeClass([this.inputElement], 'e-rte-placeholder');\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 var formatPainterCopy = e.key === 'C' && e.altKey && e.shiftKey;\n var formatPainterPaste = e.key === 'V' && e.altKey && e.shiftKey;\n if ((!formatPainterCopy && !formatPainterPaste) && ((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 case 'formatPainterSettings':\n this.formatter.editorManager.observer.notify(MODEL_CHANGED, { module: 'formatPainter', newProp: newProp });\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 if (this.placeholder && this.iframeSettings.enable) {\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 addClass([this.inputElement], 'e-rte-placeholder');\n this.inputElement.setAttribute('placeholder', this.placeholder);\n }\n else {\n removeClass([this.inputElement], 'e-rte-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 (typeof this.valueTemplate === 'string' && regEx.test(this.valueTemplate)) {\n this.setProperties({ value: this.valueTemplate });\n }\n else {\n var compiledTemplate = compile(this.valueTemplate)('', this, 'valueTemplate');\n // eslint-disable-next-line\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\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 var htmlValue = this.contentModule.getEditPanel().innerHTML;\n return (this.enableXhtml && (htmlValue === '


      ' || htmlValue === '

      ' ||\n htmlValue === '
      ') ? null : this.serializeValue(htmlValue));\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 if (!isNullOrUndefined(this.placeHolderWrapper) && this.element.querySelector('[title = Preview]')) {\n this.placeHolderWrapper.style.display = 'none';\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 // Add the scroll event handler from the inputElement\n EventHandler.add(this.inputElement, '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 // Remove the scroll event handler from the inputElement\n EventHandler.remove(this.inputElement, '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 = 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({}, FormatPainterSettings)\n ], RichTextEditor.prototype, \"formatPainterSettings\", void 0);\n __decorate$1([\n Complex({}, EmojiSettings)\n ], RichTextEditor.prototype, \"emojiPickerSettings\", 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(true)\n ], RichTextEditor.prototype, \"showTooltip\", 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 * 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, FormatPainter, EmojiPicker, 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, formatPainterClick, formatPainterDoubleClick, emojiPicker, maximizeMinimizeClick, 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, FormatPainterActions, EmojiPickerAction, 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, FORMAT_PAINTER_ACTIONS, EMOJI_PICKER_ACTIONS };\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.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || this.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) {\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.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || this.element.closest('form') && this.element.closest('form').classList.contains('e-formvalidator')) {\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 this.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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\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 var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !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.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE$1)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE$1)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE$1)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\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 var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\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.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, 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', 'role'];\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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n evt.stopPropagation();\n evt.preventDefault();\n }\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 var attributeArray = [];\n for (var i = 0; i < data.length; i++) {\n var fieldsData = this.getFieldValues(data[i]);\n var attributesValue = fieldsData.htmlAttributes;\n attributeArray.push(attributesValue);\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 if (!isNullOrUndefined(attributeArray[i])) {\n if (attributeArray.length > i && Object.keys(attributeArray[i]).length) {\n var htmlAttr = [];\n htmlAttr = (Object.keys(attributeArray[i]));\n for (var j = 0; j < htmlAttr.length; j++) {\n wrapper.setAttribute(htmlAttr[j], attributeArray[i][htmlAttr[j]]);\n }\n }\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 htmlAttributes: typeof data === 'object' ? (data.htmlAttributes ? data.htmlAttributes : this.htmlAttributes) : this.htmlAttributes\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 * @param {number | HTMLElement } fields - We can pass index number or element of chip.\n * {% codeBlock src='chips/find/index.md' %}{% endcodeBlock %}\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 * @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 * {% codeBlock src='chips/add/index.md' %}{% endcodeBlock %}\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 * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/select/index.md' %}{% endcodeBlock %}\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 * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n * {% codeBlock src='chips/remove/index.md' %}{% endcodeBlock %}\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 * {% 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 * {% 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, \"htmlAttributes\", 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), FIXEDFAB);\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 isPrimary: this.isPrimary\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 (typeof template !== 'function' && 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.removeRippleEffect = null;\n this.keyboardModule.destroy();\n this.popupKeyboardModule.destroy();\n this.keyboardModule = null;\n this.popupKeyboardModule = null;\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', 'isPrimary'];\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 Property(true)\n ], SpeedDial.prototype, \"isPrimary\", 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, 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 if (this.createPopupOnClick && !this.isPopupCreated) {\n this.createPopup();\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.replace(/\\s+/g, ' ').trim().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 && this.dropDown) {\n this.dropDown.element = null;\n this.dropDown = undefined;\n }\n }\n this.isPopupCreated = false;\n };\n DropDownButton.prototype.getPopUpElement = function () {\n var val = null;\n if (!this.dropDown && this.activeElem[0].classList.contains('e-split-btn')) {\n var dropDownBtn = getComponent(this.activeElem[1], 'dropdown-btn');\n if (dropDownBtn) {\n this.dropDown = dropDownBtn.dropDown;\n }\n }\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 if (!this.delegateMousedownHandler) {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n }\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.keyCode === 13 && this.activeElem[0].classList.contains('e-split-btn')) {\n this.activeElem[0].focus();\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.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 if (_this.enableRtl && ul_1.parentElement.style.left !== '0px') {\n var wrapperWidth = void 0;\n if (_this.element.parentElement && _this.element.parentElement.classList.contains('e-split-btn-wrapper')) {\n wrapperWidth = _this.element.parentElement.offsetWidth;\n }\n else {\n wrapperWidth = _this.element.offsetWidth;\n }\n var popupRect = ul_1.parentElement.offsetWidth - wrapperWidth;\n var popupLeft = parseFloat(ul_1.parentElement.style.left) - popupRect;\n if (popupLeft < 0) {\n popupLeft = 0;\n }\n ul_1.parentElement.style.left = popupLeft + \"px\";\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 }\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.replace(/\\s+/g, ' ').trim().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.replace(/\\s+/g, ' ').trim().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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.isPopupCreated = this.secondaryBtnObj.isPopupCreated;\n this.secondaryBtnObj.activeElem = [this.element, this.secondaryBtnObj.element];\n this.secondaryBtnObj.element.querySelector('.e-btn-icon').classList.remove('e-icon-right');\n if (this.disabled) {\n this.wrapper.classList.add('e-splitbtn-disabled');\n }\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 enter: 'enter'\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 case 'enter':\n this.clickHandler(e);\n if (this.getPopUpElement() && !this.getPopUpElement().classList.contains('e-popup-close')) {\n this.element.classList.remove('e-active');\n this.secondaryBtnObj.element.classList.add('e-active');\n }\n else {\n this.secondaryBtnObj.element.classList.remove('e-active');\n }\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.replace(/\\s+/g, ' ').trim().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 case 'disabled':\n if (newProp.disabled) {\n addClass([this.wrapper], 'e-splitbtn-disabled');\n }\n else {\n removeClass([this.wrapper], 'e-splitbtn-disabled');\n }\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.querySelector(\".e-spinner\"));\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.querySelector(\".e-spinner\"));\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.querySelector(\".e-spinner\"));\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","import { __decorate, __metadata, __param, __rest } from 'tslib';\nimport { Input, TemplateRef, Component, ElementRef, Injector, Renderer2, ComponentFactoryResolver, ViewContainerRef, Inject, HostListener, Directive, EventEmitter, Output, Injectable, LOCALE_ID, Pipe, NgZone, InjectionToken, NgModule, ChangeDetectorRef } from '@angular/core';\nimport { DOCUMENT, formatDate, I18nPluralPipe, CommonModule } from '@angular/common';\nimport { positionElements } from 'positioning';\nimport { Subject, of, timer, Observable, BehaviorSubject, interval } from 'rxjs';\nimport { takeUntil, switchMap, startWith, switchMapTo, map } from 'rxjs/operators';\nimport { validateEvents as validateEvents$1, getMonthView, getWeekViewHeader, getWeekView } from 'calendar-utils';\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from 'angular-draggable-droppable';\nimport * as ɵngcc3 from 'angular-resizable-element';\n\nconst _c0 = function (a0) { return { action: a0 }; };\nfunction CalendarEventActionsComponent_ng_template_0_span_0_a_1_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"a\", 5);\n ɵngcc0.ɵɵlistener(\"mwlClick\", function CalendarEventActionsComponent_ng_template_0_span_0_a_1_Template_a_mwlClick_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const action_r7 = restoredCtx.$implicit; const event_r3 = ɵngcc0.ɵɵnextContext(2).event; return action_r7.onClick({ event: event_r3, sourceEvent: $event }); })(\"mwlKeydownEnter\", function CalendarEventActionsComponent_ng_template_0_span_0_a_1_Template_a_mwlKeydownEnter_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r10); const action_r7 = restoredCtx.$implicit; const event_r3 = ɵngcc0.ɵɵnextContext(2).event; return action_r7.onClick({ event: event_r3, sourceEvent: $event }); });\n ɵngcc0.ɵɵpipe(1, \"calendarA11y\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const action_r7 = ctx.$implicit;\n ɵngcc0.ɵɵproperty(\"ngClass\", action_r7.cssClass)(\"innerHtml\", action_r7.label, ɵngcc0.ɵɵsanitizeHtml);\n ɵngcc0.ɵɵattribute(\"aria-label\", ɵngcc0.ɵɵpipeBind2(1, 3, ɵngcc0.ɵɵpureFunction1(6, _c0, action_r7), \"actionButtonLabel\"));\n} }\nfunction CalendarEventActionsComponent_ng_template_0_span_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 3);\n ɵngcc0.ɵɵtemplate(1, CalendarEventActionsComponent_ng_template_0_span_0_a_1_Template, 2, 8, \"a\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r13 = ɵngcc0.ɵɵnextContext();\n const event_r3 = ctx_r13.event;\n const trackByActionId_r4 = ctx_r13.trackByActionId;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", event_r3.actions)(\"ngForTrackBy\", trackByActionId_r4);\n} }\nfunction CalendarEventActionsComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarEventActionsComponent_ng_template_0_span_0_Template, 2, 2, \"span\", 2);\n} if (rf & 2) {\n const event_r3 = ctx.event;\n ɵngcc0.ɵɵproperty(\"ngIf\", event_r3.actions);\n} }\nfunction CalendarEventActionsComponent_ng_template_2_Template(rf, ctx) { }\nconst _c1 = function (a0, a1) { return { event: a0, trackByActionId: a1 }; };\nconst _c2 = function () { return {}; };\nfunction CalendarEventTitleComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"span\", 2);\n ɵngcc0.ɵɵpipe(1, \"calendarEventTitle\");\n ɵngcc0.ɵɵpipe(2, \"calendarA11y\");\n} if (rf & 2) {\n const event_r3 = ctx.event;\n const view_r4 = ctx.view;\n ɵngcc0.ɵɵproperty(\"innerHTML\", ɵngcc0.ɵɵpipeBind3(1, 2, event_r3.title, view_r4, event_r3), ɵngcc0.ɵɵsanitizeHtml);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", ɵngcc0.ɵɵpipeBind2(2, 6, ɵngcc0.ɵɵpureFunction0(9, _c2), \"hideEventTitle\"));\n} }\nfunction CalendarEventTitleComponent_ng_template_2_Template(rf, ctx) { }\nconst _c3 = function (a0, a1) { return { event: a0, view: a1 }; };\nfunction CalendarTooltipWindowComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵelement(1, \"div\", 3)(2, \"div\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const contents_r3 = ctx.contents;\n const placement_r4 = ctx.placement;\n ɵngcc0.ɵɵproperty(\"ngClass\", \"cal-tooltip-\" + placement_r4);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"innerHtml\", contents_r3, ɵngcc0.ɵɵsanitizeHtml);\n} }\nfunction CalendarTooltipWindowComponent_ng_template_2_Template(rf, ctx) { }\nconst _c4 = function (a0, a1, a2) { return { contents: a0, placement: a1, event: a2 }; };\nconst _c5 = function (a0) { return { backgroundColor: a0 }; };\nfunction CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"mwl-calendar-month-cell\", 7);\n ɵngcc0.ɵɵlistener(\"mwlClick\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_mwlClick_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r5); const day_r3 = restoredCtx.$implicit; const ctx_r4 = ɵngcc0.ɵɵnextContext(2); return ctx_r4.dayClicked.emit({ day: day_r3, sourceEvent: $event }); })(\"mwlKeydownEnter\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_mwlKeydownEnter_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r5); const day_r3 = restoredCtx.$implicit; const ctx_r6 = ɵngcc0.ɵɵnextContext(2); return ctx_r6.dayClicked.emit({ day: day_r3, sourceEvent: $event }); })(\"highlightDay\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_highlightDay_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r7 = ɵngcc0.ɵɵnextContext(2); return ctx_r7.toggleDayHighlight($event.event, true); })(\"unhighlightDay\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_unhighlightDay_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r8 = ɵngcc0.ɵɵnextContext(2); return ctx_r8.toggleDayHighlight($event.event, false); })(\"drop\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_drop_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r5); const day_r3 = restoredCtx.$implicit; const ctx_r9 = ɵngcc0.ɵɵnextContext(2); return ctx_r9.eventDropped(day_r3, $event.dropData.event, $event.dropData.draggedFrom); })(\"eventClicked\", function CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template_mwl_calendar_month_cell_eventClicked_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r10 = ɵngcc0.ɵɵnextContext(2); return ctx_r10.eventClicked.emit({ event: $event.event, sourceEvent: $event.sourceEvent }); });\n ɵngcc0.ɵɵpipe(1, \"calendarA11y\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r3 = ctx.$implicit;\n const ctx_r2 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵproperty(\"ngClass\", day_r3 == null ? null : day_r3.cssClass)(\"day\", day_r3)(\"openDay\", ctx_r2.openDay)(\"locale\", ctx_r2.locale)(\"tooltipPlacement\", ctx_r2.tooltipPlacement)(\"tooltipAppendToBody\", ctx_r2.tooltipAppendToBody)(\"tooltipTemplate\", ctx_r2.tooltipTemplate)(\"tooltipDelay\", ctx_r2.tooltipDelay)(\"customTemplate\", ctx_r2.cellTemplate)(\"ngStyle\", ɵngcc0.ɵɵpureFunction1(15, _c5, day_r3.backgroundColor))(\"clickListenerDisabled\", ctx_r2.dayClicked.observers.length === 0);\n ɵngcc0.ɵɵattribute(\"tabindex\", ɵngcc0.ɵɵpipeBind2(1, 12, ɵngcc0.ɵɵpureFunction0(17, _c2), \"monthCellTabIndex\"));\n} }\nfunction CalendarMonthViewComponent_div_3_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\")(1, \"div\", 4);\n ɵngcc0.ɵɵtemplate(2, CalendarMonthViewComponent_div_3_mwl_calendar_month_cell_2_Template, 2, 18, \"mwl-calendar-month-cell\", 5);\n ɵngcc0.ɵɵpipe(3, \"slice\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"mwl-calendar-open-day-events\", 6);\n ɵngcc0.ɵɵlistener(\"eventClicked\", function CalendarMonthViewComponent_div_3_Template_mwl_calendar_open_day_events_eventClicked_4_listener($event) { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ctx_r11.eventClicked.emit({ event: $event.event, sourceEvent: $event.sourceEvent }); })(\"drop\", function CalendarMonthViewComponent_div_3_Template_mwl_calendar_open_day_events_drop_4_listener($event) { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ctx_r13.eventDropped(ctx_r13.openDay, $event.dropData.event, $event.dropData.draggedFrom); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const rowIndex_r1 = ctx.$implicit;\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ɵngcc0.ɵɵpipeBind3(3, 9, ctx_r0.view.days, rowIndex_r1, rowIndex_r1 + ctx_r0.view.totalDaysVisibleInWeek))(\"ngForTrackBy\", ctx_r0.trackByDate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"locale\", ctx_r0.locale)(\"isOpen\", ctx_r0.openRowIndex === rowIndex_r1)(\"events\", ctx_r0.openDay == null ? null : ctx_r0.openDay.events)(\"date\", ctx_r0.openDay == null ? null : ctx_r0.openDay.date)(\"customTemplate\", ctx_r0.openDayEventsTemplate)(\"eventTitleTemplate\", ctx_r0.eventTitleTemplate)(\"eventActionsTemplate\", ctx_r0.eventActionsTemplate);\n} }\nfunction CalendarMonthViewHeaderComponent_ng_template_0_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵlistener(\"click\", function CalendarMonthViewHeaderComponent_ng_template_0_div_1_Template_div_click_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const day_r7 = restoredCtx.$implicit; const ctx_r8 = ɵngcc0.ɵɵnextContext(2); return ctx_r8.columnHeaderClicked.emit({ isoDayNumber: day_r7.day, sourceEvent: $event }); });\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵpipe(2, \"calendarDate\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r7 = ctx.$implicit;\n const locale_r4 = ɵngcc0.ɵɵnextContext().locale;\n ɵngcc0.ɵɵclassProp(\"cal-past\", day_r7.isPast)(\"cal-today\", day_r7.isToday)(\"cal-future\", day_r7.isFuture)(\"cal-weekend\", day_r7.isWeekend);\n ɵngcc0.ɵɵproperty(\"ngClass\", day_r7.cssClass);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ɵngcc0.ɵɵpipeBind3(2, 10, day_r7.date, \"monthViewColumnHeader\", locale_r4), \" \");\n} }\nfunction CalendarMonthViewHeaderComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, CalendarMonthViewHeaderComponent_ng_template_0_div_1_Template, 3, 14, \"div\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const days_r3 = ctx.days;\n const trackByWeekDayHeaderDate_r5 = ctx.trackByWeekDayHeaderDate;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", days_r3)(\"ngForTrackBy\", trackByWeekDayHeaderDate_r5);\n} }\nfunction CalendarMonthViewHeaderComponent_ng_template_2_Template(rf, ctx) { }\nconst _c6 = function (a0, a1, a2) { return { days: a0, locale: a1, trackByWeekDayHeaderDate: a2 }; };\nfunction CalendarMonthCellComponent_ng_template_0_span_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"span\", 7);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r3 = ɵngcc0.ɵɵnextContext().day;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(day_r3.badgeTotal);\n} }\nconst _c7 = function (a0, a1) { return { event: a0, draggedFrom: a1 }; };\nconst _c8 = function (a0, a1) { return { x: a0, y: a1 }; };\nconst _c9 = function () { return { delay: 300, delta: 30 }; };\nfunction CalendarMonthCellComponent_ng_template_0_div_7_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r21 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 10);\n ɵngcc0.ɵɵlistener(\"mouseenter\", function CalendarMonthCellComponent_ng_template_0_div_7_div_1_Template_div_mouseenter_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r21); const event_r19 = restoredCtx.$implicit; const highlightDay_r7 = ɵngcc0.ɵɵnextContext(2).highlightDay; return highlightDay_r7.emit({ event: event_r19 }); })(\"mouseleave\", function CalendarMonthCellComponent_ng_template_0_div_7_div_1_Template_div_mouseleave_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r21); const event_r19 = restoredCtx.$implicit; const unhighlightDay_r8 = ɵngcc0.ɵɵnextContext(2).unhighlightDay; return unhighlightDay_r8.emit({ event: event_r19 }); })(\"mwlClick\", function CalendarMonthCellComponent_ng_template_0_div_7_div_1_Template_div_mwlClick_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r21); const event_r19 = restoredCtx.$implicit; const eventClicked_r9 = ɵngcc0.ɵɵnextContext(2).eventClicked; return eventClicked_r9.emit({ event: event_r19, sourceEvent: $event }); });\n ɵngcc0.ɵɵpipe(1, \"calendarEventTitle\");\n ɵngcc0.ɵɵpipe(2, \"calendarA11y\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const event_r19 = ctx.$implicit;\n const ctx_r27 = ɵngcc0.ɵɵnextContext(2);\n const tooltipPlacement_r6 = ctx_r27.tooltipPlacement;\n const tooltipTemplate_r10 = ctx_r27.tooltipTemplate;\n const tooltipAppendToBody_r11 = ctx_r27.tooltipAppendToBody;\n const tooltipDelay_r12 = ctx_r27.tooltipDelay;\n const day_r3 = ctx_r27.day;\n const validateDrag_r14 = ctx_r27.validateDrag;\n ɵngcc0.ɵɵclassProp(\"cal-draggable\", event_r19.draggable);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ɵngcc0.ɵɵpureFunction1(22, _c5, event_r19.color == null ? null : event_r19.color.primary))(\"ngClass\", event_r19 == null ? null : event_r19.cssClass)(\"mwlCalendarTooltip\", ɵngcc0.ɵɵpipeBind3(1, 15, event_r19.title, \"monthTooltip\", event_r19))(\"tooltipPlacement\", tooltipPlacement_r6)(\"tooltipEvent\", event_r19)(\"tooltipTemplate\", tooltipTemplate_r10)(\"tooltipAppendToBody\", tooltipAppendToBody_r11)(\"tooltipDelay\", tooltipDelay_r12)(\"dropData\", ɵngcc0.ɵɵpureFunction2(24, _c7, event_r19, day_r3))(\"dragAxis\", ɵngcc0.ɵɵpureFunction2(27, _c8, event_r19.draggable, event_r19.draggable))(\"validateDrag\", validateDrag_r14)(\"touchStartLongPress\", ɵngcc0.ɵɵpureFunction0(30, _c9));\n ɵngcc0.ɵɵattribute(\"aria-hidden\", ɵngcc0.ɵɵpipeBind2(2, 19, ɵngcc0.ɵɵpureFunction0(31, _c2), \"hideMonthCellEvents\"));\n} }\nfunction CalendarMonthCellComponent_ng_template_0_div_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 8);\n ɵngcc0.ɵɵtemplate(1, CalendarMonthCellComponent_ng_template_0_div_7_div_1_Template, 3, 32, \"div\", 9);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r28 = ɵngcc0.ɵɵnextContext();\n const day_r3 = ctx_r28.day;\n const trackByEventId_r13 = ctx_r28.trackByEventId;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", day_r3.events)(\"ngForTrackBy\", trackByEventId_r13);\n} }\nconst _c10 = function (a0, a1) { return { day: a0, locale: a1 }; };\nfunction CalendarMonthCellComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵpipe(1, \"calendarA11y\");\n ɵngcc0.ɵɵelementStart(2, \"span\", 3);\n ɵngcc0.ɵɵtemplate(3, CalendarMonthCellComponent_ng_template_0_span_3_Template, 2, 1, \"span\", 4);\n ɵngcc0.ɵɵelementStart(4, \"span\", 5);\n ɵngcc0.ɵɵtext(5);\n ɵngcc0.ɵɵpipe(6, \"calendarDate\");\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵtemplate(7, CalendarMonthCellComponent_ng_template_0_div_7_Template, 2, 2, \"div\", 6);\n} if (rf & 2) {\n const day_r3 = ctx.day;\n const locale_r5 = ctx.locale;\n ɵngcc0.ɵɵattribute(\"aria-label\", ɵngcc0.ɵɵpipeBind2(1, 4, ɵngcc0.ɵɵpureFunction2(11, _c10, day_r3, locale_r5), \"monthCell\"));\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", day_r3.badgeTotal > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ɵngcc0.ɵɵpipeBind3(6, 7, day_r3.date, \"monthViewDayNumber\", locale_r5));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", day_r3.events.length > 0);\n} }\nfunction CalendarMonthCellComponent_ng_template_2_Template(rf, ctx) { }\nconst _c11 = function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11) { return { day: a0, openDay: a1, locale: a2, tooltipPlacement: a3, highlightDay: a4, unhighlightDay: a5, eventClicked: a6, tooltipTemplate: a7, tooltipAppendToBody: a8, tooltipDelay: a9, trackByEventId: a10, validateDrag: a11 }; };\nconst _c12 = function (a0) { return { event: a0 }; };\nconst _c13 = function (a0, a1) { return { event: a0, locale: a1 }; };\nfunction CalendarOpenDayEventsComponent_ng_template_0_div_0_div_5_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 7);\n ɵngcc0.ɵɵelement(1, \"span\", 8);\n ɵngcc0.ɵɵtext(2, \" \");\n ɵngcc0.ɵɵelementStart(3, \"mwl-calendar-event-title\", 9);\n ɵngcc0.ɵɵlistener(\"mwlClick\", function CalendarOpenDayEventsComponent_ng_template_0_div_0_div_5_Template_mwl_calendar_event_title_mwlClick_3_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r12); const event_r10 = restoredCtx.$implicit; const eventClicked_r4 = ɵngcc0.ɵɵnextContext(2).eventClicked; return eventClicked_r4.emit({ event: event_r10, sourceEvent: $event }); })(\"mwlKeydownEnter\", function CalendarOpenDayEventsComponent_ng_template_0_div_0_div_5_Template_mwl_calendar_event_title_mwlKeydownEnter_3_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r12); const event_r10 = restoredCtx.$implicit; const eventClicked_r4 = ɵngcc0.ɵɵnextContext(2).eventClicked; return eventClicked_r4.emit({ event: event_r10, sourceEvent: $event }); });\n ɵngcc0.ɵɵpipe(4, \"calendarA11y\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtext(5, \" \");\n ɵngcc0.ɵɵelement(6, \"mwl-calendar-event-actions\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const event_r10 = ctx.$implicit;\n const validateDrag_r7 = ɵngcc0.ɵɵnextContext(2).validateDrag;\n const ctx_r9 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵclassProp(\"cal-draggable\", event_r10.draggable);\n ɵngcc0.ɵɵproperty(\"ngClass\", event_r10 == null ? null : event_r10.cssClass)(\"dropData\", ɵngcc0.ɵɵpureFunction1(16, _c12, event_r10))(\"dragAxis\", ɵngcc0.ɵɵpureFunction2(18, _c8, event_r10.draggable, event_r10.draggable))(\"validateDrag\", validateDrag_r7)(\"touchStartLongPress\", ɵngcc0.ɵɵpureFunction0(21, _c9));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngStyle\", ɵngcc0.ɵɵpureFunction1(22, _c5, event_r10.color == null ? null : event_r10.color.primary));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"event\", event_r10)(\"customTemplate\", ctx_r9.eventTitleTemplate);\n ɵngcc0.ɵɵattribute(\"aria-label\", ɵngcc0.ɵɵpipeBind2(4, 13, ɵngcc0.ɵɵpureFunction2(24, _c13, event_r10, ctx_r9.locale), \"eventDescription\"));\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"event\", event_r10)(\"customTemplate\", ctx_r9.eventActionsTemplate);\n} }\nconst _c14 = function (a0, a1) { return { date: a0, locale: a1 }; };\nfunction CalendarOpenDayEventsComponent_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 3);\n ɵngcc0.ɵɵelement(1, \"span\", 4);\n ɵngcc0.ɵɵpipe(2, \"calendarA11y\");\n ɵngcc0.ɵɵelement(3, \"span\", 5);\n ɵngcc0.ɵɵpipe(4, \"calendarA11y\");\n ɵngcc0.ɵɵtemplate(5, CalendarOpenDayEventsComponent_ng_template_0_div_0_div_5_Template, 7, 27, \"div\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r17 = ɵngcc0.ɵɵnextContext();\n const events_r3 = ctx_r17.events;\n const trackByEventId_r6 = ctx_r17.trackByEventId;\n const ctx_r8 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"@collapse\", undefined);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵattribute(\"aria-label\", ɵngcc0.ɵɵpipeBind2(2, 5, ɵngcc0.ɵɵpureFunction2(11, _c14, ctx_r8.date, ctx_r8.locale), \"openDayEventsAlert\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"aria-label\", ɵngcc0.ɵɵpipeBind2(4, 8, ɵngcc0.ɵɵpureFunction2(14, _c14, ctx_r8.date, ctx_r8.locale), \"openDayEventsLandmark\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", events_r3)(\"ngForTrackBy\", trackByEventId_r6);\n} }\nfunction CalendarOpenDayEventsComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarOpenDayEventsComponent_ng_template_0_div_0_Template, 6, 17, \"div\", 2);\n} if (rf & 2) {\n const isOpen_r5 = ctx.isOpen;\n ɵngcc0.ɵɵproperty(\"ngIf\", isOpen_r5);\n} }\nfunction CalendarOpenDayEventsComponent_ng_template_2_Template(rf, ctx) { }\nconst _c15 = function (a0, a1, a2, a3, a4) { return { events: a0, eventClicked: a1, isOpen: a2, trackByEventId: a3, validateDrag: a4 }; };\nfunction CalendarWeekViewComponent_div_2_div_4_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 13);\n ɵngcc0.ɵɵlistener(\"drop\", function CalendarWeekViewComponent_div_2_div_4_Template_div_drop_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const day_r7 = restoredCtx.$implicit; const ctx_r8 = ɵngcc0.ɵɵnextContext(2); return ctx_r8.eventDropped($event, day_r7.date, true); })(\"dragEnter\", function CalendarWeekViewComponent_div_2_div_4_Template_div_dragEnter_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const day_r7 = restoredCtx.$implicit; const ctx_r10 = ɵngcc0.ɵɵnextContext(2); return ctx_r10.dateDragEnter(day_r7.date); });\n ɵngcc0.ɵɵelementEnd();\n} }\nconst _c16 = function () { return { left: true }; };\nfunction CalendarWeekViewComponent_div_2_div_5_div_2_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 22);\n} if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"resizeEdges\", ɵngcc0.ɵɵpureFunction0(1, _c16));\n} }\nconst _c17 = function () { return { right: true }; };\nfunction CalendarWeekViewComponent_div_2_div_5_div_2_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 23);\n} if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"resizeEdges\", ɵngcc0.ɵɵpureFunction0(1, _c17));\n} }\nconst _c18 = function (a0, a1) { return { left: a0, right: a1 }; };\nconst _c19 = function (a0, a1) { return { event: a0, calendarId: a1 }; };\nconst _c20 = function (a0) { return { x: a0 }; };\nfunction CalendarWeekViewComponent_div_2_div_5_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r19 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 17, 18);\n ɵngcc0.ɵɵlistener(\"resizeStart\", function CalendarWeekViewComponent_div_2_div_5_div_2_Template_div_resizeStart_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r19); const allDayEvent_r14 = restoredCtx.$implicit; ɵngcc0.ɵɵnextContext(); const _r12 = ɵngcc0.ɵɵreference(1); const ctx_r18 = ɵngcc0.ɵɵnextContext(2); return ctx_r18.allDayEventResizeStarted(_r12, allDayEvent_r14, $event); })(\"resizing\", function CalendarWeekViewComponent_div_2_div_5_div_2_Template_div_resizing_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r19); const allDayEvent_r14 = restoredCtx.$implicit; const ctx_r20 = ɵngcc0.ɵɵnextContext(3); return ctx_r20.allDayEventResizing(allDayEvent_r14, $event, ctx_r20.dayColumnWidth); })(\"resizeEnd\", function CalendarWeekViewComponent_div_2_div_5_div_2_Template_div_resizeEnd_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r19); const allDayEvent_r14 = restoredCtx.$implicit; const ctx_r21 = ɵngcc0.ɵɵnextContext(3); return ctx_r21.allDayEventResizeEnded(allDayEvent_r14); })(\"dragStart\", function CalendarWeekViewComponent_div_2_div_5_div_2_Template_div_dragStart_0_listener() { ɵngcc0.ɵɵrestoreView(_r19); const _r15 = ɵngcc0.ɵɵreference(1); ɵngcc0.ɵɵnextContext(); const _r12 = ɵngcc0.ɵɵreference(1); const ctx_r22 = ɵngcc0.ɵɵnextContext(2); return ctx_r22.dragStarted(_r12, _r15); })(\"dragging\", function CalendarWeekViewComponent_div_2_div_5_div_2_Template_div_dragging_0_listener() { ɵngcc0.ɵɵrestoreView(_r19); const ctx_r23 = ɵngcc0.ɵɵnextContext(3); return ctx_r23.allDayEventDragMove(); })(\"dragEnd\", function CalendarWeekViewComponent_div_2_div_5_div_2_Template_div_dragEnd_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r19); const allDayEvent_r14 = restoredCtx.$implicit; const ctx_r24 = ɵngcc0.ɵɵnextContext(3); return ctx_r24.dragEnded(allDayEvent_r14, $event, ctx_r24.dayColumnWidth); });\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewComponent_div_2_div_5_div_2_div_2_Template, 1, 2, \"div\", 19);\n ɵngcc0.ɵɵelementStart(3, \"mwl-calendar-week-view-event\", 20);\n ɵngcc0.ɵɵlistener(\"eventClicked\", function CalendarWeekViewComponent_div_2_div_5_div_2_Template_mwl_calendar_week_view_event_eventClicked_3_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r19); const allDayEvent_r14 = restoredCtx.$implicit; const ctx_r25 = ɵngcc0.ɵɵnextContext(3); return ctx_r25.eventClicked.emit({ event: allDayEvent_r14.event, sourceEvent: $event.sourceEvent }); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, CalendarWeekViewComponent_div_2_div_5_div_2_div_4_Template, 1, 2, \"div\", 21);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const allDayEvent_r14 = ctx.$implicit;\n const ctx_r13 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵstyleProp(\"width\", 100 / ctx_r13.days.length * allDayEvent_r14.span, \"%\")(\"margin-left\", 100 / ctx_r13.days.length * allDayEvent_r14.offset, \"%\");\n ɵngcc0.ɵɵclassProp(\"cal-draggable\", allDayEvent_r14.event.draggable && ctx_r13.allDayEventResizes.size === 0)(\"cal-starts-within-week\", !allDayEvent_r14.startsBeforeWeek)(\"cal-ends-within-week\", !allDayEvent_r14.endsAfterWeek);\n ɵngcc0.ɵɵproperty(\"ngClass\", allDayEvent_r14.event == null ? null : allDayEvent_r14.event.cssClass)(\"resizeSnapGrid\", ɵngcc0.ɵɵpureFunction2(30, _c18, ctx_r13.dayColumnWidth, ctx_r13.dayColumnWidth))(\"validateResize\", ctx_r13.validateResize)(\"dropData\", ɵngcc0.ɵɵpureFunction2(33, _c19, allDayEvent_r14.event, ctx_r13.calendarId))(\"dragAxis\", ɵngcc0.ɵɵpureFunction2(36, _c8, allDayEvent_r14.event.draggable && ctx_r13.allDayEventResizes.size === 0, !ctx_r13.snapDraggedEvents && allDayEvent_r14.event.draggable && ctx_r13.allDayEventResizes.size === 0))(\"dragSnapGrid\", ctx_r13.snapDraggedEvents ? ɵngcc0.ɵɵpureFunction1(39, _c20, ctx_r13.dayColumnWidth) : ɵngcc0.ɵɵpureFunction0(41, _c2))(\"validateDrag\", ctx_r13.validateDrag)(\"touchStartLongPress\", ɵngcc0.ɵɵpureFunction0(42, _c9));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", (allDayEvent_r14.event == null ? null : allDayEvent_r14.event.resizable == null ? null : allDayEvent_r14.event.resizable.beforeStart) && !allDayEvent_r14.startsBeforeWeek);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"locale\", ctx_r13.locale)(\"weekEvent\", allDayEvent_r14)(\"tooltipPlacement\", ctx_r13.tooltipPlacement)(\"tooltipTemplate\", ctx_r13.tooltipTemplate)(\"tooltipAppendToBody\", ctx_r13.tooltipAppendToBody)(\"tooltipDelay\", ctx_r13.tooltipDelay)(\"customTemplate\", ctx_r13.eventTemplate)(\"eventTitleTemplate\", ctx_r13.eventTitleTemplate)(\"eventActionsTemplate\", ctx_r13.eventActionsTemplate)(\"daysInWeek\", ctx_r13.daysInWeek);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", (allDayEvent_r14.event == null ? null : allDayEvent_r14.event.resizable == null ? null : allDayEvent_r14.event.resizable.afterEnd) && !allDayEvent_r14.endsAfterWeek);\n} }\nfunction CalendarWeekViewComponent_div_2_div_5_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 14, 15);\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewComponent_div_2_div_5_div_2_Template, 5, 43, \"div\", 16);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const eventRow_r11 = ctx.$implicit;\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", eventRow_r11.row)(\"ngForTrackBy\", ctx_r6.trackByWeekAllDayEvent);\n} }\nfunction CalendarWeekViewComponent_div_2_Template(rf, ctx) { if (rf & 1) {\n const _r27 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 8, 9);\n ɵngcc0.ɵɵlistener(\"dragEnter\", function CalendarWeekViewComponent_div_2_Template_div_dragEnter_0_listener() { ɵngcc0.ɵɵrestoreView(_r27); const ctx_r26 = ɵngcc0.ɵɵnextContext(); return ctx_r26.dragEnter(\"allDay\"); })(\"dragLeave\", function CalendarWeekViewComponent_div_2_Template_div_dragLeave_0_listener() { ɵngcc0.ɵɵrestoreView(_r27); const ctx_r28 = ɵngcc0.ɵɵnextContext(); return ctx_r28.dragLeave(\"allDay\"); });\n ɵngcc0.ɵɵelementStart(2, \"div\", 5);\n ɵngcc0.ɵɵelement(3, \"div\", 10);\n ɵngcc0.ɵɵtemplate(4, CalendarWeekViewComponent_div_2_div_4_Template, 1, 0, \"div\", 11);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(5, CalendarWeekViewComponent_div_2_div_5_Template, 3, 2, \"div\", 12);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r0.allDayEventsLabelTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.days)(\"ngForTrackBy\", ctx_r0.trackByWeekDayHeaderDate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r0.view.allDayEventRows)(\"ngForTrackBy\", ctx_r0.trackById);\n} }\nfunction CalendarWeekViewComponent_div_4_div_1_mwl_calendar_week_view_hour_segment_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"mwl-calendar-week-view-hour-segment\", 28);\n} if (rf & 2) {\n const segment_r33 = ctx.$implicit;\n const ctx_r32 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵstyleProp(\"height\", ctx_r32.hourSegmentHeight, \"px\");\n ɵngcc0.ɵɵproperty(\"segment\", segment_r33)(\"segmentHeight\", ctx_r32.hourSegmentHeight)(\"locale\", ctx_r32.locale)(\"customTemplate\", ctx_r32.hourSegmentTemplate)(\"isTimeLabel\", true)(\"daysInWeek\", ctx_r32.daysInWeek);\n} }\nfunction CalendarWeekViewComponent_div_4_div_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 26);\n ɵngcc0.ɵɵtemplate(1, CalendarWeekViewComponent_div_4_div_1_mwl_calendar_week_view_hour_segment_1_Template, 1, 8, \"mwl-calendar-week-view-hour-segment\", 27);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const hour_r30 = ctx.$implicit;\n const odd_r31 = ctx.odd;\n const ctx_r29 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"cal-hour-odd\", odd_r31);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", hour_r30.segments)(\"ngForTrackBy\", ctx_r29.trackByHourSegment);\n} }\nfunction CalendarWeekViewComponent_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 24);\n ɵngcc0.ɵɵtemplate(1, CalendarWeekViewComponent_div_4_div_1_Template, 2, 4, \"div\", 25);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx_r1.view.hourColumns[0].hours)(\"ngForTrackBy\", ctx_r1.trackByHour);\n} }\nconst _c21 = function () { return { left: true, top: true }; };\nfunction CalendarWeekViewComponent_div_7_div_3_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 22);\n} if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"resizeEdges\", ɵngcc0.ɵɵpureFunction0(1, _c21));\n} }\nfunction CalendarWeekViewComponent_div_7_div_3_ng_template_3_Template(rf, ctx) { }\nfunction CalendarWeekViewComponent_div_7_div_3_ng_template_4_Template(rf, ctx) { if (rf & 1) {\n const _r46 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"mwl-calendar-week-view-event\", 36);\n ɵngcc0.ɵɵlistener(\"eventClicked\", function CalendarWeekViewComponent_div_7_div_3_ng_template_4_Template_mwl_calendar_week_view_event_eventClicked_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r46); const timeEvent_r37 = ɵngcc0.ɵɵnextContext().$implicit; const ctx_r44 = ɵngcc0.ɵɵnextContext(2); return ctx_r44.eventClicked.emit({ event: timeEvent_r37.event, sourceEvent: $event.sourceEvent }); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const timeEvent_r37 = ɵngcc0.ɵɵnextContext().$implicit;\n const column_r34 = ɵngcc0.ɵɵnextContext().$implicit;\n const ctx_r42 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"locale\", ctx_r42.locale)(\"weekEvent\", timeEvent_r37)(\"tooltipPlacement\", ctx_r42.tooltipPlacement)(\"tooltipTemplate\", ctx_r42.tooltipTemplate)(\"tooltipAppendToBody\", ctx_r42.tooltipAppendToBody)(\"tooltipDisabled\", ctx_r42.dragActive || ctx_r42.timeEventResizes.size > 0)(\"tooltipDelay\", ctx_r42.tooltipDelay)(\"customTemplate\", ctx_r42.eventTemplate)(\"eventTitleTemplate\", ctx_r42.eventTitleTemplate)(\"eventActionsTemplate\", ctx_r42.eventActionsTemplate)(\"column\", column_r34)(\"daysInWeek\", ctx_r42.daysInWeek);\n} }\nconst _c22 = function () { return { right: true, bottom: true }; };\nfunction CalendarWeekViewComponent_div_7_div_3_div_6_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 23);\n} if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"resizeEdges\", ɵngcc0.ɵɵpureFunction0(1, _c22));\n} }\nconst _c23 = function (a0, a1, a2, a3) { return { left: a0, right: a1, top: a2, bottom: a3 }; };\nfunction CalendarWeekViewComponent_div_7_div_3_Template(rf, ctx) { if (rf & 1) {\n const _r50 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 33, 18);\n ɵngcc0.ɵɵlistener(\"resizeStart\", function CalendarWeekViewComponent_div_7_div_3_Template_div_resizeStart_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r50); const timeEvent_r37 = restoredCtx.$implicit; const ctx_r49 = ɵngcc0.ɵɵnextContext(2); const _r2 = ɵngcc0.ɵɵreference(6); return ctx_r49.timeEventResizeStarted(_r2, timeEvent_r37, $event); })(\"resizing\", function CalendarWeekViewComponent_div_7_div_3_Template_div_resizing_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r50); const timeEvent_r37 = restoredCtx.$implicit; const ctx_r51 = ɵngcc0.ɵɵnextContext(2); return ctx_r51.timeEventResizing(timeEvent_r37, $event); })(\"resizeEnd\", function CalendarWeekViewComponent_div_7_div_3_Template_div_resizeEnd_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r50); const timeEvent_r37 = restoredCtx.$implicit; const ctx_r52 = ɵngcc0.ɵɵnextContext(2); return ctx_r52.timeEventResizeEnded(timeEvent_r37); })(\"dragStart\", function CalendarWeekViewComponent_div_7_div_3_Template_div_dragStart_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r50); const timeEvent_r37 = restoredCtx.$implicit; const _r38 = ɵngcc0.ɵɵreference(1); const ctx_r53 = ɵngcc0.ɵɵnextContext(2); const _r2 = ɵngcc0.ɵɵreference(6); return ctx_r53.dragStarted(_r2, _r38, timeEvent_r37); })(\"dragging\", function CalendarWeekViewComponent_div_7_div_3_Template_div_dragging_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r50); const timeEvent_r37 = restoredCtx.$implicit; const ctx_r54 = ɵngcc0.ɵɵnextContext(2); return ctx_r54.dragMove(timeEvent_r37, $event); })(\"dragEnd\", function CalendarWeekViewComponent_div_7_div_3_Template_div_dragEnd_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r50); const timeEvent_r37 = restoredCtx.$implicit; const ctx_r55 = ɵngcc0.ɵɵnextContext(2); return ctx_r55.dragEnded(timeEvent_r37, $event, ctx_r55.dayColumnWidth, true); });\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewComponent_div_7_div_3_div_2_Template, 1, 2, \"div\", 19);\n ɵngcc0.ɵɵtemplate(3, CalendarWeekViewComponent_div_7_div_3_ng_template_3_Template, 0, 0, \"ng-template\", 34);\n ɵngcc0.ɵɵtemplate(4, CalendarWeekViewComponent_div_7_div_3_ng_template_4_Template, 1, 12, \"ng-template\", null, 35, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(6, CalendarWeekViewComponent_div_7_div_3_div_6_Template, 1, 2, \"div\", 21);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const timeEvent_r37 = ctx.$implicit;\n const _r41 = ɵngcc0.ɵɵreference(5);\n const ctx_r35 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"top\", timeEvent_r37.top, \"px\")(\"height\", timeEvent_r37.height, \"px\")(\"left\", timeEvent_r37.left, \"%\")(\"width\", timeEvent_r37.width, \"%\");\n ɵngcc0.ɵɵclassProp(\"cal-draggable\", timeEvent_r37.event.draggable && ctx_r35.timeEventResizes.size === 0)(\"cal-starts-within-day\", !timeEvent_r37.startsBeforeDay)(\"cal-ends-within-day\", !timeEvent_r37.endsAfterDay);\n ɵngcc0.ɵɵproperty(\"ngClass\", timeEvent_r37.event.cssClass)(\"hidden\", timeEvent_r37.height === 0 && timeEvent_r37.width === 0)(\"resizeSnapGrid\", ɵngcc0.ɵɵpureFunction4(29, _c23, ctx_r35.dayColumnWidth, ctx_r35.dayColumnWidth, ctx_r35.eventSnapSize || ctx_r35.hourSegmentHeight, ctx_r35.eventSnapSize || ctx_r35.hourSegmentHeight))(\"validateResize\", ctx_r35.validateResize)(\"allowNegativeResizes\", true)(\"dropData\", ɵngcc0.ɵɵpureFunction2(34, _c19, timeEvent_r37.event, ctx_r35.calendarId))(\"dragAxis\", ɵngcc0.ɵɵpureFunction2(37, _c8, timeEvent_r37.event.draggable && ctx_r35.timeEventResizes.size === 0, timeEvent_r37.event.draggable && ctx_r35.timeEventResizes.size === 0))(\"dragSnapGrid\", ctx_r35.snapDraggedEvents ? ɵngcc0.ɵɵpureFunction2(40, _c8, ctx_r35.dayColumnWidth, ctx_r35.eventSnapSize || ctx_r35.hourSegmentHeight) : ɵngcc0.ɵɵpureFunction0(43, _c2))(\"touchStartLongPress\", ɵngcc0.ɵɵpureFunction0(44, _c9))(\"ghostDragEnabled\", !ctx_r35.snapDraggedEvents)(\"ghostElementTemplate\", _r41)(\"validateDrag\", ctx_r35.validateDrag);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", (timeEvent_r37.event == null ? null : timeEvent_r37.event.resizable == null ? null : timeEvent_r37.event.resizable.beforeStart) && !timeEvent_r37.startsBeforeDay);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", _r41);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", (timeEvent_r37.event == null ? null : timeEvent_r37.event.resizable == null ? null : timeEvent_r37.event.resizable.afterEnd) && !timeEvent_r37.endsAfterDay);\n} }\nfunction CalendarWeekViewComponent_div_7_div_4_mwl_calendar_week_view_hour_segment_1_Template(rf, ctx) { if (rf & 1) {\n const _r61 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"mwl-calendar-week-view-hour-segment\", 38);\n ɵngcc0.ɵɵlistener(\"mwlClick\", function CalendarWeekViewComponent_div_7_div_4_mwl_calendar_week_view_hour_segment_1_Template_mwl_calendar_week_view_hour_segment_mwlClick_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r61); const segment_r59 = restoredCtx.$implicit; const ctx_r60 = ɵngcc0.ɵɵnextContext(3); return ctx_r60.hourSegmentClicked.emit({ date: segment_r59.date, sourceEvent: $event }); })(\"drop\", function CalendarWeekViewComponent_div_7_div_4_mwl_calendar_week_view_hour_segment_1_Template_mwl_calendar_week_view_hour_segment_drop_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r61); const segment_r59 = restoredCtx.$implicit; const ctx_r62 = ɵngcc0.ɵɵnextContext(3); return ctx_r62.eventDropped($event, segment_r59.date, false); })(\"dragEnter\", function CalendarWeekViewComponent_div_7_div_4_mwl_calendar_week_view_hour_segment_1_Template_mwl_calendar_week_view_hour_segment_dragEnter_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r61); const segment_r59 = restoredCtx.$implicit; const ctx_r63 = ɵngcc0.ɵɵnextContext(3); return ctx_r63.dateDragEnter(segment_r59.date); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const segment_r59 = ctx.$implicit;\n const ctx_r58 = ɵngcc0.ɵɵnextContext(3);\n ɵngcc0.ɵɵstyleProp(\"height\", ctx_r58.hourSegmentHeight, \"px\");\n ɵngcc0.ɵɵproperty(\"segment\", segment_r59)(\"segmentHeight\", ctx_r58.hourSegmentHeight)(\"locale\", ctx_r58.locale)(\"customTemplate\", ctx_r58.hourSegmentTemplate)(\"daysInWeek\", ctx_r58.daysInWeek)(\"clickListenerDisabled\", ctx_r58.hourSegmentClicked.observers.length === 0)(\"dragOverClass\", !ctx_r58.dragActive || !ctx_r58.snapDraggedEvents ? \"cal-drag-over\" : null)(\"isTimeLabel\", ctx_r58.daysInWeek === 1);\n} }\nfunction CalendarWeekViewComponent_div_7_div_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 26);\n ɵngcc0.ɵɵtemplate(1, CalendarWeekViewComponent_div_7_div_4_mwl_calendar_week_view_hour_segment_1_Template, 1, 10, \"mwl-calendar-week-view-hour-segment\", 37);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const hour_r56 = ctx.$implicit;\n const odd_r57 = ctx.odd;\n const ctx_r36 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"cal-hour-odd\", odd_r57);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", hour_r56.segments)(\"ngForTrackBy\", ctx_r36.trackByHourSegment);\n} }\nfunction CalendarWeekViewComponent_div_7_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 29);\n ɵngcc0.ɵɵelement(1, \"mwl-calendar-week-view-current-time-marker\", 30);\n ɵngcc0.ɵɵelementStart(2, \"div\", 31);\n ɵngcc0.ɵɵtemplate(3, CalendarWeekViewComponent_div_7_div_3_Template, 7, 45, \"div\", 32);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(4, CalendarWeekViewComponent_div_7_div_4_Template, 2, 4, \"div\", 25);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const column_r34 = ctx.$implicit;\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"columnDate\", column_r34.date)(\"dayStartHour\", ctx_r3.dayStartHour)(\"dayStartMinute\", ctx_r3.dayStartMinute)(\"dayEndHour\", ctx_r3.dayEndHour)(\"dayEndMinute\", ctx_r3.dayEndMinute)(\"hourSegments\", ctx_r3.hourSegments)(\"hourSegmentHeight\", ctx_r3.hourSegmentHeight)(\"customTemplate\", ctx_r3.currentTimeMarkerTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", column_r34.events)(\"ngForTrackBy\", ctx_r3.trackByWeekTimeEvent);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", column_r34.hours)(\"ngForTrackBy\", ctx_r3.trackByHour);\n} }\nfunction CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵlistener(\"mwlClick\", function CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template_div_mwlClick_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r12); const day_r10 = restoredCtx.$implicit; const dayHeaderClicked_r5 = ɵngcc0.ɵɵnextContext().dayHeaderClicked; return dayHeaderClicked_r5.emit({ day: day_r10, sourceEvent: $event }); })(\"drop\", function CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template_div_drop_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r12); const day_r10 = restoredCtx.$implicit; const eventDropped_r6 = ɵngcc0.ɵɵnextContext().eventDropped; return eventDropped_r6.emit({ event: $event.dropData.event, newStart: day_r10.date }); })(\"dragEnter\", function CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template_div_dragEnter_0_listener() { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r12); const day_r10 = restoredCtx.$implicit; const dragEnter_r8 = ɵngcc0.ɵɵnextContext().dragEnter; return dragEnter_r8.emit({ date: day_r10.date }); });\n ɵngcc0.ɵɵelementStart(1, \"b\");\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵpipe(3, \"calendarDate\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(4, \"br\");\n ɵngcc0.ɵɵelementStart(5, \"span\");\n ɵngcc0.ɵɵtext(6);\n ɵngcc0.ɵɵpipe(7, \"calendarDate\");\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const day_r10 = ctx.$implicit;\n const locale_r4 = ɵngcc0.ɵɵnextContext().locale;\n ɵngcc0.ɵɵclassProp(\"cal-past\", day_r10.isPast)(\"cal-today\", day_r10.isToday)(\"cal-future\", day_r10.isFuture)(\"cal-weekend\", day_r10.isWeekend);\n ɵngcc0.ɵɵproperty(\"ngClass\", day_r10.cssClass);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵtextInterpolate(ɵngcc0.ɵɵpipeBind3(3, 11, day_r10.date, \"weekViewColumnHeader\", locale_r4));\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵtextInterpolate(ɵngcc0.ɵɵpipeBind3(7, 15, day_r10.date, \"weekViewColumnSubHeader\", locale_r4));\n} }\nfunction CalendarWeekViewHeaderComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵtemplate(1, CalendarWeekViewHeaderComponent_ng_template_0_div_1_Template, 8, 19, \"div\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const days_r3 = ctx.days;\n const trackByWeekDayHeaderDate_r7 = ctx.trackByWeekDayHeaderDate;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", days_r3)(\"ngForTrackBy\", trackByWeekDayHeaderDate_r7);\n} }\nfunction CalendarWeekViewHeaderComponent_ng_template_2_Template(rf, ctx) { }\nconst _c24 = function (a0, a1, a2, a3, a4, a5) { return { days: a0, locale: a1, dayHeaderClicked: a2, eventDropped: a3, dragEnter: a4, trackByWeekDayHeaderDate: a5 }; };\nconst _c25 = function (a0, a1) { return { backgroundColor: a0, borderColor: a1 }; };\nfunction CalendarWeekViewEventComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵlistener(\"mwlClick\", function CalendarWeekViewEventComponent_ng_template_0_Template_div_mwlClick_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r13); const eventClicked_r5 = restoredCtx.eventClicked; return eventClicked_r5.emit({ sourceEvent: $event }); })(\"mwlKeydownEnter\", function CalendarWeekViewEventComponent_ng_template_0_Template_div_mwlKeydownEnter_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r13); const eventClicked_r5 = restoredCtx.eventClicked; return eventClicked_r5.emit({ sourceEvent: $event }); });\n ɵngcc0.ɵɵpipe(1, \"calendarEventTitle\");\n ɵngcc0.ɵɵpipe(2, \"calendarA11y\");\n ɵngcc0.ɵɵelement(3, \"mwl-calendar-event-actions\", 3);\n ɵngcc0.ɵɵtext(4, \" \");\n ɵngcc0.ɵɵelement(5, \"mwl-calendar-event-title\", 4);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const weekEvent_r3 = ctx.weekEvent;\n const tooltipPlacement_r4 = ctx.tooltipPlacement;\n const tooltipTemplate_r6 = ctx.tooltipTemplate;\n const tooltipAppendToBody_r7 = ctx.tooltipAppendToBody;\n const tooltipDisabled_r8 = ctx.tooltipDisabled;\n const tooltipDelay_r9 = ctx.tooltipDelay;\n const daysInWeek_r11 = ctx.daysInWeek;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"ngStyle\", ɵngcc0.ɵɵpureFunction2(20, _c25, weekEvent_r3.event.color == null ? null : weekEvent_r3.event.color.secondary, weekEvent_r3.event.color == null ? null : weekEvent_r3.event.color.primary))(\"mwlCalendarTooltip\", !tooltipDisabled_r8 ? ɵngcc0.ɵɵpipeBind3(1, 13, weekEvent_r3.event.title, daysInWeek_r11 === 1 ? \"dayTooltip\" : \"weekTooltip\", weekEvent_r3.tempEvent || weekEvent_r3.event) : \"\")(\"tooltipPlacement\", tooltipPlacement_r4)(\"tooltipEvent\", weekEvent_r3.tempEvent || weekEvent_r3.event)(\"tooltipTemplate\", tooltipTemplate_r6)(\"tooltipAppendToBody\", tooltipAppendToBody_r7)(\"tooltipDelay\", tooltipDelay_r9);\n ɵngcc0.ɵɵattribute(\"aria-label\", ɵngcc0.ɵɵpipeBind2(2, 17, ɵngcc0.ɵɵpureFunction2(23, _c13, weekEvent_r3.tempEvent || weekEvent_r3.event, ctx_r1.locale), \"eventDescription\"));\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"event\", weekEvent_r3.tempEvent || weekEvent_r3.event)(\"customTemplate\", ctx_r1.eventActionsTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"event\", weekEvent_r3.tempEvent || weekEvent_r3.event)(\"customTemplate\", ctx_r1.eventTitleTemplate)(\"view\", daysInWeek_r11 === 1 ? \"day\" : \"week\");\n} }\nfunction CalendarWeekViewEventComponent_ng_template_2_Template(rf, ctx) { }\nconst _c26 = function (a0, a1, a2, a3, a4, a5, a6, a7, a8) { return { weekEvent: a0, tooltipPlacement: a1, eventClicked: a2, tooltipTemplate: a3, tooltipAppendToBody: a4, tooltipDisabled: a5, tooltipDelay: a6, column: a7, daysInWeek: a8 }; };\nfunction CalendarWeekViewHourSegmentComponent_ng_template_0_div_2_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 4);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵpipe(2, \"calendarDate\");\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r9 = ɵngcc0.ɵɵnextContext();\n const segment_r3 = ctx_r9.segment;\n const daysInWeek_r7 = ctx_r9.daysInWeek;\n const locale_r4 = ctx_r9.locale;\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ɵngcc0.ɵɵpipeBind3(2, 1, segment_r3.displayDate, daysInWeek_r7 === 1 ? \"dayViewHour\" : \"weekViewHour\", locale_r4), \" \");\n} }\nfunction CalendarWeekViewHourSegmentComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 2);\n ɵngcc0.ɵɵpipe(1, \"calendarA11y\");\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewHourSegmentComponent_ng_template_0_div_2_Template, 3, 5, \"div\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const segment_r3 = ctx.segment;\n const segmentHeight_r5 = ctx.segmentHeight;\n const isTimeLabel_r6 = ctx.isTimeLabel;\n const daysInWeek_r7 = ctx.daysInWeek;\n ɵngcc0.ɵɵstyleProp(\"height\", segmentHeight_r5, \"px\");\n ɵngcc0.ɵɵclassProp(\"cal-hour-start\", segment_r3.isStart)(\"cal-after-hour-start\", !segment_r3.isStart);\n ɵngcc0.ɵɵproperty(\"ngClass\", segment_r3.cssClass);\n ɵngcc0.ɵɵattribute(\"aria-hidden\", ɵngcc0.ɵɵpipeBind2(1, 9, ɵngcc0.ɵɵpureFunction0(12, _c2), daysInWeek_r7 === 1 ? \"hideDayHourSegment\" : \"hideWeekHourSegment\"));\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", isTimeLabel_r6);\n} }\nfunction CalendarWeekViewHourSegmentComponent_ng_template_2_Template(rf, ctx) { }\nconst _c27 = function (a0, a1, a2, a3, a4) { return { segment: a0, locale: a1, segmentHeight: a2, isTimeLabel: a3, daysInWeek: a4 }; };\nfunction CalendarWeekViewCurrentTimeMarkerComponent_ng_template_0_div_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"div\", 3);\n} if (rf & 2) {\n const topPx_r9 = ɵngcc0.ɵɵnextContext().topPx;\n ɵngcc0.ɵɵstyleProp(\"top\", topPx_r9, \"px\");\n} }\nfunction CalendarWeekViewCurrentTimeMarkerComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarWeekViewCurrentTimeMarkerComponent_ng_template_0_div_0_Template, 1, 2, \"div\", 2);\n} if (rf & 2) {\n const isVisible_r8 = ctx.isVisible;\n ɵngcc0.ɵɵproperty(\"ngIf\", isVisible_r8);\n} }\nfunction CalendarWeekViewCurrentTimeMarkerComponent_ng_template_2_Template(rf, ctx) { }\nconst _c28 = function (a0, a1, a2, a3, a4, a5, a6) { return { columnDate: a0, dayStartHour: a1, dayStartMinute: a2, dayEndHour: a3, dayEndMinute: a4, isVisible: a5, topPx: a6 }; };\nexport { DAYS_OF_WEEK } from 'calendar-utils';\nimport { DragAndDropModule } from 'angular-draggable-droppable';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport { ResizableModule } from 'angular-resizable-element';\n\nlet CalendarEventActionsComponent = class CalendarEventActionsComponent {\n constructor() {\n this.trackByActionId = (index, action) => action.id ? action.id : action;\n }\n};\nCalendarEventActionsComponent.ɵfac = function CalendarEventActionsComponent_Factory(t) { return new (t || CalendarEventActionsComponent)(); };\nCalendarEventActionsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarEventActionsComponent, selectors: [[\"mwl-calendar-event-actions\"]], inputs: { event: \"event\", customTemplate: \"customTemplate\" }, decls: 3, vars: 5, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"class\", \"cal-event-actions\", 4, \"ngIf\"], [1, \"cal-event-actions\"], [\"class\", \"cal-event-action\", \"href\", \"javascript:;\", \"tabindex\", \"0\", \"role\", \"button\", 3, \"ngClass\", \"innerHtml\", \"mwlClick\", \"mwlKeydownEnter\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"href\", \"javascript:;\", \"tabindex\", \"0\", \"role\", \"button\", 1, \"cal-event-action\", 3, \"ngClass\", \"innerHtml\", \"mwlClick\", \"mwlKeydownEnter\"]], template: function CalendarEventActionsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarEventActionsComponent_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarEventActionsComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c1, ctx.event, ctx.trackByActionId));\n } }, directives: function () { return [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc1.NgClass, ClickDirective, KeydownEnterDirective, ɵngcc1.NgTemplateOutlet]; }, pipes: function () { return [CalendarA11yPipe]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CalendarEventActionsComponent.prototype, \"event\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarEventActionsComponent.prototype, \"customTemplate\", void 0);\n\nlet CalendarEventTitleComponent = class CalendarEventTitleComponent {\n};\nCalendarEventTitleComponent.ɵfac = function CalendarEventTitleComponent_Factory(t) { return new (t || CalendarEventTitleComponent)(); };\nCalendarEventTitleComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarEventTitleComponent, selectors: [[\"mwl-calendar-event-title\"]], inputs: { event: \"event\", customTemplate: \"customTemplate\", view: \"view\" }, decls: 3, vars: 5, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-event-title\", 3, \"innerHTML\"]], template: function CalendarEventTitleComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarEventTitleComponent_ng_template_0_Template, 3, 10, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarEventTitleComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction2(2, _c3, ctx.event, ctx.view));\n } }, directives: function () { return [ɵngcc1.NgTemplateOutlet]; }, pipes: function () { return [CalendarEventTitlePipe, CalendarA11yPipe]; }, encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CalendarEventTitleComponent.prototype, \"event\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarEventTitleComponent.prototype, \"customTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarEventTitleComponent.prototype, \"view\", void 0);\n\nlet CalendarTooltipWindowComponent = class CalendarTooltipWindowComponent {\n};\nCalendarTooltipWindowComponent.ɵfac = function CalendarTooltipWindowComponent_Factory(t) { return new (t || CalendarTooltipWindowComponent)(); };\nCalendarTooltipWindowComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarTooltipWindowComponent, selectors: [[\"mwl-calendar-tooltip-window\"]], inputs: { contents: \"contents\", placement: \"placement\", event: \"event\", customTemplate: \"customTemplate\" }, decls: 3, vars: 6, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-tooltip\", 3, \"ngClass\"], [1, \"cal-tooltip-arrow\"], [1, \"cal-tooltip-inner\", 3, \"innerHtml\"]], template: function CalendarTooltipWindowComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarTooltipWindowComponent_ng_template_0_Template, 3, 2, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarTooltipWindowComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(2, _c4, ctx.contents, ctx.placement, ctx.event));\n } }, directives: [ɵngcc1.NgClass, ɵngcc1.NgTemplateOutlet], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarTooltipWindowComponent.prototype, \"contents\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarTooltipWindowComponent.prototype, \"placement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CalendarTooltipWindowComponent.prototype, \"event\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarTooltipWindowComponent.prototype, \"customTemplate\", void 0);\nlet CalendarTooltipDirective = class CalendarTooltipDirective {\n constructor(elementRef, injector, renderer, componentFactoryResolver, viewContainerRef, document //tslint:disable-line\n ) {\n this.elementRef = elementRef;\n this.injector = injector;\n this.renderer = renderer;\n this.viewContainerRef = viewContainerRef;\n this.document = document;\n this.placement = 'auto'; // tslint:disable-line no-input-rename\n this.delay = null; // tslint:disable-line no-input-rename\n this.cancelTooltipDelay$ = new Subject();\n this.tooltipFactory = componentFactoryResolver.resolveComponentFactory(CalendarTooltipWindowComponent);\n }\n ngOnChanges(changes) {\n if (this.tooltipRef &&\n (changes.contents || changes.customTemplate || changes.event)) {\n this.tooltipRef.instance.contents = this.contents;\n this.tooltipRef.instance.customTemplate = this.customTemplate;\n this.tooltipRef.instance.event = this.event;\n this.tooltipRef.changeDetectorRef.markForCheck();\n if (!this.contents) {\n this.hide();\n }\n }\n }\n ngOnDestroy() {\n this.hide();\n }\n onMouseOver() {\n const delay$ = this.delay === null ? of('now') : timer(this.delay);\n delay$.pipe(takeUntil(this.cancelTooltipDelay$)).subscribe(() => {\n this.show();\n });\n }\n onMouseOut() {\n this.hide();\n }\n show() {\n if (!this.tooltipRef && this.contents) {\n this.tooltipRef = this.viewContainerRef.createComponent(this.tooltipFactory, 0, this.injector, []);\n this.tooltipRef.instance.contents = this.contents;\n this.tooltipRef.instance.customTemplate = this.customTemplate;\n this.tooltipRef.instance.event = this.event;\n if (this.appendToBody) {\n this.document.body.appendChild(this.tooltipRef.location.nativeElement);\n }\n requestAnimationFrame(() => {\n this.positionTooltip();\n });\n }\n }\n hide() {\n if (this.tooltipRef) {\n this.viewContainerRef.remove(this.viewContainerRef.indexOf(this.tooltipRef.hostView));\n this.tooltipRef = null;\n }\n this.cancelTooltipDelay$.next();\n }\n positionTooltip(previousPositions = []) {\n if (this.tooltipRef) {\n this.tooltipRef.changeDetectorRef.detectChanges();\n this.tooltipRef.instance.placement = positionElements(this.elementRef.nativeElement, this.tooltipRef.location.nativeElement.children[0], this.placement, this.appendToBody);\n // keep re-positioning the tooltip until the arrow position doesn't make a difference\n if (previousPositions.indexOf(this.tooltipRef.instance.placement) === -1) {\n this.positionTooltip([\n ...previousPositions,\n this.tooltipRef.instance.placement,\n ]);\n }\n }\n }\n};\nCalendarTooltipDirective.ɵfac = function CalendarTooltipDirective_Factory(t) { return new (t || CalendarTooltipDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Injector), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ComponentFactoryResolver), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nCalendarTooltipDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CalendarTooltipDirective, selectors: [[\"\", \"mwlCalendarTooltip\", \"\"]], hostBindings: function CalendarTooltipDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"mouseenter\", function CalendarTooltipDirective_mouseenter_HostBindingHandler() { return ctx.onMouseOver(); })(\"mouseleave\", function CalendarTooltipDirective_mouseleave_HostBindingHandler() { return ctx.onMouseOut(); });\n } }, inputs: { placement: [\"tooltipPlacement\", \"placement\"], delay: [\"tooltipDelay\", \"delay\"], contents: [\"mwlCalendarTooltip\", \"contents\"], customTemplate: [\"tooltipTemplate\", \"customTemplate\"], event: [\"tooltipEvent\", \"event\"], appendToBody: [\"tooltipAppendToBody\", \"appendToBody\"] }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nCalendarTooltipDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Injector },\n { type: Renderer2 },\n { type: ComponentFactoryResolver },\n { type: ViewContainerRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n__decorate([\n Input('mwlCalendarTooltip'),\n __metadata(\"design:type\", String)\n], CalendarTooltipDirective.prototype, \"contents\", void 0);\n__decorate([\n Input('tooltipPlacement'),\n __metadata(\"design:type\", Object)\n], CalendarTooltipDirective.prototype, \"placement\", void 0);\n__decorate([\n Input('tooltipTemplate'),\n __metadata(\"design:type\", TemplateRef)\n], CalendarTooltipDirective.prototype, \"customTemplate\", void 0);\n__decorate([\n Input('tooltipEvent'),\n __metadata(\"design:type\", Object)\n], CalendarTooltipDirective.prototype, \"event\", void 0);\n__decorate([\n Input('tooltipAppendToBody'),\n __metadata(\"design:type\", Boolean)\n], CalendarTooltipDirective.prototype, \"appendToBody\", void 0);\n__decorate([\n Input('tooltipDelay'),\n __metadata(\"design:type\", Number)\n], CalendarTooltipDirective.prototype, \"delay\", void 0);\n__decorate([\n HostListener('mouseenter'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], CalendarTooltipDirective.prototype, \"onMouseOver\", null);\n__decorate([\n HostListener('mouseleave'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], CalendarTooltipDirective.prototype, \"onMouseOut\", null);\nCalendarTooltipDirective = __decorate([ __param(5, Inject(DOCUMENT)),\n __metadata(\"design:paramtypes\", [ElementRef,\n Injector,\n Renderer2,\n ComponentFactoryResolver,\n ViewContainerRef, Object])\n], CalendarTooltipDirective);\n\nclass DateAdapter {\n}\n\nvar CalendarView;\n(function (CalendarView) {\n CalendarView[\"Month\"] = \"month\";\n CalendarView[\"Week\"] = \"week\";\n CalendarView[\"Day\"] = \"day\";\n})(CalendarView || (CalendarView = {}));\n\nconst validateEvents = (events) => {\n const warn = (...args) => console.warn('angular-calendar', ...args);\n return validateEvents$1(events, warn);\n};\nfunction isInside(outer, inner) {\n return (Math.floor(outer.left) <= Math.ceil(inner.left) &&\n Math.floor(inner.left) <= Math.ceil(outer.right) &&\n Math.floor(outer.left) <= Math.ceil(inner.right) &&\n Math.floor(inner.right) <= Math.ceil(outer.right) &&\n Math.floor(outer.top) <= Math.ceil(inner.top) &&\n Math.floor(inner.top) <= Math.ceil(outer.bottom) &&\n Math.floor(outer.top) <= Math.ceil(inner.bottom) &&\n Math.floor(inner.bottom) <= Math.ceil(outer.bottom));\n}\nfunction roundToNearest(amount, precision) {\n return Math.round(amount / precision) * precision;\n}\nconst trackByEventId = (index, event) => event.id ? event.id : event;\nconst trackByWeekDayHeaderDate = (index, day) => day.date.toISOString();\nconst trackByHourSegment = (index, segment) => segment.date.toISOString();\nconst trackByHour = (index, hour) => hour.segments[0].date.toISOString();\nconst trackByWeekAllDayEvent = (index, weekEvent) => (weekEvent.event.id ? weekEvent.event.id : weekEvent.event);\nconst trackByWeekTimeEvent = (index, weekEvent) => (weekEvent.event.id ? weekEvent.event.id : weekEvent.event);\nconst MINUTES_IN_HOUR = 60;\nfunction getPixelAmountInMinutes(hourSegments, hourSegmentHeight) {\n return MINUTES_IN_HOUR / (hourSegments * hourSegmentHeight);\n}\nfunction getMinutesMoved(movedY, hourSegments, hourSegmentHeight, eventSnapSize) {\n const draggedInPixelsSnapSize = roundToNearest(movedY, eventSnapSize || hourSegmentHeight);\n const pixelAmountInMinutes = getPixelAmountInMinutes(hourSegments, hourSegmentHeight);\n return draggedInPixelsSnapSize * pixelAmountInMinutes;\n}\nfunction getMinimumEventHeightInMinutes(hourSegments, hourSegmentHeight) {\n return (getPixelAmountInMinutes(hourSegments, hourSegmentHeight) * hourSegmentHeight);\n}\nfunction getDefaultEventEnd(dateAdapter, event, minimumMinutes) {\n if (event.end) {\n return event.end;\n }\n else {\n return dateAdapter.addMinutes(event.start, minimumMinutes);\n }\n}\nfunction addDaysWithExclusions(dateAdapter, date, days, excluded) {\n let daysCounter = 0;\n let daysToAdd = 0;\n const changeDays = days < 0 ? dateAdapter.subDays : dateAdapter.addDays;\n let result = date;\n while (daysToAdd <= Math.abs(days)) {\n result = changeDays(date, daysCounter);\n const day = dateAdapter.getDay(result);\n if (excluded.indexOf(day) === -1) {\n daysToAdd++;\n }\n daysCounter++;\n }\n return result;\n}\nfunction isDraggedWithinPeriod(newStart, newEnd, period) {\n const end = newEnd || newStart;\n return ((period.start <= newStart && newStart <= period.end) ||\n (period.start <= end && end <= period.end));\n}\nfunction shouldFireDroppedEvent(dropEvent, date, allDay, calendarId) {\n return (dropEvent.dropData &&\n dropEvent.dropData.event &&\n (dropEvent.dropData.calendarId !== calendarId ||\n (dropEvent.dropData.event.allDay && !allDay) ||\n (!dropEvent.dropData.event.allDay && allDay)));\n}\nfunction getWeekViewPeriod(dateAdapter, viewDate, weekStartsOn, excluded = [], daysInWeek) {\n let viewStart = daysInWeek\n ? dateAdapter.startOfDay(viewDate)\n : dateAdapter.startOfWeek(viewDate, { weekStartsOn });\n const endOfWeek = dateAdapter.endOfWeek(viewDate, { weekStartsOn });\n while (excluded.indexOf(dateAdapter.getDay(viewStart)) > -1 &&\n viewStart < endOfWeek) {\n viewStart = dateAdapter.addDays(viewStart, 1);\n }\n if (daysInWeek) {\n const viewEnd = dateAdapter.endOfDay(addDaysWithExclusions(dateAdapter, viewStart, daysInWeek - 1, excluded));\n return { viewStart, viewEnd };\n }\n else {\n let viewEnd = endOfWeek;\n while (excluded.indexOf(dateAdapter.getDay(viewEnd)) > -1 &&\n viewEnd > viewStart) {\n viewEnd = dateAdapter.subDays(viewEnd, 1);\n }\n return { viewStart, viewEnd };\n }\n}\nfunction isWithinThreshold({ x, y }) {\n const DRAG_THRESHOLD = 1;\n return Math.abs(x) > DRAG_THRESHOLD || Math.abs(y) > DRAG_THRESHOLD;\n}\n\n/**\n * Change the view date to the previous view. For example:\n *\n * ```typescript\n * \n * Previous\n * \n * ```\n */\nlet CalendarPreviousViewDirective = class CalendarPreviousViewDirective {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n /**\n * Days to skip when going back by 1 day\n */\n this.excludeDays = [];\n /**\n * Called when the view date is changed\n */\n this.viewDateChange = new EventEmitter();\n }\n /**\n * @hidden\n */\n onClick() {\n const subFn = {\n day: this.dateAdapter.subDays,\n week: this.dateAdapter.subWeeks,\n month: this.dateAdapter.subMonths,\n }[this.view];\n if (this.view === CalendarView.Day) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, -1, this.excludeDays));\n }\n else if (this.view === CalendarView.Week && this.daysInWeek) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, -this.daysInWeek, this.excludeDays));\n }\n else {\n this.viewDateChange.emit(subFn(this.viewDate, 1));\n }\n }\n};\nCalendarPreviousViewDirective.ɵfac = function CalendarPreviousViewDirective_Factory(t) { return new (t || CalendarPreviousViewDirective)(ɵngcc0.ɵɵdirectiveInject(DateAdapter)); };\nCalendarPreviousViewDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CalendarPreviousViewDirective, selectors: [[\"\", \"mwlCalendarPreviousView\", \"\"]], hostBindings: function CalendarPreviousViewDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function CalendarPreviousViewDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } }, inputs: { excludeDays: \"excludeDays\", view: \"view\", viewDate: \"viewDate\", daysInWeek: \"daysInWeek\" }, outputs: { viewDateChange: \"viewDateChange\" } });\nCalendarPreviousViewDirective.ctorParameters = () => [\n { type: DateAdapter }\n];\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarPreviousViewDirective.prototype, \"view\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], CalendarPreviousViewDirective.prototype, \"viewDate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CalendarPreviousViewDirective.prototype, \"excludeDays\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarPreviousViewDirective.prototype, \"daysInWeek\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CalendarPreviousViewDirective.prototype, \"viewDateChange\", void 0);\n__decorate([\n HostListener('click'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], CalendarPreviousViewDirective.prototype, \"onClick\", null);\nCalendarPreviousViewDirective = __decorate([ __metadata(\"design:paramtypes\", [DateAdapter])\n], CalendarPreviousViewDirective);\n\n/**\n * Change the view date to the next view. For example:\n *\n * ```typescript\n * \n * Next\n * \n * ```\n */\nlet CalendarNextViewDirective = class CalendarNextViewDirective {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n /**\n * Days to skip when going forward by 1 day\n */\n this.excludeDays = [];\n /**\n * Called when the view date is changed\n */\n this.viewDateChange = new EventEmitter();\n }\n /**\n * @hidden\n */\n onClick() {\n const addFn = {\n day: this.dateAdapter.addDays,\n week: this.dateAdapter.addWeeks,\n month: this.dateAdapter.addMonths,\n }[this.view];\n if (this.view === CalendarView.Day) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, 1, this.excludeDays));\n }\n else if (this.view === CalendarView.Week && this.daysInWeek) {\n this.viewDateChange.emit(addDaysWithExclusions(this.dateAdapter, this.viewDate, this.daysInWeek, this.excludeDays));\n }\n else {\n this.viewDateChange.emit(addFn(this.viewDate, 1));\n }\n }\n};\nCalendarNextViewDirective.ɵfac = function CalendarNextViewDirective_Factory(t) { return new (t || CalendarNextViewDirective)(ɵngcc0.ɵɵdirectiveInject(DateAdapter)); };\nCalendarNextViewDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CalendarNextViewDirective, selectors: [[\"\", \"mwlCalendarNextView\", \"\"]], hostBindings: function CalendarNextViewDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function CalendarNextViewDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } }, inputs: { excludeDays: \"excludeDays\", view: \"view\", viewDate: \"viewDate\", daysInWeek: \"daysInWeek\" }, outputs: { viewDateChange: \"viewDateChange\" } });\nCalendarNextViewDirective.ctorParameters = () => [\n { type: DateAdapter }\n];\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarNextViewDirective.prototype, \"view\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], CalendarNextViewDirective.prototype, \"viewDate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CalendarNextViewDirective.prototype, \"excludeDays\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarNextViewDirective.prototype, \"daysInWeek\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CalendarNextViewDirective.prototype, \"viewDateChange\", void 0);\n__decorate([\n HostListener('click'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], CalendarNextViewDirective.prototype, \"onClick\", null);\nCalendarNextViewDirective = __decorate([ __metadata(\"design:paramtypes\", [DateAdapter])\n], CalendarNextViewDirective);\n\n/**\n * Change the view date to the current day. For example:\n *\n * ```typescript\n * \n * Today\n * \n * ```\n */\nlet CalendarTodayDirective = class CalendarTodayDirective {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n /**\n * Called when the view date is changed\n */\n this.viewDateChange = new EventEmitter();\n }\n /**\n * @hidden\n */\n onClick() {\n this.viewDateChange.emit(this.dateAdapter.startOfDay(new Date()));\n }\n};\nCalendarTodayDirective.ɵfac = function CalendarTodayDirective_Factory(t) { return new (t || CalendarTodayDirective)(ɵngcc0.ɵɵdirectiveInject(DateAdapter)); };\nCalendarTodayDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: CalendarTodayDirective, selectors: [[\"\", \"mwlCalendarToday\", \"\"]], hostBindings: function CalendarTodayDirective_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"click\", function CalendarTodayDirective_click_HostBindingHandler() { return ctx.onClick(); });\n } }, inputs: { viewDate: \"viewDate\" }, outputs: { viewDateChange: \"viewDateChange\" } });\nCalendarTodayDirective.ctorParameters = () => [\n { type: DateAdapter }\n];\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], CalendarTodayDirective.prototype, \"viewDate\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CalendarTodayDirective.prototype, \"viewDateChange\", void 0);\n__decorate([\n HostListener('click'),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], CalendarTodayDirective.prototype, \"onClick\", null);\nCalendarTodayDirective = __decorate([ __metadata(\"design:paramtypes\", [DateAdapter])\n], CalendarTodayDirective);\n\n/**\n * This will use the angular date pipe to do all date formatting. It is the default date formatter used by the calendar.\n */\nlet CalendarAngularDateFormatter = class CalendarAngularDateFormatter {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n }\n /**\n * The month view header week day labels\n */\n monthViewColumnHeader({ date, locale }) {\n return formatDate(date, 'EEEE', locale);\n }\n /**\n * The month view cell day number\n */\n monthViewDayNumber({ date, locale }) {\n return formatDate(date, 'd', locale);\n }\n /**\n * The month view title\n */\n monthViewTitle({ date, locale }) {\n return formatDate(date, 'LLLL y', locale);\n }\n /**\n * The week view header week day labels\n */\n weekViewColumnHeader({ date, locale }) {\n return formatDate(date, 'EEEE', locale);\n }\n /**\n * The week view sub header day and month labels\n */\n weekViewColumnSubHeader({ date, locale, }) {\n return formatDate(date, 'MMM d', locale);\n }\n /**\n * The week view title\n */\n weekViewTitle({ date, locale, weekStartsOn, excludeDays, daysInWeek, }) {\n const { viewStart, viewEnd } = getWeekViewPeriod(this.dateAdapter, date, weekStartsOn, excludeDays, daysInWeek);\n const format = (dateToFormat, showYear) => formatDate(dateToFormat, 'MMM d' + (showYear ? ', yyyy' : ''), locale);\n return `${format(viewStart, viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear())} - ${format(viewEnd, true)}`;\n }\n /**\n * The time formatting down the left hand side of the week view\n */\n weekViewHour({ date, locale }) {\n return formatDate(date, 'h a', locale);\n }\n /**\n * The time formatting down the left hand side of the day view\n */\n dayViewHour({ date, locale }) {\n return formatDate(date, 'h a', locale);\n }\n /**\n * The day view title\n */\n dayViewTitle({ date, locale }) {\n return formatDate(date, 'EEEE, MMMM d, y', locale);\n }\n};\nCalendarAngularDateFormatter.ɵfac = function CalendarAngularDateFormatter_Factory(t) { return new (t || CalendarAngularDateFormatter)(ɵngcc0.ɵɵinject(DateAdapter)); };\nCalendarAngularDateFormatter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CalendarAngularDateFormatter, factory: function (t) { return CalendarAngularDateFormatter.ɵfac(t); } });\nCalendarAngularDateFormatter.ctorParameters = () => [\n { type: DateAdapter }\n];\nCalendarAngularDateFormatter = __decorate([ __metadata(\"design:paramtypes\", [DateAdapter])\n], CalendarAngularDateFormatter);\n\n/**\n * This class is responsible for all formatting of dates. There are 3 implementations available, the `CalendarAngularDateFormatter` (default) which uses the angular date pipe to format dates, the `CalendarNativeDateFormatter` which will use the Intl API to format dates, or there is the `CalendarMomentDateFormatter` which uses moment.\n *\n * If you wish, you may override any of the defaults via angulars DI. For example:\n *\n * ```typescript\n * import { CalendarDateFormatter, DateFormatterParams } from 'angular-calendar';\n * import { formatDate } from '@angular/common';\n * import { Injectable } from '@angular/core';\n *\n * @Injectable()\n * class CustomDateFormatter extends CalendarDateFormatter {\n *\n * public monthViewColumnHeader({date, locale}: DateFormatterParams): string {\n * return formatDate(date, 'EEE', locale); // use short week days\n * }\n *\n * }\n *\n * // in your component that uses the calendar\n * providers: [{\n * provide: CalendarDateFormatter,\n * useClass: CustomDateFormatter\n * }]\n * ```\n */\nlet CalendarDateFormatter = class CalendarDateFormatter extends CalendarAngularDateFormatter {\n};\nCalendarDateFormatter.ɵfac = /*@__PURE__*/ function () { let ɵCalendarDateFormatter_BaseFactory; return function CalendarDateFormatter_Factory(t) { return (ɵCalendarDateFormatter_BaseFactory || (ɵCalendarDateFormatter_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(CalendarDateFormatter)))(t || CalendarDateFormatter); }; }();\nCalendarDateFormatter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CalendarDateFormatter, factory: function (t) { return CalendarDateFormatter.ɵfac(t); } });\n\n/**\n * This pipe is primarily for rendering the current view title. Example usage:\n * ```typescript\n * // where `viewDate` is a `Date` and view is `'month' | 'week' | 'day'`\n * {{ viewDate | calendarDate:(view + 'ViewTitle'):'en' }}\n * ```\n */\nlet CalendarDatePipe = class CalendarDatePipe {\n constructor(dateFormatter, locale) {\n this.dateFormatter = dateFormatter;\n this.locale = locale;\n }\n transform(date, method, locale = this.locale, weekStartsOn = 0, excludeDays = [], daysInWeek) {\n if (typeof this.dateFormatter[method] === 'undefined') {\n const allowedMethods = Object.getOwnPropertyNames(Object.getPrototypeOf(CalendarDateFormatter.prototype)).filter((iMethod) => iMethod !== 'constructor');\n throw new Error(`${method} is not a valid date formatter. Can only be one of ${allowedMethods.join(', ')}`);\n }\n return this.dateFormatter[method]({\n date,\n locale,\n weekStartsOn,\n excludeDays,\n daysInWeek,\n });\n }\n};\nCalendarDatePipe.ɵfac = function CalendarDatePipe_Factory(t) { return new (t || CalendarDatePipe)(ɵngcc0.ɵɵdirectiveInject(CalendarDateFormatter, 16), ɵngcc0.ɵɵdirectiveInject(LOCALE_ID, 16)); };\nCalendarDatePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"calendarDate\", type: CalendarDatePipe, pure: true });\nCalendarDatePipe.ctorParameters = () => [\n { type: CalendarDateFormatter },\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\nCalendarDatePipe = __decorate([ __param(1, Inject(LOCALE_ID)),\n __metadata(\"design:paramtypes\", [CalendarDateFormatter, String])\n], CalendarDatePipe);\n\n/**\n * This class is responsible for displaying all event titles within the calendar. You may override any of its methods via angulars DI to suit your requirements. For example:\n *\n * ```typescript\n * import { Injectable } from '@angular/core';\n * import { CalendarEventTitleFormatter, CalendarEvent } from 'angular-calendar';\n *\n * @Injectable()\n * class CustomEventTitleFormatter extends CalendarEventTitleFormatter {\n *\n * month(event: CalendarEvent): string {\n * return `Custom prefix: ${event.title}`;\n * }\n *\n * }\n *\n * // in your component\n * providers: [{\n * provide: CalendarEventTitleFormatter,\n * useClass: CustomEventTitleFormatter\n * }]\n * ```\n */\nclass CalendarEventTitleFormatter {\n /**\n * The month view event title.\n */\n month(event, title) {\n return event.title;\n }\n /**\n * The month view event tooltip. Return a falsey value from this to disable the tooltip.\n */\n monthTooltip(event, title) {\n return event.title;\n }\n /**\n * The week view event title.\n */\n week(event, title) {\n return event.title;\n }\n /**\n * The week view event tooltip. Return a falsey value from this to disable the tooltip.\n */\n weekTooltip(event, title) {\n return event.title;\n }\n /**\n * The day view event title.\n */\n day(event, title) {\n return event.title;\n }\n /**\n * The day view event tooltip. Return a falsey value from this to disable the tooltip.\n */\n dayTooltip(event, title) {\n return event.title;\n }\n}\n\nlet CalendarEventTitlePipe = class CalendarEventTitlePipe {\n constructor(calendarEventTitle) {\n this.calendarEventTitle = calendarEventTitle;\n }\n transform(title, titleType, event) {\n return this.calendarEventTitle[titleType](event, title);\n }\n};\nCalendarEventTitlePipe.ɵfac = function CalendarEventTitlePipe_Factory(t) { return new (t || CalendarEventTitlePipe)(ɵngcc0.ɵɵdirectiveInject(CalendarEventTitleFormatter, 16)); };\nCalendarEventTitlePipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"calendarEventTitle\", type: CalendarEventTitlePipe, pure: true });\nCalendarEventTitlePipe.ctorParameters = () => [\n { type: CalendarEventTitleFormatter }\n];\nCalendarEventTitlePipe = __decorate([ __metadata(\"design:paramtypes\", [CalendarEventTitleFormatter])\n], CalendarEventTitlePipe);\n\nlet ClickDirective = class ClickDirective {\n constructor(renderer, elm, document) {\n this.renderer = renderer;\n this.elm = elm;\n this.document = document;\n this.clickListenerDisabled = false;\n this.click = new EventEmitter(); // tslint:disable-line\n this.destroy$ = new Subject();\n }\n ngOnInit() {\n if (!this.clickListenerDisabled) {\n this.listen()\n .pipe(takeUntil(this.destroy$))\n .subscribe((event) => {\n event.stopPropagation();\n this.click.emit(event);\n });\n }\n }\n ngOnDestroy() {\n this.destroy$.next();\n }\n listen() {\n return new Observable((observer) => {\n return this.renderer.listen(this.elm.nativeElement, 'click', (event) => {\n observer.next(event);\n });\n });\n }\n};\nClickDirective.ɵfac = function ClickDirective_Factory(t) { return new (t || ClickDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nClickDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ClickDirective, selectors: [[\"\", \"mwlClick\", \"\"]], inputs: { clickListenerDisabled: \"clickListenerDisabled\" }, outputs: { click: \"mwlClick\" } });\nClickDirective.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], ClickDirective.prototype, \"clickListenerDisabled\", void 0);\n__decorate([\n Output('mwlClick'),\n __metadata(\"design:type\", Object)\n], ClickDirective.prototype, \"click\", void 0);\nClickDirective = __decorate([ __param(2, Inject(DOCUMENT)),\n __metadata(\"design:paramtypes\", [Renderer2,\n ElementRef, Object])\n], ClickDirective);\n\nlet KeydownEnterDirective = class KeydownEnterDirective {\n constructor(host, ngZone, renderer) {\n this.host = host;\n this.ngZone = ngZone;\n this.renderer = renderer;\n this.keydown = new EventEmitter(); // tslint:disable-line\n this.keydownListener = null;\n }\n ngOnInit() {\n this.ngZone.runOutsideAngular(() => {\n this.keydownListener = this.renderer.listen(this.host.nativeElement, 'keydown', (event) => {\n if (event.keyCode === 13 ||\n event.which === 13 ||\n event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n this.ngZone.run(() => {\n this.keydown.emit(event);\n });\n }\n });\n });\n }\n ngOnDestroy() {\n if (this.keydownListener !== null) {\n this.keydownListener();\n this.keydownListener = null;\n }\n }\n};\nKeydownEnterDirective.ɵfac = function KeydownEnterDirective_Factory(t) { return new (t || KeydownEnterDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2)); };\nKeydownEnterDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: KeydownEnterDirective, selectors: [[\"\", \"mwlKeydownEnter\", \"\"]], outputs: { keydown: \"mwlKeydownEnter\" } });\nKeydownEnterDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone },\n { type: Renderer2 }\n];\n__decorate([\n Output('mwlKeydownEnter'),\n __metadata(\"design:type\", Object)\n], KeydownEnterDirective.prototype, \"keydown\", void 0);\nKeydownEnterDirective = __decorate([ __metadata(\"design:paramtypes\", [ElementRef,\n NgZone,\n Renderer2])\n], KeydownEnterDirective);\n\nlet CalendarUtils = class CalendarUtils {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n }\n getMonthView(args) {\n return getMonthView(this.dateAdapter, args);\n }\n getWeekViewHeader(args) {\n return getWeekViewHeader(this.dateAdapter, args);\n }\n getWeekView(args) {\n return getWeekView(this.dateAdapter, args);\n }\n};\nCalendarUtils.ɵfac = function CalendarUtils_Factory(t) { return new (t || CalendarUtils)(ɵngcc0.ɵɵinject(DateAdapter)); };\nCalendarUtils.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CalendarUtils, factory: function (t) { return CalendarUtils.ɵfac(t); } });\nCalendarUtils.ctorParameters = () => [\n { type: DateAdapter }\n];\nCalendarUtils = __decorate([ __metadata(\"design:paramtypes\", [DateAdapter])\n], CalendarUtils);\n\n/**\n * This class is responsible for adding accessibility to the calendar.\n * You may override any of its methods via angulars DI to suit your requirements.\n * For example:\n *\n * ```typescript\n * import { A11yParams, CalendarA11y } from 'angular-calendar';\n * import { formatDate, I18nPluralPipe } from '@angular/common';\n * import { Injectable } from '@angular/core';\n *\n * // adding your own a11y params\n * export interface CustomA11yParams extends A11yParams {\n * isDrSuess?: boolean;\n * }\n *\n * @Injectable()\n * export class CustomCalendarA11y extends CalendarA11y {\n * constructor(protected i18nPlural: I18nPluralPipe) {\n * super(i18nPlural);\n * }\n *\n * // overriding a function\n * public openDayEventsLandmark({ date, locale, isDrSuess }: CustomA11yParams): string {\n * if (isDrSuess) {\n * return `\n * ${formatDate(date, 'EEEE MMMM d', locale)}\n * Today you are you! That is truer than true! There is no one alive\n * who is you-er than you!\n * `;\n * }\n * }\n * }\n *\n * // in your component that uses the calendar\n * providers: [{\n * provide: CalendarA11y,\n * useClass: CustomCalendarA11y\n * }]\n * ```\n */\nlet CalendarA11y = class CalendarA11y {\n constructor(i18nPlural) {\n this.i18nPlural = i18nPlural;\n }\n /**\n * Aria label for the badges/date of a cell\n * @example: `Saturday October 19 1 event click to expand`\n */\n monthCell({ day, locale }) {\n if (day.badgeTotal > 0) {\n return `\n ${formatDate(day.date, 'EEEE MMMM d', locale)},\n ${this.i18nPlural.transform(day.badgeTotal, {\n '=0': 'No events',\n '=1': 'One event',\n other: '# events',\n })},\n click to expand\n `;\n }\n else {\n return `${formatDate(day.date, 'EEEE MMMM d', locale)}`;\n }\n }\n /**\n * Aria label for the open day events start landmark\n * @example: `Saturday October 19 expanded view`\n */\n openDayEventsLandmark({ date, locale }) {\n return `\n Beginning of expanded view for ${formatDate(date, 'EEEE MMMM dd', locale)}\n `;\n }\n /**\n * Aria label for alert that a day in the month view was expanded\n * @example: `Saturday October 19 expanded`\n */\n openDayEventsAlert({ date, locale }) {\n return `${formatDate(date, 'EEEE MMMM dd', locale)} expanded`;\n }\n /**\n * Descriptive aria label for an event\n * @example: `Saturday October 19th, Scott's Pizza Party, from 11:00am to 5:00pm`\n */\n eventDescription({ event, locale }) {\n if (event.allDay === true) {\n return this.allDayEventDescription({ event, locale });\n }\n const aria = `\n ${formatDate(event.start, 'EEEE MMMM dd', locale)},\n ${event.title}, from ${formatDate(event.start, 'hh:mm a', locale)}\n `;\n if (event.end) {\n return aria + ` to ${formatDate(event.end, 'hh:mm a', locale)}`;\n }\n return aria;\n }\n /**\n * Descriptive aria label for an all day event\n * @example:\n * `Scott's Party, event spans multiple days: start time October 19 5:00pm, no stop time`\n */\n allDayEventDescription({ event, locale }) {\n const aria = `\n ${event.title}, event spans multiple days:\n start time ${formatDate(event.start, 'MMMM dd hh:mm a', locale)}\n `;\n if (event.end) {\n return (aria + `, stop time ${formatDate(event.end, 'MMMM d hh:mm a', locale)}`);\n }\n return aria + `, no stop time`;\n }\n /**\n * Aria label for the calendar event actions icons\n * @returns 'Edit' for fa-pencil icons, and 'Delete' for fa-times icons\n */\n actionButtonLabel({ action }) {\n return action.a11yLabel;\n }\n /**\n * @returns {number} Tab index to be given to month cells\n */\n monthCellTabIndex() {\n return 0;\n }\n /**\n * @returns true if the events inside the month cell should be aria-hidden\n */\n hideMonthCellEvents() {\n return true;\n }\n /**\n * @returns true if event titles should be aria-hidden (global)\n */\n hideEventTitle() {\n return true;\n }\n /**\n * @returns true if hour segments in the week view should be aria-hidden\n */\n hideWeekHourSegment() {\n return true;\n }\n /**\n * @returns true if hour segments in the day view should be aria-hidden\n */\n hideDayHourSegment() {\n return true;\n }\n};\nCalendarA11y.ɵfac = function CalendarA11y_Factory(t) { return new (t || CalendarA11y)(ɵngcc0.ɵɵinject(ɵngcc1.I18nPluralPipe)); };\nCalendarA11y.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CalendarA11y, factory: function (t) { return CalendarA11y.ɵfac(t); } });\nCalendarA11y.ctorParameters = () => [\n { type: I18nPluralPipe }\n];\nCalendarA11y = __decorate([ __metadata(\"design:paramtypes\", [I18nPluralPipe])\n], CalendarA11y);\n\n/**\n * This pipe is primarily for rendering aria labels. Example usage:\n * ```typescript\n * // where `myEvent` is a `CalendarEvent` and myLocale is a locale identifier\n * {{ { event: myEvent, locale: myLocale } | calendarA11y: 'eventDescription' }}\n * ```\n */\nlet CalendarA11yPipe = class CalendarA11yPipe {\n constructor(calendarA11y, locale) {\n this.calendarA11y = calendarA11y;\n this.locale = locale;\n }\n transform(a11yParams, method) {\n a11yParams.locale = a11yParams.locale || this.locale;\n if (typeof this.calendarA11y[method] === 'undefined') {\n const allowedMethods = Object.getOwnPropertyNames(Object.getPrototypeOf(CalendarA11y.prototype)).filter((iMethod) => iMethod !== 'constructor');\n throw new Error(`${method} is not a valid a11y method. Can only be one of ${allowedMethods.join(', ')}`);\n }\n return this.calendarA11y[method](a11yParams);\n }\n};\nCalendarA11yPipe.ɵfac = function CalendarA11yPipe_Factory(t) { return new (t || CalendarA11yPipe)(ɵngcc0.ɵɵdirectiveInject(CalendarA11y, 16), ɵngcc0.ɵɵdirectiveInject(LOCALE_ID, 16)); };\nCalendarA11yPipe.ɵpipe = /*@__PURE__*/ ɵngcc0.ɵɵdefinePipe({ name: \"calendarA11y\", type: CalendarA11yPipe, pure: true });\nCalendarA11yPipe.ctorParameters = () => [\n { type: CalendarA11y },\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\nCalendarA11yPipe = __decorate([ __param(1, Inject(LOCALE_ID)),\n __metadata(\"design:paramtypes\", [CalendarA11y, String])\n], CalendarA11yPipe);\n\nconst MOMENT = new InjectionToken('Moment');\n/**\n * This will use moment to do all date formatting. To use this class:\n *\n * ```typescript\n * import { CalendarDateFormatter, CalendarMomentDateFormatter, MOMENT } from 'angular-calendar';\n * import moment from 'moment';\n *\n * // in your component\n * provide: [{\n * provide: MOMENT, useValue: moment\n * }, {\n * provide: CalendarDateFormatter, useClass: CalendarMomentDateFormatter\n * }]\n *\n * ```\n */\nlet CalendarMomentDateFormatter = class CalendarMomentDateFormatter {\n /**\n * @hidden\n */\n constructor(moment, dateAdapter) {\n this.moment = moment;\n this.dateAdapter = dateAdapter;\n }\n /**\n * The month view header week day labels\n */\n monthViewColumnHeader({ date, locale }) {\n return this.moment(date).locale(locale).format('dddd');\n }\n /**\n * The month view cell day number\n */\n monthViewDayNumber({ date, locale }) {\n return this.moment(date).locale(locale).format('D');\n }\n /**\n * The month view title\n */\n monthViewTitle({ date, locale }) {\n return this.moment(date).locale(locale).format('MMMM YYYY');\n }\n /**\n * The week view header week day labels\n */\n weekViewColumnHeader({ date, locale }) {\n return this.moment(date).locale(locale).format('dddd');\n }\n /**\n * The week view sub header day and month labels\n */\n weekViewColumnSubHeader({ date, locale, }) {\n return this.moment(date).locale(locale).format('MMM D');\n }\n /**\n * The week view title\n */\n weekViewTitle({ date, locale, weekStartsOn, excludeDays, daysInWeek, }) {\n const { viewStart, viewEnd } = getWeekViewPeriod(this.dateAdapter, date, weekStartsOn, excludeDays, daysInWeek);\n const format = (dateToFormat, showYear) => this.moment(dateToFormat)\n .locale(locale)\n .format('MMM D' + (showYear ? ', YYYY' : ''));\n return `${format(viewStart, viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear())} - ${format(viewEnd, true)}`;\n }\n /**\n * The time formatting down the left hand side of the week view\n */\n weekViewHour({ date, locale }) {\n return this.moment(date).locale(locale).format('ha');\n }\n /**\n * The time formatting down the left hand side of the day view\n */\n dayViewHour({ date, locale }) {\n return this.moment(date).locale(locale).format('ha');\n }\n /**\n * The day view title\n */\n dayViewTitle({ date, locale }) {\n return this.moment(date).locale(locale).format('dddd, D MMMM, YYYY');\n }\n};\nCalendarMomentDateFormatter.ɵfac = function CalendarMomentDateFormatter_Factory(t) { return new (t || CalendarMomentDateFormatter)(ɵngcc0.ɵɵinject(MOMENT), ɵngcc0.ɵɵinject(DateAdapter)); };\nCalendarMomentDateFormatter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CalendarMomentDateFormatter, factory: function (t) { return CalendarMomentDateFormatter.ɵfac(t); } });\nCalendarMomentDateFormatter.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [MOMENT,] }] },\n { type: DateAdapter }\n];\nCalendarMomentDateFormatter = __decorate([ __param(0, Inject(MOMENT)),\n __metadata(\"design:paramtypes\", [Object, DateAdapter])\n], CalendarMomentDateFormatter);\n\n/**\n * This will use Intl API to do all date formatting.\n *\n * You will need to include a polyfill for older browsers.\n */\nlet CalendarNativeDateFormatter = class CalendarNativeDateFormatter {\n constructor(dateAdapter) {\n this.dateAdapter = dateAdapter;\n }\n /**\n * The month view header week day labels\n */\n monthViewColumnHeader({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(date);\n }\n /**\n * The month view cell day number\n */\n monthViewDayNumber({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { day: 'numeric' }).format(date);\n }\n /**\n * The month view title\n */\n monthViewTitle({ date, locale }) {\n return new Intl.DateTimeFormat(locale, {\n year: 'numeric',\n month: 'long',\n }).format(date);\n }\n /**\n * The week view header week day labels\n */\n weekViewColumnHeader({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { weekday: 'long' }).format(date);\n }\n /**\n * The week view sub header day and month labels\n */\n weekViewColumnSubHeader({ date, locale, }) {\n return new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'short',\n }).format(date);\n }\n /**\n * The week view title\n */\n weekViewTitle({ date, locale, weekStartsOn, excludeDays, daysInWeek, }) {\n const { viewStart, viewEnd } = getWeekViewPeriod(this.dateAdapter, date, weekStartsOn, excludeDays, daysInWeek);\n const format = (dateToFormat, showYear) => new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'short',\n year: showYear ? 'numeric' : undefined,\n }).format(dateToFormat);\n return `${format(viewStart, viewStart.getUTCFullYear() !== viewEnd.getUTCFullYear())} - ${format(viewEnd, true)}`;\n }\n /**\n * The time formatting down the left hand side of the week view\n */\n weekViewHour({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { hour: 'numeric' }).format(date);\n }\n /**\n * The time formatting down the left hand side of the day view\n */\n dayViewHour({ date, locale }) {\n return new Intl.DateTimeFormat(locale, { hour: 'numeric' }).format(date);\n }\n /**\n * The day view title\n */\n dayViewTitle({ date, locale }) {\n return new Intl.DateTimeFormat(locale, {\n day: 'numeric',\n month: 'long',\n year: 'numeric',\n weekday: 'long',\n }).format(date);\n }\n};\nCalendarNativeDateFormatter.ɵfac = function CalendarNativeDateFormatter_Factory(t) { return new (t || CalendarNativeDateFormatter)(ɵngcc0.ɵɵinject(DateAdapter)); };\nCalendarNativeDateFormatter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CalendarNativeDateFormatter, factory: function (t) { return CalendarNativeDateFormatter.ɵfac(t); } });\nCalendarNativeDateFormatter.ctorParameters = () => [\n { type: DateAdapter }\n];\nCalendarNativeDateFormatter = __decorate([ __metadata(\"design:paramtypes\", [DateAdapter])\n], CalendarNativeDateFormatter);\n\nvar CalendarEventTimesChangedEventType;\n(function (CalendarEventTimesChangedEventType) {\n CalendarEventTimesChangedEventType[\"Drag\"] = \"drag\";\n CalendarEventTimesChangedEventType[\"Drop\"] = \"drop\";\n CalendarEventTimesChangedEventType[\"Resize\"] = \"resize\";\n})(CalendarEventTimesChangedEventType || (CalendarEventTimesChangedEventType = {}));\n\nvar CalendarCommonModule_1;\n/**\n * Import this module to if you're just using a singular view and want to save on bundle size. Example usage:\n *\n * ```typescript\n * import { CalendarCommonModule, CalendarMonthModule } from 'angular-calendar';\n *\n * @NgModule({\n * imports: [\n * CalendarCommonModule.forRoot(),\n * CalendarMonthModule\n * ]\n * })\n * class MyModule {}\n * ```\n *\n */\nlet CalendarCommonModule = CalendarCommonModule_1 = class CalendarCommonModule {\n static forRoot(dateAdapter, config = {}) {\n return {\n ngModule: CalendarCommonModule_1,\n providers: [\n dateAdapter,\n config.eventTitleFormatter || CalendarEventTitleFormatter,\n config.dateFormatter || CalendarDateFormatter,\n config.utils || CalendarUtils,\n config.a11y || CalendarA11y,\n ],\n };\n }\n};\nCalendarCommonModule.ɵfac = function CalendarCommonModule_Factory(t) { return new (t || CalendarCommonModule)(); };\nCalendarCommonModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CalendarCommonModule });\nCalendarCommonModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [I18nPluralPipe], imports: [[CommonModule]] });\n\n/**\n * Shows all events on a given month. Example usage:\n *\n * ```typescript\n * \n * \n * ```\n */\nlet CalendarMonthViewComponent = class CalendarMonthViewComponent {\n /**\n * @hidden\n */\n constructor(cdr, utils, locale, dateAdapter) {\n this.cdr = cdr;\n this.utils = utils;\n this.dateAdapter = dateAdapter;\n /**\n * An array of events to display on view.\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n this.events = [];\n /**\n * An array of day indexes (0 = sunday, 1 = monday etc) that will be hidden on the view\n */\n this.excludeDays = [];\n /**\n * Whether the events list for the day of the `viewDate` option is visible or not\n */\n this.activeDayIsOpen = false;\n /**\n * The placement of the event tooltip\n */\n this.tooltipPlacement = 'auto';\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n this.tooltipAppendToBody = true;\n /**\n * The delay in milliseconds before the tooltip should be displayed. If not provided the tooltip\n * will be displayed immediately.\n */\n this.tooltipDelay = null;\n /**\n * An output that will be called before the view is rendered for the current month.\n * If you add the `cssClass` property to a day in the body it will add that class to the cell element in the template\n */\n this.beforeViewRender = new EventEmitter();\n /**\n * Called when the day cell is clicked\n */\n this.dayClicked = new EventEmitter();\n /**\n * Called when the event title is clicked\n */\n this.eventClicked = new EventEmitter();\n /**\n * Called when a header week day is clicked. Returns ISO day number.\n */\n this.columnHeaderClicked = new EventEmitter();\n /**\n * Called when an event is dragged and dropped\n */\n this.eventTimesChanged = new EventEmitter();\n /**\n * @hidden\n */\n this.trackByRowOffset = (index, offset) => this.view.days\n .slice(offset, this.view.totalDaysVisibleInWeek)\n .map((day) => day.date.toISOString())\n .join('-');\n /**\n * @hidden\n */\n this.trackByDate = (index, day) => day.date.toISOString();\n this.locale = locale;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (this.refresh) {\n this.refreshSubscription = this.refresh.subscribe(() => {\n this.refreshAll();\n this.cdr.markForCheck();\n });\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n const refreshHeader = changes.viewDate || changes.excludeDays || changes.weekendDays;\n const refreshBody = changes.viewDate ||\n changes.events ||\n changes.excludeDays ||\n changes.weekendDays;\n if (refreshHeader) {\n this.refreshHeader();\n }\n if (changes.events) {\n validateEvents(this.events);\n }\n if (refreshBody) {\n this.refreshBody();\n }\n if (refreshHeader || refreshBody) {\n this.emitBeforeViewRender();\n }\n if (changes.activeDayIsOpen ||\n changes.viewDate ||\n changes.events ||\n changes.excludeDays ||\n changes.activeDay) {\n this.checkActiveDayIsOpen();\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n toggleDayHighlight(event, isHighlighted) {\n this.view.days.forEach((day) => {\n if (isHighlighted && day.events.indexOf(event) > -1) {\n day.backgroundColor =\n (event.color && event.color.secondary) || '#D1E8FF';\n }\n else {\n delete day.backgroundColor;\n }\n });\n }\n /**\n * @hidden\n */\n eventDropped(droppedOn, event, draggedFrom) {\n if (droppedOn !== draggedFrom) {\n const year = this.dateAdapter.getYear(droppedOn.date);\n const month = this.dateAdapter.getMonth(droppedOn.date);\n const date = this.dateAdapter.getDate(droppedOn.date);\n const newStart = this.dateAdapter.setDate(this.dateAdapter.setMonth(this.dateAdapter.setYear(event.start, year), month), date);\n let newEnd;\n if (event.end) {\n const secondsDiff = this.dateAdapter.differenceInSeconds(newStart, event.start);\n newEnd = this.dateAdapter.addSeconds(event.end, secondsDiff);\n }\n this.eventTimesChanged.emit({\n event,\n newStart,\n newEnd,\n day: droppedOn,\n type: CalendarEventTimesChangedEventType.Drop,\n });\n }\n }\n refreshHeader() {\n this.columnHeaders = this.utils.getWeekViewHeader({\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n weekendDays: this.weekendDays,\n });\n }\n refreshBody() {\n this.view = this.utils.getMonthView({\n events: this.events,\n viewDate: this.viewDate,\n weekStartsOn: this.weekStartsOn,\n excluded: this.excludeDays,\n weekendDays: this.weekendDays,\n });\n }\n checkActiveDayIsOpen() {\n if (this.activeDayIsOpen === true) {\n const activeDay = this.activeDay || this.viewDate;\n this.openDay = this.view.days.find((day) => this.dateAdapter.isSameDay(day.date, activeDay));\n const index = this.view.days.indexOf(this.openDay);\n this.openRowIndex =\n Math.floor(index / this.view.totalDaysVisibleInWeek) *\n this.view.totalDaysVisibleInWeek;\n }\n else {\n this.openRowIndex = null;\n this.openDay = null;\n }\n }\n refreshAll() {\n this.refreshHeader();\n this.refreshBody();\n this.emitBeforeViewRender();\n this.checkActiveDayIsOpen();\n }\n emitBeforeViewRender() {\n if (this.columnHeaders && this.view) {\n this.beforeViewRender.emit({\n header: this.columnHeaders,\n body: this.view.days,\n period: this.view.period,\n });\n }\n }\n};\nCalendarMonthViewComponent.ɵfac = function CalendarMonthViewComponent_Factory(t) { return new (t || CalendarMonthViewComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(CalendarUtils), ɵngcc0.ɵɵdirectiveInject(LOCALE_ID), ɵngcc0.ɵɵdirectiveInject(DateAdapter)); };\nCalendarMonthViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarMonthViewComponent, selectors: [[\"mwl-calendar-month-view\"]], inputs: { events: \"events\", excludeDays: \"excludeDays\", activeDayIsOpen: \"activeDayIsOpen\", tooltipPlacement: \"tooltipPlacement\", tooltipAppendToBody: \"tooltipAppendToBody\", tooltipDelay: \"tooltipDelay\", locale: \"locale\", viewDate: \"viewDate\", activeDay: \"activeDay\", refresh: \"refresh\", tooltipTemplate: \"tooltipTemplate\", weekStartsOn: \"weekStartsOn\", headerTemplate: \"headerTemplate\", cellTemplate: \"cellTemplate\", openDayEventsTemplate: \"openDayEventsTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\", weekendDays: \"weekendDays\" }, outputs: { beforeViewRender: \"beforeViewRender\", dayClicked: \"dayClicked\", eventClicked: \"eventClicked\", columnHeaderClicked: \"columnHeaderClicked\", eventTimesChanged: \"eventTimesChanged\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 4, vars: 5, consts: [[\"role\", \"grid\", 1, \"cal-month-view\"], [3, \"days\", \"locale\", \"customTemplate\", \"columnHeaderClicked\"], [1, \"cal-days\"], [4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"role\", \"row\", 1, \"cal-cell-row\"], [\"role\", \"gridcell\", \"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 3, \"ngClass\", \"day\", \"openDay\", \"locale\", \"tooltipPlacement\", \"tooltipAppendToBody\", \"tooltipTemplate\", \"tooltipDelay\", \"customTemplate\", \"ngStyle\", \"clickListenerDisabled\", \"mwlClick\", \"mwlKeydownEnter\", \"highlightDay\", \"unhighlightDay\", \"drop\", \"eventClicked\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 3, \"locale\", \"isOpen\", \"events\", \"date\", \"customTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"eventClicked\", \"drop\"], [\"role\", \"gridcell\", \"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 3, \"ngClass\", \"day\", \"openDay\", \"locale\", \"tooltipPlacement\", \"tooltipAppendToBody\", \"tooltipTemplate\", \"tooltipDelay\", \"customTemplate\", \"ngStyle\", \"clickListenerDisabled\", \"mwlClick\", \"mwlKeydownEnter\", \"highlightDay\", \"unhighlightDay\", \"drop\", \"eventClicked\"]], template: function CalendarMonthViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"mwl-calendar-month-view-header\", 1);\n ɵngcc0.ɵɵlistener(\"columnHeaderClicked\", function CalendarMonthViewComponent_Template_mwl_calendar_month_view_header_columnHeaderClicked_1_listener($event) { return ctx.columnHeaderClicked.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(2, \"div\", 2);\n ɵngcc0.ɵɵtemplate(3, CalendarMonthViewComponent_div_3_Template, 5, 13, \"div\", 3);\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"days\", ctx.columnHeaders)(\"locale\", ctx.locale)(\"customTemplate\", ctx.headerTemplate);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.view.rowOffsets)(\"ngForTrackBy\", ctx.trackByRowOffset);\n } }, directives: function () { return [CalendarMonthViewHeaderComponent, ɵngcc1.NgForOf, CalendarMonthCellComponent, ɵngcc2.ɵa, ɵngcc1.NgClass, ɵngcc1.NgStyle, ClickDirective, KeydownEnterDirective, CalendarOpenDayEventsComponent]; }, pipes: function () { return [CalendarA11yPipe, ɵngcc1.SlicePipe]; }, encapsulation: 2 });\nCalendarMonthViewComponent.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: CalendarUtils },\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] },\n { type: DateAdapter }\n];\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], CalendarMonthViewComponent.prototype, \"viewDate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CalendarMonthViewComponent.prototype, \"events\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CalendarMonthViewComponent.prototype, \"excludeDays\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarMonthViewComponent.prototype, \"activeDayIsOpen\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], CalendarMonthViewComponent.prototype, \"activeDay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Subject)\n], CalendarMonthViewComponent.prototype, \"refresh\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarMonthViewComponent.prototype, \"locale\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CalendarMonthViewComponent.prototype, \"tooltipPlacement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarMonthViewComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarMonthViewComponent.prototype, \"tooltipAppendToBody\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarMonthViewComponent.prototype, \"tooltipDelay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarMonthViewComponent.prototype, \"weekStartsOn\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarMonthViewComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarMonthViewComponent.prototype, \"cellTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarMonthViewComponent.prototype, \"openDayEventsTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarMonthViewComponent.prototype, \"eventTitleTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarMonthViewComponent.prototype, \"eventActionsTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CalendarMonthViewComponent.prototype, \"weekendDays\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarMonthViewComponent.prototype, \"beforeViewRender\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarMonthViewComponent.prototype, \"dayClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarMonthViewComponent.prototype, \"eventClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarMonthViewComponent.prototype, \"columnHeaderClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarMonthViewComponent.prototype, \"eventTimesChanged\", void 0);\nCalendarMonthViewComponent = __decorate([ __param(2, Inject(LOCALE_ID)),\n __metadata(\"design:paramtypes\", [ChangeDetectorRef,\n CalendarUtils, String, DateAdapter])\n], CalendarMonthViewComponent);\n\nlet CalendarMonthViewHeaderComponent = class CalendarMonthViewHeaderComponent {\n constructor() {\n this.columnHeaderClicked = new EventEmitter();\n this.trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n }\n};\nCalendarMonthViewHeaderComponent.ɵfac = function CalendarMonthViewHeaderComponent_Factory(t) { return new (t || CalendarMonthViewHeaderComponent)(); };\nCalendarMonthViewHeaderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarMonthViewHeaderComponent, selectors: [[\"mwl-calendar-month-view-header\"]], inputs: { days: \"days\", locale: \"locale\", customTemplate: \"customTemplate\" }, outputs: { columnHeaderClicked: \"columnHeaderClicked\" }, decls: 3, vars: 6, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"role\", \"row\", 1, \"cal-cell-row\", \"cal-header\"], [\"class\", \"cal-cell\", \"tabindex\", \"0\", \"role\", \"columnheader\", 3, \"cal-past\", \"cal-today\", \"cal-future\", \"cal-weekend\", \"ngClass\", \"click\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"tabindex\", \"0\", \"role\", \"columnheader\", 1, \"cal-cell\", 3, \"ngClass\", \"click\"]], template: function CalendarMonthViewHeaderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarMonthViewHeaderComponent_ng_template_0_Template, 2, 2, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarMonthViewHeaderComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction3(2, _c6, ctx.days, ctx.locale, ctx.trackByWeekDayHeaderDate));\n } }, directives: [ɵngcc1.NgForOf, ɵngcc1.NgClass, ɵngcc1.NgTemplateOutlet], pipes: [CalendarDatePipe], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CalendarMonthViewHeaderComponent.prototype, \"days\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarMonthViewHeaderComponent.prototype, \"locale\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarMonthViewHeaderComponent.prototype, \"customTemplate\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarMonthViewHeaderComponent.prototype, \"columnHeaderClicked\", void 0);\n\nlet CalendarMonthCellComponent = class CalendarMonthCellComponent {\n constructor() {\n this.highlightDay = new EventEmitter();\n this.unhighlightDay = new EventEmitter();\n this.eventClicked = new EventEmitter();\n this.trackByEventId = trackByEventId;\n this.validateDrag = isWithinThreshold;\n }\n};\nCalendarMonthCellComponent.ɵfac = function CalendarMonthCellComponent_Factory(t) { return new (t || CalendarMonthCellComponent)(); };\nCalendarMonthCellComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarMonthCellComponent, selectors: [[\"mwl-calendar-month-cell\"]], hostAttrs: [1, \"cal-cell\", \"cal-day-cell\"], hostVars: 18, hostBindings: function CalendarMonthCellComponent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵclassProp(\"cal-past\", ctx.day.isPast)(\"cal-today\", ctx.day.isToday)(\"cal-future\", ctx.day.isFuture)(\"cal-weekend\", ctx.day.isWeekend)(\"cal-in-month\", ctx.day.inMonth)(\"cal-out-month\", !ctx.day.inMonth)(\"cal-has-events\", ctx.day.events.length > 0)(\"cal-open\", ctx.day === ctx.openDay)(\"cal-event-highlight\", !!ctx.day.backgroundColor);\n } }, inputs: { day: \"day\", openDay: \"openDay\", locale: \"locale\", tooltipPlacement: \"tooltipPlacement\", tooltipAppendToBody: \"tooltipAppendToBody\", customTemplate: \"customTemplate\", tooltipTemplate: \"tooltipTemplate\", tooltipDelay: \"tooltipDelay\" }, outputs: { highlightDay: \"highlightDay\", unhighlightDay: \"unhighlightDay\", eventClicked: \"eventClicked\" }, decls: 3, vars: 15, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-cell-top\"], [\"aria-hidden\", \"true\"], [\"class\", \"cal-day-badge\", 4, \"ngIf\"], [1, \"cal-day-number\"], [\"class\", \"cal-events\", 4, \"ngIf\"], [1, \"cal-day-badge\"], [1, \"cal-events\"], [\"class\", \"cal-event\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"ngStyle\", \"ngClass\", \"mwlCalendarTooltip\", \"tooltipPlacement\", \"tooltipEvent\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"tooltipDelay\", \"cal-draggable\", \"dropData\", \"dragAxis\", \"validateDrag\", \"touchStartLongPress\", \"mouseenter\", \"mouseleave\", \"mwlClick\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 1, \"cal-event\", 3, \"ngStyle\", \"ngClass\", \"mwlCalendarTooltip\", \"tooltipPlacement\", \"tooltipEvent\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"tooltipDelay\", \"dropData\", \"dragAxis\", \"validateDrag\", \"touchStartLongPress\", \"mouseenter\", \"mouseleave\", \"mwlClick\"]], template: function CalendarMonthCellComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarMonthCellComponent_ng_template_0_Template, 8, 14, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarMonthCellComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunctionV(2, _c11, [ctx.day, ctx.openDay, ctx.locale, ctx.tooltipPlacement, ctx.highlightDay, ctx.unhighlightDay, ctx.eventClicked, ctx.tooltipTemplate, ctx.tooltipAppendToBody, ctx.tooltipDelay, ctx.trackByEventId, ctx.validateDrag]));\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc2.ɵb, ɵngcc1.NgStyle, ɵngcc1.NgClass, CalendarTooltipDirective, ClickDirective, ɵngcc1.NgTemplateOutlet], pipes: [CalendarA11yPipe, CalendarDatePipe, CalendarEventTitlePipe], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CalendarMonthCellComponent.prototype, \"day\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CalendarMonthCellComponent.prototype, \"openDay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarMonthCellComponent.prototype, \"locale\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CalendarMonthCellComponent.prototype, \"tooltipPlacement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarMonthCellComponent.prototype, \"tooltipAppendToBody\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarMonthCellComponent.prototype, \"customTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarMonthCellComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarMonthCellComponent.prototype, \"tooltipDelay\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CalendarMonthCellComponent.prototype, \"highlightDay\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", EventEmitter)\n], CalendarMonthCellComponent.prototype, \"unhighlightDay\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarMonthCellComponent.prototype, \"eventClicked\", void 0);\n\nconst collapseAnimation = trigger('collapse', [\n state('void', style({\n height: 0,\n overflow: 'hidden',\n 'padding-top': 0,\n 'padding-bottom': 0,\n })),\n state('*', style({\n height: '*',\n overflow: 'hidden',\n 'padding-top': '*',\n 'padding-bottom': '*',\n })),\n transition('* => void', animate('150ms ease-out')),\n transition('void => *', animate('150ms ease-in')),\n]);\nlet CalendarOpenDayEventsComponent = class CalendarOpenDayEventsComponent {\n constructor() {\n this.isOpen = false;\n this.eventClicked = new EventEmitter();\n this.trackByEventId = trackByEventId;\n this.validateDrag = isWithinThreshold;\n }\n};\nCalendarOpenDayEventsComponent.ɵfac = function CalendarOpenDayEventsComponent_Factory(t) { return new (t || CalendarOpenDayEventsComponent)(); };\nCalendarOpenDayEventsComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarOpenDayEventsComponent, selectors: [[\"mwl-calendar-open-day-events\"]], inputs: { isOpen: \"isOpen\", locale: \"locale\", events: \"events\", customTemplate: \"customTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\", date: \"date\" }, outputs: { eventClicked: \"eventClicked\" }, decls: 3, vars: 8, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"class\", \"cal-open-day-events\", \"role\", \"application\", 4, \"ngIf\"], [\"role\", \"application\", 1, \"cal-open-day-events\"], [\"tabindex\", \"-1\", \"role\", \"alert\"], [\"tabindex\", \"0\", \"role\", \"landmark\"], [\"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"ngClass\", \"cal-draggable\", \"dropData\", \"dragAxis\", \"validateDrag\", \"touchStartLongPress\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"ngClass\", \"dropData\", \"dragAxis\", \"validateDrag\", \"touchStartLongPress\"], [1, \"cal-event\", 3, \"ngStyle\"], [\"view\", \"month\", \"tabindex\", \"0\", 3, \"event\", \"customTemplate\", \"mwlClick\", \"mwlKeydownEnter\"], [3, \"event\", \"customTemplate\"]], template: function CalendarOpenDayEventsComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarOpenDayEventsComponent_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarOpenDayEventsComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction5(2, _c15, ctx.events, ctx.eventClicked, ctx.isOpen, ctx.trackByEventId, ctx.validateDrag));\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgForOf, ɵngcc2.ɵb, ɵngcc1.NgClass, ɵngcc1.NgStyle, CalendarEventTitleComponent, ClickDirective, KeydownEnterDirective, CalendarEventActionsComponent, ɵngcc1.NgTemplateOutlet], pipes: [CalendarA11yPipe], encapsulation: 2, data: { animation: [collapseAnimation] } });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarOpenDayEventsComponent.prototype, \"locale\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarOpenDayEventsComponent.prototype, \"isOpen\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CalendarOpenDayEventsComponent.prototype, \"events\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarOpenDayEventsComponent.prototype, \"customTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarOpenDayEventsComponent.prototype, \"eventTitleTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarOpenDayEventsComponent.prototype, \"eventActionsTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], CalendarOpenDayEventsComponent.prototype, \"date\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarOpenDayEventsComponent.prototype, \"eventClicked\", void 0);\n\nlet CalendarMonthModule = class CalendarMonthModule {\n};\nCalendarMonthModule.ɵfac = function CalendarMonthModule_Factory(t) { return new (t || CalendarMonthModule)(); };\nCalendarMonthModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CalendarMonthModule });\nCalendarMonthModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, DragAndDropModule, CalendarCommonModule], DragAndDropModule] });\n\nclass CalendarDragHelper {\n constructor(dragContainerElement, draggableElement) {\n this.dragContainerElement = dragContainerElement;\n this.startPosition = draggableElement.getBoundingClientRect();\n }\n validateDrag({ x, y, snapDraggedEvents, dragAlreadyMoved, transform, }) {\n if (snapDraggedEvents) {\n const newRect = Object.assign({}, this.startPosition, {\n left: this.startPosition.left + transform.x,\n right: this.startPosition.right + transform.x,\n top: this.startPosition.top + transform.y,\n bottom: this.startPosition.bottom + transform.y,\n });\n return ((isWithinThreshold({ x, y }) || dragAlreadyMoved) &&\n isInside(this.dragContainerElement.getBoundingClientRect(), newRect));\n }\n else {\n return isWithinThreshold({ x, y }) || dragAlreadyMoved;\n }\n }\n}\n\nclass CalendarResizeHelper {\n constructor(resizeContainerElement, minWidth) {\n this.resizeContainerElement = resizeContainerElement;\n this.minWidth = minWidth;\n }\n validateResize({ rectangle }) {\n if (this.minWidth &&\n Math.ceil(rectangle.width) < Math.ceil(this.minWidth)) {\n return false;\n }\n return isInside(this.resizeContainerElement.getBoundingClientRect(), rectangle);\n }\n}\n\n/**\n * Shows all events on a given week. Example usage:\n *\n * ```typescript\n * \n * \n * ```\n */\nlet CalendarWeekViewComponent = class CalendarWeekViewComponent {\n /**\n * @hidden\n */\n constructor(cdr, utils, locale, dateAdapter) {\n this.cdr = cdr;\n this.utils = utils;\n this.dateAdapter = dateAdapter;\n /**\n * An array of events to display on view\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n this.events = [];\n /**\n * An array of day indexes (0 = sunday, 1 = monday etc) that will be hidden on the view\n */\n this.excludeDays = [];\n /**\n * The placement of the event tooltip\n */\n this.tooltipPlacement = 'auto';\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n this.tooltipAppendToBody = true;\n /**\n * The delay in milliseconds before the tooltip should be displayed. If not provided the tooltip\n * will be displayed immediately.\n */\n this.tooltipDelay = null;\n /**\n * The precision to display events.\n * `days` will round event start and end dates to the nearest day and `minutes` will not do this rounding\n */\n this.precision = 'days';\n /**\n * Whether to snap events to a grid when dragging\n */\n this.snapDraggedEvents = true;\n /**\n * The number of segments in an hour. Must divide equally into 60.\n */\n this.hourSegments = 2;\n /**\n * The height in pixels of each hour segment\n */\n this.hourSegmentHeight = 30;\n /**\n * The day start hours in 24 hour time. Must be 0-23\n */\n this.dayStartHour = 0;\n /**\n * The day start minutes. Must be 0-59\n */\n this.dayStartMinute = 0;\n /**\n * The day end hours in 24 hour time. Must be 0-23\n */\n this.dayEndHour = 23;\n /**\n * The day end minutes. Must be 0-59\n */\n this.dayEndMinute = 59;\n /**\n * Called when a header week day is clicked. Adding a `cssClass` property on `$event.day` will add that class to the header element\n */\n this.dayHeaderClicked = new EventEmitter();\n /**\n * Called when the event title is clicked\n */\n this.eventClicked = new EventEmitter();\n /**\n * Called when an event is resized or dragged and dropped\n */\n this.eventTimesChanged = new EventEmitter();\n /**\n * An output that will be called before the view is rendered for the current week.\n * If you add the `cssClass` property to a day in the header it will add that class to the cell element in the template\n */\n this.beforeViewRender = new EventEmitter();\n /**\n * Called when an hour segment is clicked\n */\n this.hourSegmentClicked = new EventEmitter();\n /**\n * @hidden\n */\n this.allDayEventResizes = new Map();\n /**\n * @hidden\n */\n this.timeEventResizes = new Map();\n /**\n * @hidden\n */\n this.eventDragEnterByType = {\n allDay: 0,\n time: 0,\n };\n /**\n * @hidden\n */\n this.dragActive = false;\n /**\n * @hidden\n */\n this.dragAlreadyMoved = false;\n /**\n * @hidden\n */\n this.calendarId = Symbol('angular calendar week view id');\n /**\n * @hidden\n */\n this.trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n /**\n * @hidden\n */\n this.trackByHourSegment = trackByHourSegment;\n /**\n * @hidden\n */\n this.trackByHour = trackByHour;\n /**\n * @hidden\n */\n this.trackByWeekAllDayEvent = trackByWeekAllDayEvent;\n /**\n * @hidden\n */\n this.trackByWeekTimeEvent = trackByWeekTimeEvent;\n /**\n * @hidden\n */\n this.trackByHourColumn = (index, column) => column.hours[0] ? column.hours[0].segments[0].date.toISOString() : column;\n /**\n * @hidden\n */\n this.trackById = (index, row) => row.id;\n this.locale = locale;\n }\n /**\n * @hidden\n */\n ngOnInit() {\n if (this.refresh) {\n this.refreshSubscription = this.refresh.subscribe(() => {\n this.refreshAll();\n this.cdr.markForCheck();\n });\n }\n }\n /**\n * @hidden\n */\n ngOnChanges(changes) {\n const refreshHeader = changes.viewDate ||\n changes.excludeDays ||\n changes.weekendDays ||\n changes.daysInWeek ||\n changes.weekStartsOn;\n const refreshBody = changes.viewDate ||\n changes.dayStartHour ||\n changes.dayStartMinute ||\n changes.dayEndHour ||\n changes.dayEndMinute ||\n changes.hourSegments ||\n changes.weekStartsOn ||\n changes.weekendDays ||\n changes.excludeDays ||\n changes.hourSegmentHeight ||\n changes.events ||\n changes.daysInWeek;\n if (refreshHeader) {\n this.refreshHeader();\n }\n if (changes.events) {\n validateEvents(this.events);\n }\n if (refreshBody) {\n this.refreshBody();\n }\n if (refreshHeader || refreshBody) {\n this.emitBeforeViewRender();\n }\n }\n /**\n * @hidden\n */\n ngOnDestroy() {\n if (this.refreshSubscription) {\n this.refreshSubscription.unsubscribe();\n }\n }\n /**\n * @hidden\n */\n timeEventResizeStarted(eventsContainer, timeEvent, resizeEvent) {\n this.timeEventResizes.set(timeEvent.event, resizeEvent);\n this.resizeStarted(eventsContainer);\n }\n /**\n * @hidden\n */\n timeEventResizing(timeEvent, resizeEvent) {\n this.timeEventResizes.set(timeEvent.event, resizeEvent);\n const adjustedEvents = new Map();\n const tempEvents = [...this.events];\n this.timeEventResizes.forEach((lastResizeEvent, event) => {\n const newEventDates = this.getTimeEventResizedDates(event, lastResizeEvent);\n const adjustedEvent = Object.assign(Object.assign({}, event), newEventDates);\n adjustedEvents.set(adjustedEvent, event);\n const eventIndex = tempEvents.indexOf(event);\n tempEvents[eventIndex] = adjustedEvent;\n });\n this.restoreOriginalEvents(tempEvents, adjustedEvents, true);\n }\n /**\n * @hidden\n */\n timeEventResizeEnded(timeEvent) {\n this.view = this.getWeekView(this.events);\n const lastResizeEvent = this.timeEventResizes.get(timeEvent.event);\n if (lastResizeEvent) {\n this.timeEventResizes.delete(timeEvent.event);\n const newEventDates = this.getTimeEventResizedDates(timeEvent.event, lastResizeEvent);\n this.eventTimesChanged.emit({\n newStart: newEventDates.start,\n newEnd: newEventDates.end,\n event: timeEvent.event,\n type: CalendarEventTimesChangedEventType.Resize,\n });\n }\n }\n /**\n * @hidden\n */\n allDayEventResizeStarted(allDayEventsContainer, allDayEvent, resizeEvent) {\n this.allDayEventResizes.set(allDayEvent, {\n originalOffset: allDayEvent.offset,\n originalSpan: allDayEvent.span,\n edge: typeof resizeEvent.edges.left !== 'undefined' ? 'left' : 'right',\n });\n this.resizeStarted(allDayEventsContainer, this.getDayColumnWidth(allDayEventsContainer));\n }\n /**\n * @hidden\n */\n allDayEventResizing(allDayEvent, resizeEvent, dayWidth) {\n const currentResize = this.allDayEventResizes.get(allDayEvent);\n if (typeof resizeEvent.edges.left !== 'undefined') {\n const diff = Math.round(+resizeEvent.edges.left / dayWidth);\n allDayEvent.offset = currentResize.originalOffset + diff;\n allDayEvent.span = currentResize.originalSpan - diff;\n }\n else if (typeof resizeEvent.edges.right !== 'undefined') {\n const diff = Math.round(+resizeEvent.edges.right / dayWidth);\n allDayEvent.span = currentResize.originalSpan + diff;\n }\n }\n /**\n * @hidden\n */\n allDayEventResizeEnded(allDayEvent) {\n const currentResize = this.allDayEventResizes.get(allDayEvent);\n if (currentResize) {\n const allDayEventResizingBeforeStart = currentResize.edge === 'left';\n let daysDiff;\n if (allDayEventResizingBeforeStart) {\n daysDiff = allDayEvent.offset - currentResize.originalOffset;\n }\n else {\n daysDiff = allDayEvent.span - currentResize.originalSpan;\n }\n allDayEvent.offset = currentResize.originalOffset;\n allDayEvent.span = currentResize.originalSpan;\n let newStart = allDayEvent.event.start;\n let newEnd = allDayEvent.event.end || allDayEvent.event.start;\n if (allDayEventResizingBeforeStart) {\n newStart = addDaysWithExclusions(this.dateAdapter, newStart, daysDiff, this.excludeDays);\n }\n else {\n newEnd = addDaysWithExclusions(this.dateAdapter, newEnd, daysDiff, this.excludeDays);\n }\n this.eventTimesChanged.emit({\n newStart,\n newEnd,\n event: allDayEvent.event,\n type: CalendarEventTimesChangedEventType.Resize,\n });\n this.allDayEventResizes.delete(allDayEvent);\n }\n }\n /**\n * @hidden\n */\n getDayColumnWidth(eventRowContainer) {\n return Math.floor(eventRowContainer.offsetWidth / this.days.length);\n }\n /**\n * @hidden\n */\n dateDragEnter(date) {\n this.lastDragEnterDate = date;\n }\n /**\n * @hidden\n */\n eventDropped(dropEvent, date, allDay) {\n if (shouldFireDroppedEvent(dropEvent, date, allDay, this.calendarId) &&\n this.lastDragEnterDate.getTime() === date.getTime() &&\n (!this.snapDraggedEvents ||\n dropEvent.dropData.event !== this.lastDraggedEvent)) {\n this.eventTimesChanged.emit({\n type: CalendarEventTimesChangedEventType.Drop,\n event: dropEvent.dropData.event,\n newStart: date,\n allDay,\n });\n }\n this.lastDraggedEvent = null;\n }\n /**\n * @hidden\n */\n dragEnter(type) {\n this.eventDragEnterByType[type]++;\n }\n /**\n * @hidden\n */\n dragLeave(type) {\n this.eventDragEnterByType[type]--;\n }\n /**\n * @hidden\n */\n dragStarted(eventsContainer, event, dayEvent) {\n this.dayColumnWidth = this.getDayColumnWidth(eventsContainer);\n const dragHelper = new CalendarDragHelper(eventsContainer, event);\n this.validateDrag = ({ x, y, transform }) => this.allDayEventResizes.size === 0 &&\n this.timeEventResizes.size === 0 &&\n dragHelper.validateDrag({\n x,\n y,\n snapDraggedEvents: this.snapDraggedEvents,\n dragAlreadyMoved: this.dragAlreadyMoved,\n transform,\n });\n this.dragActive = true;\n this.dragAlreadyMoved = false;\n this.lastDraggedEvent = null;\n this.eventDragEnterByType = {\n allDay: 0,\n time: 0,\n };\n if (!this.snapDraggedEvents && dayEvent) {\n this.view.hourColumns.forEach((column) => {\n const linkedEvent = column.events.find((columnEvent) => columnEvent.event === dayEvent.event && columnEvent !== dayEvent);\n // hide any linked events while dragging\n if (linkedEvent) {\n linkedEvent.width = 0;\n linkedEvent.height = 0;\n }\n });\n }\n this.cdr.markForCheck();\n }\n /**\n * @hidden\n */\n dragMove(dayEvent, dragEvent) {\n const newEventTimes = this.getDragMovedEventTimes(dayEvent, dragEvent, this.dayColumnWidth, true);\n const originalEvent = dayEvent.event;\n const adjustedEvent = Object.assign(Object.assign({}, originalEvent), newEventTimes);\n const tempEvents = this.events.map((event) => {\n if (event === originalEvent) {\n return adjustedEvent;\n }\n return event;\n });\n this.restoreOriginalEvents(tempEvents, new Map([[adjustedEvent, originalEvent]]), this.snapDraggedEvents);\n this.dragAlreadyMoved = true;\n }\n /**\n * @hidden\n */\n allDayEventDragMove() {\n this.dragAlreadyMoved = true;\n }\n /**\n * @hidden\n */\n dragEnded(weekEvent, dragEndEvent, dayWidth, useY = false) {\n this.view = this.getWeekView(this.events);\n this.dragActive = false;\n this.validateDrag = null;\n const { start, end } = this.getDragMovedEventTimes(weekEvent, dragEndEvent, dayWidth, useY);\n if ((this.snapDraggedEvents ||\n this.eventDragEnterByType[useY ? 'time' : 'allDay'] > 0) &&\n isDraggedWithinPeriod(start, end, this.view.period)) {\n this.lastDraggedEvent = weekEvent.event;\n this.eventTimesChanged.emit({\n newStart: start,\n newEnd: end,\n event: weekEvent.event,\n type: CalendarEventTimesChangedEventType.Drag,\n allDay: !useY,\n });\n }\n }\n refreshHeader() {\n this.days = this.utils.getWeekViewHeader(Object.assign({ viewDate: this.viewDate, weekStartsOn: this.weekStartsOn, excluded: this.excludeDays, weekendDays: this.weekendDays }, getWeekViewPeriod(this.dateAdapter, this.viewDate, this.weekStartsOn, this.excludeDays, this.daysInWeek)));\n }\n refreshBody() {\n this.view = this.getWeekView(this.events);\n }\n refreshAll() {\n this.refreshHeader();\n this.refreshBody();\n this.emitBeforeViewRender();\n }\n emitBeforeViewRender() {\n if (this.days && this.view) {\n this.beforeViewRender.emit(Object.assign({ header: this.days }, this.view));\n }\n }\n getWeekView(events) {\n return this.utils.getWeekView(Object.assign({ events, viewDate: this.viewDate, weekStartsOn: this.weekStartsOn, excluded: this.excludeDays, precision: this.precision, absolutePositionedEvents: true, hourSegments: this.hourSegments, dayStart: {\n hour: this.dayStartHour,\n minute: this.dayStartMinute,\n }, dayEnd: {\n hour: this.dayEndHour,\n minute: this.dayEndMinute,\n }, segmentHeight: this.hourSegmentHeight, weekendDays: this.weekendDays }, getWeekViewPeriod(this.dateAdapter, this.viewDate, this.weekStartsOn, this.excludeDays, this.daysInWeek)));\n }\n getDragMovedEventTimes(weekEvent, dragEndEvent, dayWidth, useY) {\n const daysDragged = roundToNearest(dragEndEvent.x, dayWidth) / dayWidth;\n const minutesMoved = useY\n ? getMinutesMoved(dragEndEvent.y, this.hourSegments, this.hourSegmentHeight, this.eventSnapSize)\n : 0;\n const start = this.dateAdapter.addMinutes(addDaysWithExclusions(this.dateAdapter, weekEvent.event.start, daysDragged, this.excludeDays), minutesMoved);\n let end;\n if (weekEvent.event.end) {\n end = this.dateAdapter.addMinutes(addDaysWithExclusions(this.dateAdapter, weekEvent.event.end, daysDragged, this.excludeDays), minutesMoved);\n }\n return { start, end };\n }\n restoreOriginalEvents(tempEvents, adjustedEvents, snapDraggedEvents = true) {\n const previousView = this.view;\n if (snapDraggedEvents) {\n this.view = this.getWeekView(tempEvents);\n }\n const adjustedEventsArray = tempEvents.filter((event) => adjustedEvents.has(event));\n this.view.hourColumns.forEach((column, columnIndex) => {\n previousView.hourColumns[columnIndex].hours.forEach((hour, hourIndex) => {\n hour.segments.forEach((segment, segmentIndex) => {\n column.hours[hourIndex].segments[segmentIndex].cssClass =\n segment.cssClass;\n });\n });\n adjustedEventsArray.forEach((adjustedEvent) => {\n const originalEvent = adjustedEvents.get(adjustedEvent);\n const existingColumnEvent = column.events.find((columnEvent) => columnEvent.event ===\n (snapDraggedEvents ? adjustedEvent : originalEvent));\n if (existingColumnEvent) {\n // restore the original event so trackBy kicks in and the dom isn't changed\n existingColumnEvent.event = originalEvent;\n existingColumnEvent['tempEvent'] = adjustedEvent;\n if (!snapDraggedEvents) {\n existingColumnEvent.height = 0;\n existingColumnEvent.width = 0;\n }\n }\n else {\n // add a dummy event to the drop so if the event was removed from the original column the drag doesn't end early\n const event = {\n event: originalEvent,\n left: 0,\n top: 0,\n height: 0,\n width: 0,\n startsBeforeDay: false,\n endsAfterDay: false,\n tempEvent: adjustedEvent,\n };\n column.events.push(event);\n }\n });\n });\n adjustedEvents.clear();\n }\n getTimeEventResizedDates(calendarEvent, resizeEvent) {\n const minimumEventHeight = getMinimumEventHeightInMinutes(this.hourSegments, this.hourSegmentHeight);\n const newEventDates = {\n start: calendarEvent.start,\n end: getDefaultEventEnd(this.dateAdapter, calendarEvent, minimumEventHeight),\n };\n const { end } = calendarEvent, eventWithoutEnd = __rest(calendarEvent, [\"end\"]);\n const smallestResizes = {\n start: this.dateAdapter.addMinutes(newEventDates.end, minimumEventHeight * -1),\n end: getDefaultEventEnd(this.dateAdapter, eventWithoutEnd, minimumEventHeight),\n };\n if (typeof resizeEvent.edges.left !== 'undefined') {\n const daysDiff = Math.round(+resizeEvent.edges.left / this.dayColumnWidth);\n const newStart = addDaysWithExclusions(this.dateAdapter, newEventDates.start, daysDiff, this.excludeDays);\n if (newStart < smallestResizes.start) {\n newEventDates.start = newStart;\n }\n else {\n newEventDates.start = smallestResizes.start;\n }\n }\n else if (typeof resizeEvent.edges.right !== 'undefined') {\n const daysDiff = Math.round(+resizeEvent.edges.right / this.dayColumnWidth);\n const newEnd = addDaysWithExclusions(this.dateAdapter, newEventDates.end, daysDiff, this.excludeDays);\n if (newEnd > smallestResizes.end) {\n newEventDates.end = newEnd;\n }\n else {\n newEventDates.end = smallestResizes.end;\n }\n }\n if (typeof resizeEvent.edges.top !== 'undefined') {\n const minutesMoved = getMinutesMoved(resizeEvent.edges.top, this.hourSegments, this.hourSegmentHeight, this.eventSnapSize);\n const newStart = this.dateAdapter.addMinutes(newEventDates.start, minutesMoved);\n if (newStart < smallestResizes.start) {\n newEventDates.start = newStart;\n }\n else {\n newEventDates.start = smallestResizes.start;\n }\n }\n else if (typeof resizeEvent.edges.bottom !== 'undefined') {\n const minutesMoved = getMinutesMoved(resizeEvent.edges.bottom, this.hourSegments, this.hourSegmentHeight, this.eventSnapSize);\n const newEnd = this.dateAdapter.addMinutes(newEventDates.end, minutesMoved);\n if (newEnd > smallestResizes.end) {\n newEventDates.end = newEnd;\n }\n else {\n newEventDates.end = smallestResizes.end;\n }\n }\n return newEventDates;\n }\n resizeStarted(eventsContainer, minWidth) {\n this.dayColumnWidth = this.getDayColumnWidth(eventsContainer);\n const resizeHelper = new CalendarResizeHelper(eventsContainer, minWidth);\n this.validateResize = ({ rectangle }) => resizeHelper.validateResize({ rectangle });\n this.cdr.markForCheck();\n }\n};\nCalendarWeekViewComponent.ɵfac = function CalendarWeekViewComponent_Factory(t) { return new (t || CalendarWeekViewComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(CalendarUtils), ɵngcc0.ɵɵdirectiveInject(LOCALE_ID), ɵngcc0.ɵɵdirectiveInject(DateAdapter)); };\nCalendarWeekViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarWeekViewComponent, selectors: [[\"mwl-calendar-week-view\"]], inputs: { events: \"events\", excludeDays: \"excludeDays\", tooltipPlacement: \"tooltipPlacement\", tooltipAppendToBody: \"tooltipAppendToBody\", tooltipDelay: \"tooltipDelay\", precision: \"precision\", snapDraggedEvents: \"snapDraggedEvents\", hourSegments: \"hourSegments\", hourSegmentHeight: \"hourSegmentHeight\", dayStartHour: \"dayStartHour\", dayStartMinute: \"dayStartMinute\", dayEndHour: \"dayEndHour\", dayEndMinute: \"dayEndMinute\", locale: \"locale\", viewDate: \"viewDate\", refresh: \"refresh\", tooltipTemplate: \"tooltipTemplate\", weekStartsOn: \"weekStartsOn\", headerTemplate: \"headerTemplate\", eventTemplate: \"eventTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\", weekendDays: \"weekendDays\", hourSegmentTemplate: \"hourSegmentTemplate\", eventSnapSize: \"eventSnapSize\", allDayEventsLabelTemplate: \"allDayEventsLabelTemplate\", daysInWeek: \"daysInWeek\", currentTimeMarkerTemplate: \"currentTimeMarkerTemplate\" }, outputs: { dayHeaderClicked: \"dayHeaderClicked\", eventClicked: \"eventClicked\", eventTimesChanged: \"eventTimesChanged\", beforeViewRender: \"beforeViewRender\", hourSegmentClicked: \"hourSegmentClicked\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 8, vars: 9, consts: [[\"role\", \"grid\", 1, \"cal-week-view\"], [3, \"days\", \"locale\", \"customTemplate\", \"dayHeaderClicked\", \"eventDropped\", \"dragEnter\"], [\"class\", \"cal-all-day-events\", \"mwlDroppable\", \"\", 3, \"dragEnter\", \"dragLeave\", 4, \"ngIf\"], [\"mwlDroppable\", \"\", 1, \"cal-time-events\", 3, \"dragEnter\", \"dragLeave\"], [\"class\", \"cal-time-label-column\", 4, \"ngIf\"], [1, \"cal-day-columns\"], [\"dayColumns\", \"\"], [\"class\", \"cal-day-column\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", 1, \"cal-all-day-events\", 3, \"dragEnter\", \"dragLeave\"], [\"allDayEventsContainer\", \"\"], [1, \"cal-time-label-column\", 3, \"ngTemplateOutlet\"], [\"class\", \"cal-day-column\", \"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 3, \"drop\", \"dragEnter\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"class\", \"cal-events-row\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", 1, \"cal-day-column\", 3, \"drop\", \"dragEnter\"], [1, \"cal-events-row\"], [\"eventRowContainer\", \"\"], [\"class\", \"cal-event-container\", \"mwlResizable\", \"\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"cal-draggable\", \"cal-starts-within-week\", \"cal-ends-within-week\", \"ngClass\", \"width\", \"marginLeft\", \"resizeSnapGrid\", \"validateResize\", \"dropData\", \"dragAxis\", \"dragSnapGrid\", \"validateDrag\", \"touchStartLongPress\", \"resizeStart\", \"resizing\", \"resizeEnd\", \"dragStart\", \"dragging\", \"dragEnd\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlResizable\", \"\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 1, \"cal-event-container\", 3, \"ngClass\", \"resizeSnapGrid\", \"validateResize\", \"dropData\", \"dragAxis\", \"dragSnapGrid\", \"validateDrag\", \"touchStartLongPress\", \"resizeStart\", \"resizing\", \"resizeEnd\", \"dragStart\", \"dragging\", \"dragEnd\"], [\"event\", \"\"], [\"class\", \"cal-resize-handle cal-resize-handle-before-start\", \"mwlResizeHandle\", \"\", 3, \"resizeEdges\", 4, \"ngIf\"], [3, \"locale\", \"weekEvent\", \"tooltipPlacement\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"tooltipDelay\", \"customTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"daysInWeek\", \"eventClicked\"], [\"class\", \"cal-resize-handle cal-resize-handle-after-end\", \"mwlResizeHandle\", \"\", 3, \"resizeEdges\", 4, \"ngIf\"], [\"mwlResizeHandle\", \"\", 1, \"cal-resize-handle\", \"cal-resize-handle-before-start\", 3, \"resizeEdges\"], [\"mwlResizeHandle\", \"\", 1, \"cal-resize-handle\", \"cal-resize-handle-after-end\", 3, \"resizeEdges\"], [1, \"cal-time-label-column\"], [\"class\", \"cal-hour\", 3, \"cal-hour-odd\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [1, \"cal-hour\"], [3, \"height\", \"segment\", \"segmentHeight\", \"locale\", \"customTemplate\", \"isTimeLabel\", \"daysInWeek\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [3, \"segment\", \"segmentHeight\", \"locale\", \"customTemplate\", \"isTimeLabel\", \"daysInWeek\"], [1, \"cal-day-column\"], [3, \"columnDate\", \"dayStartHour\", \"dayStartMinute\", \"dayEndHour\", \"dayEndMinute\", \"hourSegments\", \"hourSegmentHeight\", \"customTemplate\"], [1, \"cal-events-container\"], [\"class\", \"cal-event-container\", \"mwlResizable\", \"\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"cal-draggable\", \"cal-starts-within-day\", \"cal-ends-within-day\", \"ngClass\", \"hidden\", \"top\", \"height\", \"left\", \"width\", \"resizeSnapGrid\", \"validateResize\", \"allowNegativeResizes\", \"dropData\", \"dragAxis\", \"dragSnapGrid\", \"touchStartLongPress\", \"ghostDragEnabled\", \"ghostElementTemplate\", \"validateDrag\", \"resizeStart\", \"resizing\", \"resizeEnd\", \"dragStart\", \"dragging\", \"dragEnd\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlResizable\", \"\", \"mwlDraggable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 1, \"cal-event-container\", 3, \"ngClass\", \"hidden\", \"resizeSnapGrid\", \"validateResize\", \"allowNegativeResizes\", \"dropData\", \"dragAxis\", \"dragSnapGrid\", \"touchStartLongPress\", \"ghostDragEnabled\", \"ghostElementTemplate\", \"validateDrag\", \"resizeStart\", \"resizing\", \"resizeEnd\", \"dragStart\", \"dragging\", \"dragEnd\"], [3, \"ngTemplateOutlet\"], [\"weekEventTemplate\", \"\"], [3, \"locale\", \"weekEvent\", \"tooltipPlacement\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"tooltipDisabled\", \"tooltipDelay\", \"customTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"column\", \"daysInWeek\", \"eventClicked\"], [\"mwlDroppable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"height\", \"segment\", \"segmentHeight\", \"locale\", \"customTemplate\", \"daysInWeek\", \"clickListenerDisabled\", \"dragOverClass\", \"isTimeLabel\", \"mwlClick\", \"drop\", \"dragEnter\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", \"dragActiveClass\", \"cal-drag-active\", 3, \"segment\", \"segmentHeight\", \"locale\", \"customTemplate\", \"daysInWeek\", \"clickListenerDisabled\", \"dragOverClass\", \"isTimeLabel\", \"mwlClick\", \"drop\", \"dragEnter\"]], template: function CalendarWeekViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"mwl-calendar-week-view-header\", 1);\n ɵngcc0.ɵɵlistener(\"dayHeaderClicked\", function CalendarWeekViewComponent_Template_mwl_calendar_week_view_header_dayHeaderClicked_1_listener($event) { return ctx.dayHeaderClicked.emit($event); })(\"eventDropped\", function CalendarWeekViewComponent_Template_mwl_calendar_week_view_header_eventDropped_1_listener($event) { return ctx.eventDropped({ dropData: $event }, $event.newStart, true); })(\"dragEnter\", function CalendarWeekViewComponent_Template_mwl_calendar_week_view_header_dragEnter_1_listener($event) { return ctx.dateDragEnter($event.date); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewComponent_div_2_Template, 6, 5, \"div\", 2);\n ɵngcc0.ɵɵelementStart(3, \"div\", 3);\n ɵngcc0.ɵɵlistener(\"dragEnter\", function CalendarWeekViewComponent_Template_div_dragEnter_3_listener() { return ctx.dragEnter(\"time\"); })(\"dragLeave\", function CalendarWeekViewComponent_Template_div_dragLeave_3_listener() { return ctx.dragLeave(\"time\"); });\n ɵngcc0.ɵɵtemplate(4, CalendarWeekViewComponent_div_4_Template, 2, 2, \"div\", 4);\n ɵngcc0.ɵɵelementStart(5, \"div\", 5, 6);\n ɵngcc0.ɵɵtemplate(7, CalendarWeekViewComponent_div_7_Template, 5, 12, \"div\", 7);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"days\", ctx.days)(\"locale\", ctx.locale)(\"customTemplate\", ctx.headerTemplate);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.view.allDayEventRows.length > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.view.hourColumns.length > 0 && ctx.daysInWeek !== 1);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"cal-resize-active\", ctx.timeEventResizes.size > 0);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.view.hourColumns)(\"ngForTrackBy\", ctx.trackByHourColumn);\n } }, directives: function () { return [CalendarWeekViewHeaderComponent, ɵngcc1.NgIf, ɵngcc2.ɵa, ɵngcc1.NgTemplateOutlet, ɵngcc1.NgForOf, ɵngcc3.ResizableDirective, ɵngcc2.ɵb, ɵngcc1.NgClass, ɵngcc3.ResizeHandleDirective, CalendarWeekViewEventComponent, CalendarWeekViewHourSegmentComponent, CalendarWeekViewCurrentTimeMarkerComponent, ClickDirective]; }, encapsulation: 2 });\nCalendarWeekViewComponent.ctorParameters = () => [\n { type: ChangeDetectorRef },\n { type: CalendarUtils },\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] },\n { type: DateAdapter }\n];\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], CalendarWeekViewComponent.prototype, \"viewDate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CalendarWeekViewComponent.prototype, \"events\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CalendarWeekViewComponent.prototype, \"excludeDays\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Subject)\n], CalendarWeekViewComponent.prototype, \"refresh\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarWeekViewComponent.prototype, \"locale\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CalendarWeekViewComponent.prototype, \"tooltipPlacement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarWeekViewComponent.prototype, \"tooltipAppendToBody\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewComponent.prototype, \"tooltipDelay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewComponent.prototype, \"weekStartsOn\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewComponent.prototype, \"headerTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewComponent.prototype, \"eventTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewComponent.prototype, \"eventTitleTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewComponent.prototype, \"eventActionsTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarWeekViewComponent.prototype, \"precision\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CalendarWeekViewComponent.prototype, \"weekendDays\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarWeekViewComponent.prototype, \"snapDraggedEvents\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewComponent.prototype, \"hourSegments\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewComponent.prototype, \"hourSegmentHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewComponent.prototype, \"dayStartHour\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewComponent.prototype, \"dayStartMinute\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewComponent.prototype, \"dayEndHour\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewComponent.prototype, \"dayEndMinute\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewComponent.prototype, \"hourSegmentTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewComponent.prototype, \"eventSnapSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewComponent.prototype, \"allDayEventsLabelTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewComponent.prototype, \"daysInWeek\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewComponent.prototype, \"currentTimeMarkerTemplate\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarWeekViewComponent.prototype, \"dayHeaderClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarWeekViewComponent.prototype, \"eventClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarWeekViewComponent.prototype, \"eventTimesChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarWeekViewComponent.prototype, \"beforeViewRender\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarWeekViewComponent.prototype, \"hourSegmentClicked\", void 0);\nCalendarWeekViewComponent = __decorate([ __param(2, Inject(LOCALE_ID)),\n __metadata(\"design:paramtypes\", [ChangeDetectorRef,\n CalendarUtils, String, DateAdapter])\n], CalendarWeekViewComponent);\n\nlet CalendarWeekViewHeaderComponent = class CalendarWeekViewHeaderComponent {\n constructor() {\n this.dayHeaderClicked = new EventEmitter();\n this.eventDropped = new EventEmitter();\n this.dragEnter = new EventEmitter();\n this.trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;\n }\n};\nCalendarWeekViewHeaderComponent.ɵfac = function CalendarWeekViewHeaderComponent_Factory(t) { return new (t || CalendarWeekViewHeaderComponent)(); };\nCalendarWeekViewHeaderComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarWeekViewHeaderComponent, selectors: [[\"mwl-calendar-week-view-header\"]], inputs: { days: \"days\", locale: \"locale\", customTemplate: \"customTemplate\" }, outputs: { dayHeaderClicked: \"dayHeaderClicked\", eventDropped: \"eventDropped\", dragEnter: \"dragEnter\" }, decls: 3, vars: 9, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"role\", \"row\", 1, \"cal-day-headers\"], [\"class\", \"cal-header\", \"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", \"tabindex\", \"0\", \"role\", \"columnheader\", 3, \"cal-past\", \"cal-today\", \"cal-future\", \"cal-weekend\", \"ngClass\", \"mwlClick\", \"drop\", \"dragEnter\", 4, \"ngFor\", \"ngForOf\", \"ngForTrackBy\"], [\"mwlDroppable\", \"\", \"dragOverClass\", \"cal-drag-over\", \"tabindex\", \"0\", \"role\", \"columnheader\", 1, \"cal-header\", 3, \"ngClass\", \"mwlClick\", \"drop\", \"dragEnter\"]], template: function CalendarWeekViewHeaderComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarWeekViewHeaderComponent_ng_template_0_Template, 2, 2, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewHeaderComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction6(2, _c24, ctx.days, ctx.locale, ctx.dayHeaderClicked, ctx.eventDropped, ctx.dragEnter, ctx.trackByWeekDayHeaderDate));\n } }, directives: [ɵngcc1.NgForOf, ɵngcc2.ɵa, ɵngcc1.NgClass, ClickDirective, ɵngcc1.NgTemplateOutlet], pipes: [CalendarDatePipe], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CalendarWeekViewHeaderComponent.prototype, \"days\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarWeekViewHeaderComponent.prototype, \"locale\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewHeaderComponent.prototype, \"customTemplate\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarWeekViewHeaderComponent.prototype, \"dayHeaderClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarWeekViewHeaderComponent.prototype, \"eventDropped\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarWeekViewHeaderComponent.prototype, \"dragEnter\", void 0);\n\nlet CalendarWeekViewEventComponent = class CalendarWeekViewEventComponent {\n constructor() {\n this.eventClicked = new EventEmitter();\n }\n};\nCalendarWeekViewEventComponent.ɵfac = function CalendarWeekViewEventComponent_Factory(t) { return new (t || CalendarWeekViewEventComponent)(); };\nCalendarWeekViewEventComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarWeekViewEventComponent, selectors: [[\"mwl-calendar-week-view-event\"]], inputs: { locale: \"locale\", weekEvent: \"weekEvent\", tooltipPlacement: \"tooltipPlacement\", tooltipAppendToBody: \"tooltipAppendToBody\", tooltipDisabled: \"tooltipDisabled\", tooltipDelay: \"tooltipDelay\", customTemplate: \"customTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\", tooltipTemplate: \"tooltipTemplate\", column: \"column\", daysInWeek: \"daysInWeek\" }, outputs: { eventClicked: \"eventClicked\" }, decls: 3, vars: 12, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"tabindex\", \"0\", \"role\", \"application\", 1, \"cal-event\", 3, \"ngStyle\", \"mwlCalendarTooltip\", \"tooltipPlacement\", \"tooltipEvent\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"tooltipDelay\", \"mwlClick\", \"mwlKeydownEnter\"], [3, \"event\", \"customTemplate\"], [3, \"event\", \"customTemplate\", \"view\"]], template: function CalendarWeekViewEventComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarWeekViewEventComponent_ng_template_0_Template, 6, 26, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewEventComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunctionV(2, _c26, [ctx.weekEvent, ctx.tooltipPlacement, ctx.eventClicked, ctx.tooltipTemplate, ctx.tooltipAppendToBody, ctx.tooltipDisabled, ctx.tooltipDelay, ctx.column, ctx.daysInWeek]));\n } }, directives: [ɵngcc1.NgStyle, CalendarTooltipDirective, ClickDirective, KeydownEnterDirective, CalendarEventActionsComponent, CalendarEventTitleComponent, ɵngcc1.NgTemplateOutlet], pipes: [CalendarEventTitlePipe, CalendarA11yPipe], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarWeekViewEventComponent.prototype, \"locale\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CalendarWeekViewEventComponent.prototype, \"weekEvent\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CalendarWeekViewEventComponent.prototype, \"tooltipPlacement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarWeekViewEventComponent.prototype, \"tooltipAppendToBody\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarWeekViewEventComponent.prototype, \"tooltipDisabled\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewEventComponent.prototype, \"tooltipDelay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewEventComponent.prototype, \"customTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewEventComponent.prototype, \"eventTitleTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewEventComponent.prototype, \"eventActionsTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewEventComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CalendarWeekViewEventComponent.prototype, \"column\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewEventComponent.prototype, \"daysInWeek\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarWeekViewEventComponent.prototype, \"eventClicked\", void 0);\n\nlet CalendarWeekViewHourSegmentComponent = class CalendarWeekViewHourSegmentComponent {\n};\nCalendarWeekViewHourSegmentComponent.ɵfac = function CalendarWeekViewHourSegmentComponent_Factory(t) { return new (t || CalendarWeekViewHourSegmentComponent)(); };\nCalendarWeekViewHourSegmentComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarWeekViewHourSegmentComponent, selectors: [[\"mwl-calendar-week-view-hour-segment\"]], inputs: { segment: \"segment\", segmentHeight: \"segmentHeight\", locale: \"locale\", isTimeLabel: \"isTimeLabel\", daysInWeek: \"daysInWeek\", customTemplate: \"customTemplate\" }, decls: 3, vars: 8, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"cal-hour-segment\", 3, \"ngClass\"], [\"class\", \"cal-time\", 4, \"ngIf\"], [1, \"cal-time\"]], template: function CalendarWeekViewHourSegmentComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarWeekViewHourSegmentComponent_ng_template_0_Template, 3, 13, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewHourSegmentComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction5(2, _c27, ctx.segment, ctx.locale, ctx.segmentHeight, ctx.isTimeLabel, ctx.daysInWeek));\n } }, directives: [ɵngcc1.NgClass, ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], pipes: [CalendarA11yPipe, CalendarDatePipe], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CalendarWeekViewHourSegmentComponent.prototype, \"segment\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewHourSegmentComponent.prototype, \"segmentHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarWeekViewHourSegmentComponent.prototype, \"locale\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarWeekViewHourSegmentComponent.prototype, \"isTimeLabel\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewHourSegmentComponent.prototype, \"daysInWeek\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewHourSegmentComponent.prototype, \"customTemplate\", void 0);\n\nlet CalendarWeekViewCurrentTimeMarkerComponent = class CalendarWeekViewCurrentTimeMarkerComponent {\n constructor(dateAdapter, zone) {\n this.dateAdapter = dateAdapter;\n this.zone = zone;\n this.columnDate$ = new BehaviorSubject(this.columnDate);\n this.marker$ = this.zone.onStable.pipe(switchMap(() => interval(60 * 1000)), startWith(0), switchMapTo(this.columnDate$), map((columnDate) => {\n const startOfDay = this.dateAdapter.setMinutes(this.dateAdapter.setHours(columnDate, this.dayStartHour), this.dayStartMinute);\n const endOfDay = this.dateAdapter.setMinutes(this.dateAdapter.setHours(columnDate, this.dayEndHour), this.dayEndMinute);\n const hourHeightModifier = (this.hourSegments * this.hourSegmentHeight) / 60;\n const now = new Date();\n return {\n isVisible: this.dateAdapter.isSameDay(columnDate, now) &&\n now >= startOfDay &&\n now <= endOfDay,\n top: this.dateAdapter.differenceInMinutes(now, startOfDay) *\n hourHeightModifier,\n };\n }));\n }\n ngOnChanges(changes) {\n if (changes.columnDate) {\n this.columnDate$.next(changes.columnDate.currentValue);\n }\n }\n};\nCalendarWeekViewCurrentTimeMarkerComponent.ɵfac = function CalendarWeekViewCurrentTimeMarkerComponent_Factory(t) { return new (t || CalendarWeekViewCurrentTimeMarkerComponent)(ɵngcc0.ɵɵdirectiveInject(DateAdapter), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nCalendarWeekViewCurrentTimeMarkerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarWeekViewCurrentTimeMarkerComponent, selectors: [[\"mwl-calendar-week-view-current-time-marker\"]], inputs: { columnDate: \"columnDate\", dayStartHour: \"dayStartHour\", dayStartMinute: \"dayStartMinute\", dayEndHour: \"dayEndHour\", dayEndMinute: \"dayEndMinute\", hourSegments: \"hourSegments\", hourSegmentHeight: \"hourSegmentHeight\", customTemplate: \"customTemplate\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 5, vars: 14, consts: [[\"defaultTemplate\", \"\"], [3, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [\"class\", \"cal-current-time-marker\", 3, \"top\", 4, \"ngIf\"], [1, \"cal-current-time-marker\"]], template: function CalendarWeekViewCurrentTimeMarkerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, CalendarWeekViewCurrentTimeMarkerComponent_ng_template_0_Template, 1, 1, \"ng-template\", null, 0, ɵngcc0.ɵɵtemplateRefExtractor);\n ɵngcc0.ɵɵtemplate(2, CalendarWeekViewCurrentTimeMarkerComponent_ng_template_2_Template, 0, 0, \"ng-template\", 1);\n ɵngcc0.ɵɵpipe(3, \"async\");\n ɵngcc0.ɵɵpipe(4, \"async\");\n } if (rf & 2) {\n const _r0 = ɵngcc0.ɵɵreference(1);\n let tmp_1_0;\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"ngTemplateOutlet\", ctx.customTemplate || _r0)(\"ngTemplateOutletContext\", ɵngcc0.ɵɵpureFunction7(6, _c28, ctx.columnDate, ctx.dayStartHour, ctx.dayStartMinute, ctx.dayEndHour, ctx.dayEndMinute, (tmp_1_0 = ɵngcc0.ɵɵpipeBind1(3, 2, ctx.marker$)) == null ? null : tmp_1_0.isVisible, (tmp_1_0 = ɵngcc0.ɵɵpipeBind1(4, 4, ctx.marker$)) == null ? null : tmp_1_0.top));\n } }, directives: [ɵngcc1.NgIf, ɵngcc1.NgTemplateOutlet], pipes: [ɵngcc1.AsyncPipe], encapsulation: 2 });\nCalendarWeekViewCurrentTimeMarkerComponent.ctorParameters = () => [\n { type: DateAdapter },\n { type: NgZone }\n];\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], CalendarWeekViewCurrentTimeMarkerComponent.prototype, \"columnDate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewCurrentTimeMarkerComponent.prototype, \"dayStartHour\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewCurrentTimeMarkerComponent.prototype, \"dayStartMinute\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewCurrentTimeMarkerComponent.prototype, \"dayEndHour\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewCurrentTimeMarkerComponent.prototype, \"dayEndMinute\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewCurrentTimeMarkerComponent.prototype, \"hourSegments\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarWeekViewCurrentTimeMarkerComponent.prototype, \"hourSegmentHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarWeekViewCurrentTimeMarkerComponent.prototype, \"customTemplate\", void 0);\nCalendarWeekViewCurrentTimeMarkerComponent = __decorate([ __metadata(\"design:paramtypes\", [DateAdapter, NgZone])\n], CalendarWeekViewCurrentTimeMarkerComponent);\n\nlet CalendarWeekModule = class CalendarWeekModule {\n};\nCalendarWeekModule.ɵfac = function CalendarWeekModule_Factory(t) { return new (t || CalendarWeekModule)(); };\nCalendarWeekModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CalendarWeekModule });\nCalendarWeekModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule,\n ResizableModule,\n DragAndDropModule,\n CalendarCommonModule,\n ], ResizableModule,\n DragAndDropModule] });\n\n/**\n * Shows all events on a given day. Example usage:\n *\n * ```typescript\n * \n * \n * ```\n */\nlet CalendarDayViewComponent = class CalendarDayViewComponent {\n constructor() {\n /**\n * An array of events to display on view\n * The schema is available here: https://github.com/mattlewis92/calendar-utils/blob/c51689985f59a271940e30bc4e2c4e1fee3fcb5c/src/calendarUtils.ts#L49-L63\n */\n this.events = [];\n /**\n * The number of segments in an hour. Must divide equally into 60.\n */\n this.hourSegments = 2;\n /**\n * The height in pixels of each hour segment\n */\n this.hourSegmentHeight = 30;\n /**\n * The day start hours in 24 hour time. Must be 0-23\n */\n this.dayStartHour = 0;\n /**\n * The day start minutes. Must be 0-59\n */\n this.dayStartMinute = 0;\n /**\n * The day end hours in 24 hour time. Must be 0-23\n */\n this.dayEndHour = 23;\n /**\n * The day end minutes. Must be 0-59\n */\n this.dayEndMinute = 59;\n /**\n * The placement of the event tooltip\n */\n this.tooltipPlacement = 'auto';\n /**\n * Whether to append tooltips to the body or next to the trigger element\n */\n this.tooltipAppendToBody = true;\n /**\n * The delay in milliseconds before the tooltip should be displayed. If not provided the tooltip\n * will be displayed immediately.\n */\n this.tooltipDelay = null;\n /**\n * Whether to snap events to a grid when dragging\n */\n this.snapDraggedEvents = true;\n /**\n * Called when an event title is clicked\n */\n this.eventClicked = new EventEmitter();\n /**\n * Called when an hour segment is clicked\n */\n this.hourSegmentClicked = new EventEmitter();\n /**\n * Called when an event is resized or dragged and dropped\n */\n this.eventTimesChanged = new EventEmitter();\n /**\n * An output that will be called before the view is rendered for the current day.\n * If you add the `cssClass` property to an hour grid segment it will add that class to the hour segment in the template\n */\n this.beforeViewRender = new EventEmitter();\n }\n};\nCalendarDayViewComponent.ɵfac = function CalendarDayViewComponent_Factory(t) { return new (t || CalendarDayViewComponent)(); };\nCalendarDayViewComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: CalendarDayViewComponent, selectors: [[\"mwl-calendar-day-view\"]], inputs: { events: \"events\", hourSegments: \"hourSegments\", hourSegmentHeight: \"hourSegmentHeight\", dayStartHour: \"dayStartHour\", dayStartMinute: \"dayStartMinute\", dayEndHour: \"dayEndHour\", dayEndMinute: \"dayEndMinute\", tooltipPlacement: \"tooltipPlacement\", tooltipAppendToBody: \"tooltipAppendToBody\", tooltipDelay: \"tooltipDelay\", snapDraggedEvents: \"snapDraggedEvents\", viewDate: \"viewDate\", refresh: \"refresh\", locale: \"locale\", eventSnapSize: \"eventSnapSize\", tooltipTemplate: \"tooltipTemplate\", hourSegmentTemplate: \"hourSegmentTemplate\", eventTemplate: \"eventTemplate\", eventTitleTemplate: \"eventTitleTemplate\", eventActionsTemplate: \"eventActionsTemplate\", allDayEventsLabelTemplate: \"allDayEventsLabelTemplate\", currentTimeMarkerTemplate: \"currentTimeMarkerTemplate\" }, outputs: { eventClicked: \"eventClicked\", hourSegmentClicked: \"hourSegmentClicked\", eventTimesChanged: \"eventTimesChanged\", beforeViewRender: \"beforeViewRender\" }, decls: 1, vars: 23, consts: [[1, \"cal-day-view\", 3, \"daysInWeek\", \"viewDate\", \"events\", \"hourSegments\", \"hourSegmentHeight\", \"dayStartHour\", \"dayStartMinute\", \"dayEndHour\", \"dayEndMinute\", \"refresh\", \"locale\", \"eventSnapSize\", \"tooltipPlacement\", \"tooltipTemplate\", \"tooltipAppendToBody\", \"tooltipDelay\", \"hourSegmentTemplate\", \"eventTemplate\", \"eventTitleTemplate\", \"eventActionsTemplate\", \"snapDraggedEvents\", \"allDayEventsLabelTemplate\", \"currentTimeMarkerTemplate\", \"eventClicked\", \"hourSegmentClicked\", \"eventTimesChanged\", \"beforeViewRender\"]], template: function CalendarDayViewComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"mwl-calendar-week-view\", 0);\n ɵngcc0.ɵɵlistener(\"eventClicked\", function CalendarDayViewComponent_Template_mwl_calendar_week_view_eventClicked_0_listener($event) { return ctx.eventClicked.emit($event); })(\"hourSegmentClicked\", function CalendarDayViewComponent_Template_mwl_calendar_week_view_hourSegmentClicked_0_listener($event) { return ctx.hourSegmentClicked.emit($event); })(\"eventTimesChanged\", function CalendarDayViewComponent_Template_mwl_calendar_week_view_eventTimesChanged_0_listener($event) { return ctx.eventTimesChanged.emit($event); })(\"beforeViewRender\", function CalendarDayViewComponent_Template_mwl_calendar_week_view_beforeViewRender_0_listener($event) { return ctx.beforeViewRender.emit($event); });\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"daysInWeek\", 1)(\"viewDate\", ctx.viewDate)(\"events\", ctx.events)(\"hourSegments\", ctx.hourSegments)(\"hourSegmentHeight\", ctx.hourSegmentHeight)(\"dayStartHour\", ctx.dayStartHour)(\"dayStartMinute\", ctx.dayStartMinute)(\"dayEndHour\", ctx.dayEndHour)(\"dayEndMinute\", ctx.dayEndMinute)(\"refresh\", ctx.refresh)(\"locale\", ctx.locale)(\"eventSnapSize\", ctx.eventSnapSize)(\"tooltipPlacement\", ctx.tooltipPlacement)(\"tooltipTemplate\", ctx.tooltipTemplate)(\"tooltipAppendToBody\", ctx.tooltipAppendToBody)(\"tooltipDelay\", ctx.tooltipDelay)(\"hourSegmentTemplate\", ctx.hourSegmentTemplate)(\"eventTemplate\", ctx.eventTemplate)(\"eventTitleTemplate\", ctx.eventTitleTemplate)(\"eventActionsTemplate\", ctx.eventActionsTemplate)(\"snapDraggedEvents\", ctx.snapDraggedEvents)(\"allDayEventsLabelTemplate\", ctx.allDayEventsLabelTemplate)(\"currentTimeMarkerTemplate\", ctx.currentTimeMarkerTemplate);\n } }, directives: [CalendarWeekViewComponent], encapsulation: 2 });\n__decorate([\n Input(),\n __metadata(\"design:type\", Date)\n], CalendarDayViewComponent.prototype, \"viewDate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Array)\n], CalendarDayViewComponent.prototype, \"events\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarDayViewComponent.prototype, \"hourSegments\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarDayViewComponent.prototype, \"hourSegmentHeight\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarDayViewComponent.prototype, \"dayStartHour\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarDayViewComponent.prototype, \"dayStartMinute\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarDayViewComponent.prototype, \"dayEndHour\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarDayViewComponent.prototype, \"dayEndMinute\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Subject)\n], CalendarDayViewComponent.prototype, \"refresh\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", String)\n], CalendarDayViewComponent.prototype, \"locale\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarDayViewComponent.prototype, \"eventSnapSize\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Object)\n], CalendarDayViewComponent.prototype, \"tooltipPlacement\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarDayViewComponent.prototype, \"tooltipTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarDayViewComponent.prototype, \"tooltipAppendToBody\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Number)\n], CalendarDayViewComponent.prototype, \"tooltipDelay\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarDayViewComponent.prototype, \"hourSegmentTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarDayViewComponent.prototype, \"eventTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarDayViewComponent.prototype, \"eventTitleTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarDayViewComponent.prototype, \"eventActionsTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", Boolean)\n], CalendarDayViewComponent.prototype, \"snapDraggedEvents\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarDayViewComponent.prototype, \"allDayEventsLabelTemplate\", void 0);\n__decorate([\n Input(),\n __metadata(\"design:type\", TemplateRef)\n], CalendarDayViewComponent.prototype, \"currentTimeMarkerTemplate\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarDayViewComponent.prototype, \"eventClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarDayViewComponent.prototype, \"hourSegmentClicked\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarDayViewComponent.prototype, \"eventTimesChanged\", void 0);\n__decorate([\n Output(),\n __metadata(\"design:type\", Object)\n], CalendarDayViewComponent.prototype, \"beforeViewRender\", void 0);\n\nlet CalendarDayModule = class CalendarDayModule {\n};\nCalendarDayModule.ɵfac = function CalendarDayModule_Factory(t) { return new (t || CalendarDayModule)(); };\nCalendarDayModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CalendarDayModule });\nCalendarDayModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[CommonModule, CalendarCommonModule, CalendarWeekModule]] });\n\nvar CalendarModule_1;\n/**\n * The main module of this library. Example usage:\n *\n * ```typescript\n * import { CalenderModule } from 'angular-calendar';\n *\n * @NgModule({\n * imports: [\n * CalenderModule.forRoot()\n * ]\n * })\n * class MyModule {}\n * ```\n *\n */\nlet CalendarModule = CalendarModule_1 = class CalendarModule {\n static forRoot(dateAdapter, config = {}) {\n return {\n ngModule: CalendarModule_1,\n providers: [\n dateAdapter,\n config.eventTitleFormatter || CalendarEventTitleFormatter,\n config.dateFormatter || CalendarDateFormatter,\n config.utils || CalendarUtils,\n config.a11y || CalendarA11y,\n ],\n };\n }\n};\nCalendarModule.ɵfac = function CalendarModule_Factory(t) { return new (t || CalendarModule)(); };\nCalendarModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: CalendarModule });\nCalendarModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CalendarCommonModule,\n CalendarMonthModule,\n CalendarWeekModule,\n CalendarDayModule,\n ], CalendarCommonModule, CalendarMonthModule, CalendarWeekModule, CalendarDayModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarEventActionsComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-event-actions',\n template: `\n \n \n \n \n \n \n \n \n `\n }]\n }], function () { return []; }, { event: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarEventTitleComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-event-title',\n template: `\n \n \n \n \n \n \n `\n }]\n }], null, { event: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], view: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarTooltipWindowComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-tooltip-window',\n template: `\n \n
      \n
      \n
      \n
      \n \n \n \n `\n }]\n }], null, { contents: [{\n type: Input\n }], placement: [{\n type: Input\n }], event: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarTooltipDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlCalendarTooltip]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Injector }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ComponentFactoryResolver }, { type: ɵngcc0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { placement: [{\n type: Input,\n args: ['tooltipPlacement']\n }], delay: [{\n type: Input,\n args: ['tooltipDelay']\n }], onMouseOver: [{\n type: HostListener,\n args: ['mouseenter']\n }], onMouseOut: [{\n type: HostListener,\n args: ['mouseleave']\n }], contents: [{\n type: Input,\n args: ['mwlCalendarTooltip']\n }], customTemplate: [{\n type: Input,\n args: ['tooltipTemplate']\n }], event: [{\n type: Input,\n args: ['tooltipEvent']\n }], appendToBody: [{\n type: Input,\n args: ['tooltipAppendToBody']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarPreviousViewDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlCalendarPreviousView]'\n }]\n }], function () { return [{ type: DateAdapter }]; }, { excludeDays: [{\n type: Input\n }], viewDateChange: [{\n type: Output\n }], \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click']\n }], view: [{\n type: Input\n }], viewDate: [{\n type: Input\n }], daysInWeek: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarNextViewDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlCalendarNextView]'\n }]\n }], function () { return [{ type: DateAdapter }]; }, { excludeDays: [{\n type: Input\n }], viewDateChange: [{\n type: Output\n }], \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click']\n }], view: [{\n type: Input\n }], viewDate: [{\n type: Input\n }], daysInWeek: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarTodayDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlCalendarToday]'\n }]\n }], function () { return [{ type: DateAdapter }]; }, { viewDateChange: [{\n type: Output\n }], \n /**\n * @hidden\n */\n onClick: [{\n type: HostListener,\n args: ['click']\n }], viewDate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarAngularDateFormatter, [{\n type: Injectable\n }], function () { return [{ type: DateAdapter }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarDateFormatter, [{\n type: Injectable\n }], null, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarDatePipe, [{\n type: Pipe,\n args: [{\n name: 'calendarDate'\n }]\n }], function () { return [{ type: CalendarDateFormatter }, { type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarEventTitlePipe, [{\n type: Pipe,\n args: [{\n name: 'calendarEventTitle'\n }]\n }], function () { return [{ type: CalendarEventTitleFormatter }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ClickDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlClick]'\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { clickListenerDisabled: [{\n type: Input\n }], click: [{\n type: Output,\n args: ['mwlClick']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(KeydownEnterDirective, [{\n type: Directive,\n args: [{ selector: '[mwlKeydownEnter]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }]; }, { keydown: [{\n type: Output,\n args: ['mwlKeydownEnter']\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarUtils, [{\n type: Injectable\n }], function () { return [{ type: DateAdapter }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarA11y, [{\n type: Injectable\n }], function () { return [{ type: ɵngcc1.I18nPluralPipe }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarA11yPipe, [{\n type: Pipe,\n args: [{\n name: 'calendarA11y'\n }]\n }], function () { return [{ type: CalendarA11y }, { type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarMomentDateFormatter, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [MOMENT]\n }] }, { type: DateAdapter }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarNativeDateFormatter, [{\n type: Injectable\n }], function () { return [{ type: DateAdapter }]; }, null); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarCommonModule, [{\n type: NgModule,\n args: [{\n declarations: [\n CalendarEventActionsComponent,\n CalendarEventTitleComponent,\n CalendarTooltipWindowComponent,\n CalendarTooltipDirective,\n CalendarPreviousViewDirective,\n CalendarNextViewDirective,\n CalendarTodayDirective,\n CalendarDatePipe,\n CalendarEventTitlePipe,\n CalendarA11yPipe,\n ClickDirective,\n KeydownEnterDirective,\n ],\n imports: [CommonModule],\n exports: [\n CalendarEventActionsComponent,\n CalendarEventTitleComponent,\n CalendarTooltipWindowComponent,\n CalendarTooltipDirective,\n CalendarPreviousViewDirective,\n CalendarNextViewDirective,\n CalendarTodayDirective,\n CalendarDatePipe,\n CalendarEventTitlePipe,\n CalendarA11yPipe,\n ClickDirective,\n KeydownEnterDirective,\n ],\n providers: [I18nPluralPipe],\n entryComponents: [CalendarTooltipWindowComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CalendarCommonModule, { declarations: function () { return [CalendarEventActionsComponent, CalendarEventTitleComponent, CalendarTooltipWindowComponent, CalendarTooltipDirective, CalendarPreviousViewDirective, CalendarNextViewDirective, CalendarTodayDirective, CalendarDatePipe, CalendarEventTitlePipe, CalendarA11yPipe, ClickDirective, KeydownEnterDirective]; }, imports: function () { return [CommonModule]; }, exports: function () { return [CalendarEventActionsComponent, CalendarEventTitleComponent, CalendarTooltipWindowComponent, CalendarTooltipDirective, CalendarPreviousViewDirective, CalendarNextViewDirective, CalendarTodayDirective, CalendarDatePipe, CalendarEventTitlePipe, CalendarA11yPipe, ClickDirective, KeydownEnterDirective]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarMonthViewComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-month-view',\n template: `\n
      \n \n \n
      \n \n
      \n \n \n
      \n \n \n
      \n
      \n
      \n `\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: CalendarUtils }, { type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: DateAdapter }]; }, { events: [{\n type: Input\n }], excludeDays: [{\n type: Input\n }], activeDayIsOpen: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], tooltipDelay: [{\n type: Input\n }], beforeViewRender: [{\n type: Output\n }], dayClicked: [{\n type: Output\n }], eventClicked: [{\n type: Output\n }], columnHeaderClicked: [{\n type: Output\n }], eventTimesChanged: [{\n type: Output\n }], locale: [{\n type: Input\n }], viewDate: [{\n type: Input\n }], activeDay: [{\n type: Input\n }], refresh: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], weekStartsOn: [{\n type: Input\n }], headerTemplate: [{\n type: Input\n }], cellTemplate: [{\n type: Input\n }], openDayEventsTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }], weekendDays: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarMonthViewHeaderComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-month-view-header',\n template: `\n \n
      \n \n {{ day.date | calendarDate: 'monthViewColumnHeader':locale }}\n
      \n \n \n \n \n `\n }]\n }], function () { return []; }, { columnHeaderClicked: [{\n type: Output\n }], days: [{\n type: Input\n }], locale: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarMonthCellComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-month-cell',\n template: `\n \n \n \n 0\">{{\n day.badgeTotal\n }}\n {{\n day.date | calendarDate: 'monthViewDayNumber':locale\n }}\n \n \n
      0\">\n
      \n \n \n \n \n `,\n host: {\n class: 'cal-cell cal-day-cell',\n '[class.cal-past]': 'day.isPast',\n '[class.cal-today]': 'day.isToday',\n '[class.cal-future]': 'day.isFuture',\n '[class.cal-weekend]': 'day.isWeekend',\n '[class.cal-in-month]': 'day.inMonth',\n '[class.cal-out-month]': '!day.inMonth',\n '[class.cal-has-events]': 'day.events.length > 0',\n '[class.cal-open]': 'day === openDay',\n '[class.cal-event-highlight]': '!!day.backgroundColor'\n }\n }]\n }], function () { return []; }, { highlightDay: [{\n type: Output\n }], unhighlightDay: [{\n type: Output\n }], eventClicked: [{\n type: Output\n }], day: [{\n type: Input\n }], openDay: [{\n type: Input\n }], locale: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], tooltipDelay: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarOpenDayEventsComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-open-day-events',\n template: `\n \n \n \n \n \n \n \n &ngsp;\n \n \n &ngsp;\n \n \n \n \n \n \n \n `,\n animations: [collapseAnimation]\n }]\n }], function () { return []; }, { isOpen: [{\n type: Input\n }], eventClicked: [{\n type: Output\n }], locale: [{\n type: Input\n }], events: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }], date: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarMonthModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, DragAndDropModule, CalendarCommonModule],\n declarations: [\n CalendarMonthViewComponent,\n CalendarMonthCellComponent,\n CalendarOpenDayEventsComponent,\n CalendarMonthViewHeaderComponent,\n ],\n exports: [\n DragAndDropModule,\n CalendarMonthViewComponent,\n CalendarMonthCellComponent,\n CalendarOpenDayEventsComponent,\n CalendarMonthViewHeaderComponent,\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CalendarMonthModule, { declarations: function () { return [CalendarMonthViewComponent, CalendarMonthCellComponent, CalendarOpenDayEventsComponent, CalendarMonthViewHeaderComponent]; }, imports: function () { return [CommonModule, DragAndDropModule, CalendarCommonModule]; }, exports: function () { return [DragAndDropModule, CalendarMonthViewComponent, CalendarMonthCellComponent, CalendarOpenDayEventsComponent, CalendarMonthViewHeaderComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarWeekViewComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-week-view',\n template: `\n
      \n \n \n 0\"\n mwlDroppable\n (dragEnter)=\"dragEnter('allDay')\"\n (dragLeave)=\"dragLeave('allDay')\"\n >\n
      \n
      \n
      \n \n \n \n \n \n \n \n \n \n \n \n 0 && daysInWeek !== 1\"\n >\n \n \n \n \n \n 0\"\n #dayColumns\n >\n \n \n
      \n \n
      \n \n \n 0\"\n [tooltipDelay]=\"tooltipDelay\"\n [customTemplate]=\"eventTemplate\"\n [eventTitleTemplate]=\"eventTitleTemplate\"\n [eventActionsTemplate]=\"eventActionsTemplate\"\n [column]=\"column\"\n [daysInWeek]=\"daysInWeek\"\n (eventClicked)=\"\n eventClicked.emit({\n event: timeEvent.event,\n sourceEvent: $event.sourceEvent\n })\n \"\n >\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n `\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: CalendarUtils }, { type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }, { type: DateAdapter }]; }, { events: [{\n type: Input\n }], excludeDays: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], tooltipDelay: [{\n type: Input\n }], precision: [{\n type: Input\n }], snapDraggedEvents: [{\n type: Input\n }], hourSegments: [{\n type: Input\n }], hourSegmentHeight: [{\n type: Input\n }], dayStartHour: [{\n type: Input\n }], dayStartMinute: [{\n type: Input\n }], dayEndHour: [{\n type: Input\n }], dayEndMinute: [{\n type: Input\n }], dayHeaderClicked: [{\n type: Output\n }], eventClicked: [{\n type: Output\n }], eventTimesChanged: [{\n type: Output\n }], beforeViewRender: [{\n type: Output\n }], hourSegmentClicked: [{\n type: Output\n }], locale: [{\n type: Input\n }], viewDate: [{\n type: Input\n }], refresh: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], weekStartsOn: [{\n type: Input\n }], headerTemplate: [{\n type: Input\n }], eventTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }], weekendDays: [{\n type: Input\n }], hourSegmentTemplate: [{\n type: Input\n }], eventSnapSize: [{\n type: Input\n }], allDayEventsLabelTemplate: [{\n type: Input\n }], daysInWeek: [{\n type: Input\n }], currentTimeMarkerTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarWeekViewHeaderComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-week-view-header',\n template: `\n \n
      \n \n {{ day.date | calendarDate: 'weekViewColumnHeader':locale }}
      \n {{\n day.date | calendarDate: 'weekViewColumnSubHeader':locale\n }}\n
      \n \n \n \n \n `\n }]\n }], function () { return []; }, { dayHeaderClicked: [{\n type: Output\n }], eventDropped: [{\n type: Output\n }], dragEnter: [{\n type: Output\n }], days: [{\n type: Input\n }], locale: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarWeekViewEventComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-week-view-event',\n template: `\n \n \n \n \n &ngsp;\n \n \n \n \n \n \n `\n }]\n }], function () { return []; }, { eventClicked: [{\n type: Output\n }], locale: [{\n type: Input\n }], weekEvent: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], tooltipDisabled: [{\n type: Input\n }], tooltipDelay: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], column: [{\n type: Input\n }], daysInWeek: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarWeekViewHourSegmentComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-week-view-hour-segment',\n template: `\n \n \n
      \n {{\n segment.displayDate\n | calendarDate\n : (daysInWeek === 1 ? 'dayViewHour' : 'weekViewHour')\n : locale\n }}\n
      \n \n \n \n \n `\n }]\n }], null, { segment: [{\n type: Input\n }], segmentHeight: [{\n type: Input\n }], locale: [{\n type: Input\n }], isTimeLabel: [{\n type: Input\n }], daysInWeek: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarWeekViewCurrentTimeMarkerComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-week-view-current-time-marker',\n template: `\n \n \n \n \n \n `\n }]\n }], function () { return [{ type: DateAdapter }, { type: ɵngcc0.NgZone }]; }, { columnDate: [{\n type: Input\n }], dayStartHour: [{\n type: Input\n }], dayStartMinute: [{\n type: Input\n }], dayEndHour: [{\n type: Input\n }], dayEndMinute: [{\n type: Input\n }], hourSegments: [{\n type: Input\n }], hourSegmentHeight: [{\n type: Input\n }], customTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarWeekModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n ResizableModule,\n DragAndDropModule,\n CalendarCommonModule,\n ],\n declarations: [\n CalendarWeekViewComponent,\n CalendarWeekViewHeaderComponent,\n CalendarWeekViewEventComponent,\n CalendarWeekViewHourSegmentComponent,\n CalendarWeekViewCurrentTimeMarkerComponent,\n ],\n exports: [\n ResizableModule,\n DragAndDropModule,\n CalendarWeekViewComponent,\n CalendarWeekViewHeaderComponent,\n CalendarWeekViewEventComponent,\n CalendarWeekViewHourSegmentComponent,\n CalendarWeekViewCurrentTimeMarkerComponent,\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CalendarWeekModule, { declarations: function () { return [CalendarWeekViewComponent, CalendarWeekViewHeaderComponent, CalendarWeekViewEventComponent, CalendarWeekViewHourSegmentComponent, CalendarWeekViewCurrentTimeMarkerComponent]; }, imports: function () { return [CommonModule,\n ResizableModule,\n DragAndDropModule, CalendarCommonModule]; }, exports: function () { return [ResizableModule,\n DragAndDropModule, CalendarWeekViewComponent, CalendarWeekViewHeaderComponent, CalendarWeekViewEventComponent, CalendarWeekViewHourSegmentComponent, CalendarWeekViewCurrentTimeMarkerComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarDayViewComponent, [{\n type: Component,\n args: [{\n selector: 'mwl-calendar-day-view',\n template: `\n \n `\n }]\n }], function () { return []; }, { events: [{\n type: Input\n }], hourSegments: [{\n type: Input\n }], hourSegmentHeight: [{\n type: Input\n }], dayStartHour: [{\n type: Input\n }], dayStartMinute: [{\n type: Input\n }], dayEndHour: [{\n type: Input\n }], dayEndMinute: [{\n type: Input\n }], tooltipPlacement: [{\n type: Input\n }], tooltipAppendToBody: [{\n type: Input\n }], tooltipDelay: [{\n type: Input\n }], snapDraggedEvents: [{\n type: Input\n }], eventClicked: [{\n type: Output\n }], hourSegmentClicked: [{\n type: Output\n }], eventTimesChanged: [{\n type: Output\n }], beforeViewRender: [{\n type: Output\n }], viewDate: [{\n type: Input\n }], refresh: [{\n type: Input\n }], locale: [{\n type: Input\n }], eventSnapSize: [{\n type: Input\n }], tooltipTemplate: [{\n type: Input\n }], hourSegmentTemplate: [{\n type: Input\n }], eventTemplate: [{\n type: Input\n }], eventTitleTemplate: [{\n type: Input\n }], eventActionsTemplate: [{\n type: Input\n }], allDayEventsLabelTemplate: [{\n type: Input\n }], currentTimeMarkerTemplate: [{\n type: Input\n }] }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarDayModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, CalendarCommonModule, CalendarWeekModule],\n declarations: [CalendarDayViewComponent],\n exports: [CalendarDayViewComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CalendarDayModule, { declarations: function () { return [CalendarDayViewComponent]; }, imports: function () { return [CommonModule, CalendarCommonModule, CalendarWeekModule]; }, exports: function () { return [CalendarDayViewComponent]; } }); })();\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CalendarModule, [{\n type: NgModule,\n args: [{\n imports: [\n CalendarCommonModule,\n CalendarMonthModule,\n CalendarWeekModule,\n CalendarDayModule,\n ],\n exports: [\n CalendarCommonModule,\n CalendarMonthModule,\n CalendarWeekModule,\n CalendarDayModule,\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(CalendarModule, { imports: [CalendarCommonModule, CalendarMonthModule, CalendarWeekModule, CalendarDayModule], exports: [CalendarCommonModule, CalendarMonthModule, CalendarWeekModule, CalendarDayModule] }); })();\n\n/*\n * Public API Surface of angular-calendar\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CalendarA11y, CalendarAngularDateFormatter, CalendarCommonModule, CalendarDateFormatter, CalendarDayModule, CalendarDayViewComponent, CalendarEventTimesChangedEventType, CalendarEventTitleFormatter, CalendarModule, CalendarMomentDateFormatter, CalendarMonthModule, CalendarMonthViewComponent, CalendarNativeDateFormatter, CalendarUtils, CalendarView, CalendarWeekModule, CalendarWeekViewComponent, DateAdapter, MOMENT, collapseAnimation, getWeekViewPeriod, CalendarOpenDayEventsComponent as ɵa, CalendarEventActionsComponent as ɵb, CalendarEventTitleComponent as ɵc, CalendarTooltipWindowComponent as ɵd, CalendarTooltipDirective as ɵe, CalendarPreviousViewDirective as ɵf, CalendarNextViewDirective as ɵg, CalendarTodayDirective as ɵh, CalendarDatePipe as ɵi, CalendarEventTitlePipe as ɵj, CalendarA11yPipe as ɵk, ClickDirective as ɵl, KeydownEnterDirective as ɵm, CalendarMonthCellComponent as ɵn, CalendarMonthViewHeaderComponent as ɵo, CalendarWeekViewHeaderComponent as ɵp, CalendarWeekViewEventComponent as ɵq, CalendarWeekViewHourSegmentComponent as ɵr, CalendarWeekViewCurrentTimeMarkerComponent as ɵs };\n\n","import { __assign } from \"tslib\";\nimport { adapterFactory as baseAdapterFactory } from 'calendar-utils/date-adapters/date-fns';\nimport { addWeeks, addMonths, subDays, subWeeks, subMonths, getISOWeek, setDate, setMonth, setYear, getDate, getYear, } from 'date-fns';\nexport function adapterFactory() {\n return __assign(__assign({}, baseAdapterFactory()), { addWeeks: addWeeks,\n addMonths: addMonths,\n subDays: subDays,\n subWeeks: subWeeks,\n subMonths: subMonths,\n getISOWeek: getISOWeek,\n setDate: setDate,\n setMonth: setMonth,\n setYear: setYear,\n getDate: getDate,\n getYear: getYear });\n}\n","import { Subject, Observable, merge, ReplaySubject, combineLatest, fromEvent } from 'rxjs';\nimport { DOCUMENT } from '@angular/common';\nimport autoScroll from '@mattlewis92/dom-autoscroller';\nimport { Injectable, Directive, ElementRef, Input, Renderer2, Output, EventEmitter, NgZone, Inject, ViewContainerRef, Optional, NgModule, defineInjectable } from '@angular/core';\nimport { map, mergeMap, takeUntil, take, takeLast, pairwise, share, filter, count, startWith, distinctUntilChanged } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nimport * as ɵngcc0 from '@angular/core';\nclass DraggableHelper {\n constructor() {\n this.currentDrag = new Subject();\n }\n}\nDraggableHelper.ɵfac = function DraggableHelper_Factory(t) { return new (t || DraggableHelper)(); };\nDraggableHelper.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DraggableHelper, factory: DraggableHelper.ɵfac, providedIn: 'root' });\n/** @nocollapse */ DraggableHelper.ngInjectableDef = defineInjectable({ factory: function DraggableHelper_Factory() { return new DraggableHelper(); }, token: DraggableHelper, providedIn: \"root\" });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DraggableHelper, [{\n type: Injectable,\n args: [{\n providedIn: 'root'\n }]\n }], function () { return []; }, null); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * If the window isn't scrollable, then place this on the scrollable container that draggable elements are inside. e.g.\n * ```html\n *
      \n *
      Drag me!
      \n *
      \n * ```\n */\nclass DraggableScrollContainerDirective {\n /**\n * @hidden\n * @param {?} elementRef\n */\n constructor(elementRef) {\n this.elementRef = elementRef;\n /**\n * Trigger the DragStart after a long touch in scrollable container when true\n * @deprecated will be removed in v5 (use [touchStartLongPress]=\"{delay: 300, delta: 30}\" on the mwlDraggable element instead)\n */\n this.activeLongPressDrag = false;\n /**\n * Configuration of a long touch\n * Duration in ms of a long touch before activating DragStart\n * Delta of the\n * @deprecated will be removed in v5 (use [touchStartLongPress]=\"{delay: 300, delta: 30}\" on the mwlDraggable element instead)\n */\n this.longPressConfig = { duration: 300, delta: 30 };\n }\n}\nDraggableScrollContainerDirective.ɵfac = function DraggableScrollContainerDirective_Factory(t) { return new (t || DraggableScrollContainerDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nDraggableScrollContainerDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DraggableScrollContainerDirective, selectors: [[\"\", \"mwlDraggableScrollContainer\", \"\"]], inputs: { activeLongPressDrag: \"activeLongPressDrag\", longPressConfig: \"longPressConfig\" } });\n/** @nocollapse */\nDraggableScrollContainerDirective.ctorParameters = () => [\n { type: ElementRef }\n];\nDraggableScrollContainerDirective.propDecorators = {\n activeLongPressDrag: [{ type: Input }],\n longPressConfig: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DraggableScrollContainerDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlDraggableScrollContainer]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { activeLongPressDrag: [{\n type: Input\n }], longPressConfig: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} renderer\n * @param {?} element\n * @param {?} classToAdd\n * @return {?}\n */\nfunction addClass(renderer, element, classToAdd) {\n if (classToAdd) {\n classToAdd\n .split(' ')\n .forEach((/**\n * @param {?} className\n * @return {?}\n */\n (className) => renderer.addClass(element.nativeElement, className)));\n }\n}\n/**\n * @param {?} renderer\n * @param {?} element\n * @param {?} classToRemove\n * @return {?}\n */\nfunction removeClass(renderer, element, classToRemove) {\n if (classToRemove) {\n classToRemove\n .split(' ')\n .forEach((/**\n * @param {?} className\n * @return {?}\n */\n (className) => renderer.removeClass(element.nativeElement, className)));\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass DraggableDirective {\n /**\n * @hidden\n * @param {?} element\n * @param {?} renderer\n * @param {?} draggableHelper\n * @param {?} zone\n * @param {?} vcr\n * @param {?} scrollContainer\n * @param {?} document\n */\n constructor(element, renderer, draggableHelper, zone, vcr, scrollContainer, document) {\n this.element = element;\n this.renderer = renderer;\n this.draggableHelper = draggableHelper;\n this.zone = zone;\n this.vcr = vcr;\n this.scrollContainer = scrollContainer;\n this.document = document;\n /**\n * The axis along which the element is draggable\n */\n this.dragAxis = { x: true, y: true };\n /**\n * Snap all drags to an x / y grid\n */\n this.dragSnapGrid = {};\n /**\n * Show a ghost element that shows the drag when dragging\n */\n this.ghostDragEnabled = true;\n /**\n * Show the original element when ghostDragEnabled is true\n */\n this.showOriginalElementWhileDragging = false;\n /**\n * The cursor to use when hovering over a draggable element\n */\n this.dragCursor = '';\n /*\n * Options used to control the behaviour of auto scrolling: https://www.npmjs.com/package/dom-autoscroller\n */\n this.autoScroll = {\n margin: 20,\n };\n /**\n * Called when the element can be dragged along one axis and has the mouse or pointer device pressed on it\n */\n this.dragPointerDown = new EventEmitter();\n /**\n * Called when the element has started to be dragged.\n * Only called after at least one mouse or touch move event.\n * If you call $event.cancelDrag$.emit() it will cancel the current drag\n */\n this.dragStart = new EventEmitter();\n /**\n * Called after the ghost element has been created\n */\n this.ghostElementCreated = new EventEmitter();\n /**\n * Called when the element is being dragged\n */\n this.dragging = new EventEmitter();\n /**\n * Called after the element is dragged\n */\n this.dragEnd = new EventEmitter();\n /**\n * @hidden\n */\n this.pointerDown$ = new Subject();\n /**\n * @hidden\n */\n this.pointerMove$ = new Subject();\n /**\n * @hidden\n */\n this.pointerUp$ = new Subject();\n this.eventListenerSubscriptions = {};\n this.destroy$ = new Subject();\n this.timeLongPress = { timerBegin: 0, timerEnd: 0 };\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.checkEventListeners();\n /** @type {?} */\n const pointerDragged$ = this.pointerDown$.pipe(filter((/**\n * @return {?}\n */\n () => this.canDrag())), mergeMap((/**\n * @param {?} pointerDownEvent\n * @return {?}\n */\n (pointerDownEvent) => {\n // fix for https://github.com/mattlewis92/angular-draggable-droppable/issues/61\n // stop mouse events propagating up the chain\n if (pointerDownEvent.event.stopPropagation && !this.scrollContainer) {\n pointerDownEvent.event.stopPropagation();\n }\n // hack to prevent text getting selected in safari while dragging\n /** @type {?} */\n const globalDragStyle = this.renderer.createElement('style');\n this.renderer.setAttribute(globalDragStyle, 'type', 'text/css');\n this.renderer.appendChild(globalDragStyle, this.renderer.createText(`\n body * {\n -moz-user-select: none;\n -ms-user-select: none;\n -webkit-user-select: none;\n user-select: none;\n }\n `));\n requestAnimationFrame((/**\n * @return {?}\n */\n () => {\n this.document.head.appendChild(globalDragStyle);\n }));\n /** @type {?} */\n const startScrollPosition = this.getScrollPosition();\n /** @type {?} */\n const scrollContainerScroll$ = new Observable((/**\n * @param {?} observer\n * @return {?}\n */\n (observer) => {\n /** @type {?} */\n const scrollContainer = this.scrollContainer\n ? this.scrollContainer.elementRef.nativeElement\n : 'window';\n return this.renderer.listen(scrollContainer, 'scroll', (/**\n * @param {?} e\n * @return {?}\n */\n (e) => observer.next(e)));\n })).pipe(startWith(startScrollPosition), map((/**\n * @return {?}\n */\n () => this.getScrollPosition())));\n /** @type {?} */\n const currentDrag$ = new Subject();\n /** @type {?} */\n const cancelDrag$ = new ReplaySubject();\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.dragPointerDown.next({ x: 0, y: 0 });\n }));\n /** @type {?} */\n const dragComplete$ = merge(this.pointerUp$, this.pointerDown$, cancelDrag$, this.destroy$).pipe(share());\n /** @type {?} */\n const pointerMove = combineLatest([\n this.pointerMove$,\n scrollContainerScroll$,\n ]).pipe(map((/**\n * @param {?} __0\n * @return {?}\n */\n ([pointerMoveEvent, scroll]) => {\n return {\n currentDrag$,\n transformX: pointerMoveEvent.clientX - pointerDownEvent.clientX,\n transformY: pointerMoveEvent.clientY - pointerDownEvent.clientY,\n clientX: pointerMoveEvent.clientX,\n clientY: pointerMoveEvent.clientY,\n scrollLeft: scroll.left,\n scrollTop: scroll.top,\n target: pointerMoveEvent.event.target,\n };\n })), map((/**\n * @param {?} moveData\n * @return {?}\n */\n (moveData) => {\n if (this.dragSnapGrid.x) {\n moveData.transformX =\n Math.round(moveData.transformX / this.dragSnapGrid.x) *\n this.dragSnapGrid.x;\n }\n if (this.dragSnapGrid.y) {\n moveData.transformY =\n Math.round(moveData.transformY / this.dragSnapGrid.y) *\n this.dragSnapGrid.y;\n }\n return moveData;\n })), map((/**\n * @param {?} moveData\n * @return {?}\n */\n (moveData) => {\n if (!this.dragAxis.x) {\n moveData.transformX = 0;\n }\n if (!this.dragAxis.y) {\n moveData.transformY = 0;\n }\n return moveData;\n })), map((/**\n * @param {?} moveData\n * @return {?}\n */\n (moveData) => {\n /** @type {?} */\n const scrollX = moveData.scrollLeft - startScrollPosition.left;\n /** @type {?} */\n const scrollY = moveData.scrollTop - startScrollPosition.top;\n return Object.assign({}, moveData, { x: moveData.transformX + scrollX, y: moveData.transformY + scrollY });\n })), filter((/**\n * @param {?} __0\n * @return {?}\n */\n ({ x, y, transformX, transformY }) => !this.validateDrag ||\n this.validateDrag({\n x,\n y,\n transform: { x: transformX, y: transformY },\n }))), takeUntil(dragComplete$), share());\n /** @type {?} */\n const dragStarted$ = pointerMove.pipe(take(1), share());\n /** @type {?} */\n const dragEnded$ = pointerMove.pipe(takeLast(1), share());\n dragStarted$.subscribe((/**\n * @param {?} __0\n * @return {?}\n */\n ({ clientX, clientY, x, y }) => {\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.dragStart.next({ cancelDrag$ });\n }));\n this.scroller = autoScroll([\n this.scrollContainer\n ? this.scrollContainer.elementRef.nativeElement\n : this.document.defaultView,\n ], Object.assign({}, this.autoScroll, { /**\n * @return {?}\n */\n autoScroll() {\n return true;\n } }));\n addClass(this.renderer, this.element, this.dragActiveClass);\n if (this.ghostDragEnabled) {\n /** @type {?} */\n const rect = this.element.nativeElement.getBoundingClientRect();\n /** @type {?} */\n const clone = (/** @type {?} */ (this.element.nativeElement.cloneNode(true)));\n if (!this.showOriginalElementWhileDragging) {\n this.renderer.setStyle(this.element.nativeElement, 'visibility', 'hidden');\n }\n if (this.ghostElementAppendTo) {\n this.ghostElementAppendTo.appendChild(clone);\n }\n else {\n (/** @type {?} */ (this.element.nativeElement.parentNode)).insertBefore(clone, this.element.nativeElement.nextSibling);\n }\n this.ghostElement = clone;\n this.document.body.style.cursor = this.dragCursor;\n this.setElementStyles(clone, {\n position: 'fixed',\n top: `${rect.top}px`,\n left: `${rect.left}px`,\n width: `${rect.width}px`,\n height: `${rect.height}px`,\n cursor: this.dragCursor,\n margin: '0',\n willChange: 'transform',\n pointerEvents: 'none',\n });\n if (this.ghostElementTemplate) {\n /** @type {?} */\n const viewRef = this.vcr.createEmbeddedView(this.ghostElementTemplate);\n clone.innerHTML = '';\n viewRef.rootNodes\n .filter((/**\n * @param {?} node\n * @return {?}\n */\n (node) => node instanceof Node))\n .forEach((/**\n * @param {?} node\n * @return {?}\n */\n (node) => {\n clone.appendChild(node);\n }));\n dragEnded$.subscribe((/**\n * @return {?}\n */\n () => {\n this.vcr.remove(this.vcr.indexOf(viewRef));\n }));\n }\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.ghostElementCreated.emit({\n clientX: clientX - x,\n clientY: clientY - y,\n element: clone,\n });\n }));\n dragEnded$.subscribe((/**\n * @return {?}\n */\n () => {\n (/** @type {?} */ (clone.parentElement)).removeChild(clone);\n this.ghostElement = null;\n this.renderer.setStyle(this.element.nativeElement, 'visibility', '');\n }));\n }\n this.draggableHelper.currentDrag.next(currentDrag$);\n }));\n dragEnded$\n .pipe(mergeMap((/**\n * @param {?} dragEndData\n * @return {?}\n */\n (dragEndData) => {\n /** @type {?} */\n const dragEndData$ = cancelDrag$.pipe(count(), take(1), map((/**\n * @param {?} calledCount\n * @return {?}\n */\n (calledCount) => (Object.assign({}, dragEndData, { dragCancelled: calledCount > 0 })))));\n cancelDrag$.complete();\n return dragEndData$;\n })))\n .subscribe((/**\n * @param {?} __0\n * @return {?}\n */\n ({ x, y, dragCancelled }) => {\n this.scroller.destroy();\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.dragEnd.next({ x, y, dragCancelled });\n }));\n removeClass(this.renderer, this.element, this.dragActiveClass);\n currentDrag$.complete();\n }));\n merge(dragComplete$, dragEnded$)\n .pipe(take(1))\n .subscribe((/**\n * @return {?}\n */\n () => {\n requestAnimationFrame((/**\n * @return {?}\n */\n () => {\n this.document.head.removeChild(globalDragStyle);\n }));\n }));\n return pointerMove;\n })), share());\n merge(pointerDragged$.pipe(take(1), map((/**\n * @param {?} value\n * @return {?}\n */\n (value) => [, value]))), pointerDragged$.pipe(pairwise()))\n .pipe(filter((/**\n * @param {?} __0\n * @return {?}\n */\n ([previous, next]) => {\n if (!previous) {\n return true;\n }\n return previous.x !== next.x || previous.y !== next.y;\n })), map((/**\n * @param {?} __0\n * @return {?}\n */\n ([previous, next]) => next)))\n .subscribe((/**\n * @param {?} __0\n * @return {?}\n */\n ({ x, y, currentDrag$, clientX, clientY, transformX, transformY, target, }) => {\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.dragging.next({ x, y });\n }));\n requestAnimationFrame((/**\n * @return {?}\n */\n () => {\n if (this.ghostElement) {\n /** @type {?} */\n const transform = `translate3d(${transformX}px, ${transformY}px, 0px)`;\n this.setElementStyles(this.ghostElement, {\n transform,\n '-webkit-transform': transform,\n '-ms-transform': transform,\n '-moz-transform': transform,\n '-o-transform': transform,\n });\n }\n }));\n currentDrag$.next({\n clientX,\n clientY,\n dropData: this.dropData,\n target,\n });\n }));\n }\n /**\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.dragAxis) {\n this.checkEventListeners();\n }\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.unsubscribeEventListeners();\n this.pointerDown$.complete();\n this.pointerMove$.complete();\n this.pointerUp$.complete();\n this.destroy$.next();\n }\n /**\n * @private\n * @return {?}\n */\n checkEventListeners() {\n /** @type {?} */\n const canDrag = this.canDrag();\n /** @type {?} */\n const hasEventListeners = Object.keys(this.eventListenerSubscriptions).length > 0;\n if (canDrag && !hasEventListeners) {\n this.zone.runOutsideAngular((/**\n * @return {?}\n */\n () => {\n this.eventListenerSubscriptions.mousedown = this.renderer.listen(this.element.nativeElement, 'mousedown', (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.onMouseDown(event);\n }));\n this.eventListenerSubscriptions.mouseup = this.renderer.listen('document', 'mouseup', (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.onMouseUp(event);\n }));\n this.eventListenerSubscriptions.touchstart = this.renderer.listen(this.element.nativeElement, 'touchstart', (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.onTouchStart(event);\n }));\n this.eventListenerSubscriptions.touchend = this.renderer.listen('document', 'touchend', (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.onTouchEnd(event);\n }));\n this.eventListenerSubscriptions.touchcancel = this.renderer.listen('document', 'touchcancel', (/**\n * @param {?} event\n * @return {?}\n */\n (event) => {\n this.onTouchEnd(event);\n }));\n this.eventListenerSubscriptions.mouseenter = this.renderer.listen(this.element.nativeElement, 'mouseenter', (/**\n * @return {?}\n */\n () => {\n this.onMouseEnter();\n }));\n this.eventListenerSubscriptions.mouseleave = this.renderer.listen(this.element.nativeElement, 'mouseleave', (/**\n * @return {?}\n */\n () => {\n this.onMouseLeave();\n }));\n }));\n }\n else if (!canDrag && hasEventListeners) {\n this.unsubscribeEventListeners();\n }\n }\n /**\n * @private\n * @param {?} event\n * @return {?}\n */\n onMouseDown(event) {\n if (event.button === 0) {\n if (!this.eventListenerSubscriptions.mousemove) {\n this.eventListenerSubscriptions.mousemove = this.renderer.listen('document', 'mousemove', (/**\n * @param {?} mouseMoveEvent\n * @return {?}\n */\n (mouseMoveEvent) => {\n this.pointerMove$.next({\n event: mouseMoveEvent,\n clientX: mouseMoveEvent.clientX,\n clientY: mouseMoveEvent.clientY,\n });\n }));\n }\n this.pointerDown$.next({\n event,\n clientX: event.clientX,\n clientY: event.clientY,\n });\n }\n }\n /**\n * @private\n * @param {?} event\n * @return {?}\n */\n onMouseUp(event) {\n if (event.button === 0) {\n if (this.eventListenerSubscriptions.mousemove) {\n this.eventListenerSubscriptions.mousemove();\n delete this.eventListenerSubscriptions.mousemove;\n }\n this.pointerUp$.next({\n event,\n clientX: event.clientX,\n clientY: event.clientY,\n });\n }\n }\n /**\n * @private\n * @param {?} event\n * @return {?}\n */\n onTouchStart(event) {\n /** @type {?} */\n let startScrollPosition;\n /** @type {?} */\n let isDragActivated;\n /** @type {?} */\n let hasContainerScrollbar;\n if ((this.scrollContainer && this.scrollContainer.activeLongPressDrag) ||\n this.touchStartLongPress) {\n this.timeLongPress.timerBegin = Date.now();\n isDragActivated = false;\n hasContainerScrollbar = this.hasScrollbar();\n startScrollPosition = this.getScrollPosition();\n }\n if (!this.eventListenerSubscriptions.touchmove) {\n /** @type {?} */\n const contextMenuListener = fromEvent(this.document, 'contextmenu').subscribe((/**\n * @param {?} e\n * @return {?}\n */\n (e) => {\n e.preventDefault();\n }));\n /** @type {?} */\n const touchMoveListener = fromEvent(this.document, 'touchmove', {\n passive: false,\n }).subscribe((/**\n * @param {?} touchMoveEvent\n * @return {?}\n */\n (touchMoveEvent) => {\n if (((this.scrollContainer && this.scrollContainer.activeLongPressDrag) ||\n this.touchStartLongPress) &&\n !isDragActivated &&\n hasContainerScrollbar) {\n isDragActivated = this.shouldBeginDrag(event, touchMoveEvent, startScrollPosition);\n }\n if (((!this.scrollContainer ||\n !this.scrollContainer.activeLongPressDrag) &&\n !this.touchStartLongPress) ||\n !hasContainerScrollbar ||\n isDragActivated) {\n touchMoveEvent.preventDefault();\n this.pointerMove$.next({\n event: touchMoveEvent,\n clientX: touchMoveEvent.targetTouches[0].clientX,\n clientY: touchMoveEvent.targetTouches[0].clientY,\n });\n }\n }));\n this.eventListenerSubscriptions.touchmove = (/**\n * @return {?}\n */\n () => {\n contextMenuListener.unsubscribe();\n touchMoveListener.unsubscribe();\n });\n }\n this.pointerDown$.next({\n event,\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY,\n });\n }\n /**\n * @private\n * @param {?} event\n * @return {?}\n */\n onTouchEnd(event) {\n if (this.eventListenerSubscriptions.touchmove) {\n this.eventListenerSubscriptions.touchmove();\n delete this.eventListenerSubscriptions.touchmove;\n if ((this.scrollContainer && this.scrollContainer.activeLongPressDrag) ||\n this.touchStartLongPress) {\n this.enableScroll();\n }\n }\n this.pointerUp$.next({\n event,\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n });\n }\n /**\n * @private\n * @return {?}\n */\n onMouseEnter() {\n this.setCursor(this.dragCursor);\n }\n /**\n * @private\n * @return {?}\n */\n onMouseLeave() {\n this.setCursor('');\n }\n /**\n * @private\n * @return {?}\n */\n canDrag() {\n return this.dragAxis.x || this.dragAxis.y;\n }\n /**\n * @private\n * @param {?} value\n * @return {?}\n */\n setCursor(value) {\n if (!this.eventListenerSubscriptions.mousemove) {\n this.renderer.setStyle(this.element.nativeElement, 'cursor', value);\n }\n }\n /**\n * @private\n * @return {?}\n */\n unsubscribeEventListeners() {\n Object.keys(this.eventListenerSubscriptions).forEach((/**\n * @param {?} type\n * @return {?}\n */\n (type) => {\n ((/** @type {?} */ (this))).eventListenerSubscriptions[type]();\n delete ((/** @type {?} */ (this))).eventListenerSubscriptions[type];\n }));\n }\n /**\n * @private\n * @param {?} element\n * @param {?} styles\n * @return {?}\n */\n setElementStyles(element, styles) {\n Object.keys(styles).forEach((/**\n * @param {?} key\n * @return {?}\n */\n (key) => {\n this.renderer.setStyle(element, key, styles[key]);\n }));\n }\n /**\n * @private\n * @return {?}\n */\n getScrollElement() {\n if (this.scrollContainer) {\n return this.scrollContainer.elementRef.nativeElement;\n }\n else {\n return this.document.body;\n }\n }\n /**\n * @private\n * @return {?}\n */\n getScrollPosition() {\n if (this.scrollContainer) {\n return {\n top: this.scrollContainer.elementRef.nativeElement.scrollTop,\n left: this.scrollContainer.elementRef.nativeElement.scrollLeft,\n };\n }\n else {\n return {\n top: window.pageYOffset || this.document.documentElement.scrollTop,\n left: window.pageXOffset || this.document.documentElement.scrollLeft,\n };\n }\n }\n /**\n * @private\n * @param {?} event\n * @param {?} touchMoveEvent\n * @param {?} startScrollPosition\n * @return {?}\n */\n shouldBeginDrag(event, touchMoveEvent, startScrollPosition) {\n /** @type {?} */\n const moveScrollPosition = this.getScrollPosition();\n /** @type {?} */\n const deltaScroll = {\n top: Math.abs(moveScrollPosition.top - startScrollPosition.top),\n left: Math.abs(moveScrollPosition.left - startScrollPosition.left),\n };\n /** @type {?} */\n const deltaX = Math.abs(touchMoveEvent.targetTouches[0].clientX - event.touches[0].clientX) - deltaScroll.left;\n /** @type {?} */\n const deltaY = Math.abs(touchMoveEvent.targetTouches[0].clientY - event.touches[0].clientY) - deltaScroll.top;\n /** @type {?} */\n const deltaTotal = deltaX + deltaY;\n /** @type {?} */\n const longPressConfig = this.touchStartLongPress\n ? this.touchStartLongPress\n : /* istanbul ignore next */\n {\n delta: this.scrollContainer.longPressConfig.delta,\n delay: this.scrollContainer.longPressConfig.duration,\n };\n if (deltaTotal > longPressConfig.delta ||\n deltaScroll.top > 0 ||\n deltaScroll.left > 0) {\n this.timeLongPress.timerBegin = Date.now();\n }\n this.timeLongPress.timerEnd = Date.now();\n /** @type {?} */\n const duration = this.timeLongPress.timerEnd - this.timeLongPress.timerBegin;\n if (duration >= longPressConfig.delay) {\n this.disableScroll();\n return true;\n }\n return false;\n }\n /**\n * @private\n * @return {?}\n */\n enableScroll() {\n if (this.scrollContainer) {\n this.renderer.setStyle(this.scrollContainer.elementRef.nativeElement, 'overflow', '');\n }\n this.renderer.setStyle(this.document.body, 'overflow', '');\n }\n /**\n * @private\n * @return {?}\n */\n disableScroll() {\n /* istanbul ignore next */\n if (this.scrollContainer) {\n this.renderer.setStyle(this.scrollContainer.elementRef.nativeElement, 'overflow', 'hidden');\n }\n this.renderer.setStyle(this.document.body, 'overflow', 'hidden');\n }\n /**\n * @private\n * @return {?}\n */\n hasScrollbar() {\n /** @type {?} */\n const scrollContainer = this.getScrollElement();\n /** @type {?} */\n const containerHasHorizontalScroll = scrollContainer.scrollWidth > scrollContainer.clientWidth;\n /** @type {?} */\n const containerHasVerticalScroll = scrollContainer.scrollHeight > scrollContainer.clientHeight;\n return containerHasHorizontalScroll || containerHasVerticalScroll;\n }\n}\nDraggableDirective.ɵfac = function DraggableDirective_Factory(t) { return new (t || DraggableDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DraggableHelper), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(DraggableScrollContainerDirective, 8), ɵngcc0.ɵɵdirectiveInject(DOCUMENT)); };\nDraggableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DraggableDirective, selectors: [[\"\", \"mwlDraggable\", \"\"]], inputs: { dragAxis: \"dragAxis\", dragSnapGrid: \"dragSnapGrid\", ghostDragEnabled: \"ghostDragEnabled\", showOriginalElementWhileDragging: \"showOriginalElementWhileDragging\", dragCursor: \"dragCursor\", autoScroll: \"autoScroll\", dropData: \"dropData\", validateDrag: \"validateDrag\", dragActiveClass: \"dragActiveClass\", ghostElementAppendTo: \"ghostElementAppendTo\", ghostElementTemplate: \"ghostElementTemplate\", touchStartLongPress: \"touchStartLongPress\" }, outputs: { dragPointerDown: \"dragPointerDown\", dragStart: \"dragStart\", ghostElementCreated: \"ghostElementCreated\", dragging: \"dragging\", dragEnd: \"dragEnd\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nDraggableDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: Renderer2 },\n { type: DraggableHelper },\n { type: NgZone },\n { type: ViewContainerRef },\n { type: DraggableScrollContainerDirective, decorators: [{ type: Optional }] },\n { type: undefined, decorators: [{ type: Inject, args: [DOCUMENT,] }] }\n];\nDraggableDirective.propDecorators = {\n dropData: [{ type: Input }],\n dragAxis: [{ type: Input }],\n dragSnapGrid: [{ type: Input }],\n ghostDragEnabled: [{ type: Input }],\n showOriginalElementWhileDragging: [{ type: Input }],\n validateDrag: [{ type: Input }],\n dragCursor: [{ type: Input }],\n dragActiveClass: [{ type: Input }],\n ghostElementAppendTo: [{ type: Input }],\n ghostElementTemplate: [{ type: Input }],\n touchStartLongPress: [{ type: Input }],\n autoScroll: [{ type: Input }],\n dragPointerDown: [{ type: Output }],\n dragStart: [{ type: Output }],\n ghostElementCreated: [{ type: Output }],\n dragging: [{ type: Output }],\n dragEnd: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DraggableDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlDraggable]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.Renderer2 }, { type: DraggableHelper }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ViewContainerRef }, { type: DraggableScrollContainerDirective, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { dragAxis: [{\n type: Input\n }], dragSnapGrid: [{\n type: Input\n }], ghostDragEnabled: [{\n type: Input\n }], showOriginalElementWhileDragging: [{\n type: Input\n }], dragCursor: [{\n type: Input\n }], autoScroll: [{\n type: Input\n }], dragPointerDown: [{\n type: Output\n }], dragStart: [{\n type: Output\n }], ghostElementCreated: [{\n type: Output\n }], dragging: [{\n type: Output\n }], dragEnd: [{\n type: Output\n }], dropData: [{\n type: Input\n }], validateDrag: [{\n type: Input\n }], dragActiveClass: [{\n type: Input\n }], ghostElementAppendTo: [{\n type: Input\n }], ghostElementTemplate: [{\n type: Input\n }], touchStartLongPress: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} clientX\n * @param {?} clientY\n * @param {?} rect\n * @return {?}\n */\nfunction isCoordinateWithinRectangle(clientX, clientY, rect) {\n return (clientX >= rect.left &&\n clientX <= rect.right &&\n clientY >= rect.top &&\n clientY <= rect.bottom);\n}\nclass DroppableDirective {\n /**\n * @param {?} element\n * @param {?} draggableHelper\n * @param {?} zone\n * @param {?} renderer\n * @param {?} scrollContainer\n */\n constructor(element, draggableHelper, zone, renderer, scrollContainer) {\n this.element = element;\n this.draggableHelper = draggableHelper;\n this.zone = zone;\n this.renderer = renderer;\n this.scrollContainer = scrollContainer;\n /**\n * Called when a draggable element starts overlapping the element\n */\n this.dragEnter = new EventEmitter();\n /**\n * Called when a draggable element stops overlapping the element\n */\n this.dragLeave = new EventEmitter();\n /**\n * Called when a draggable element is moved over the element\n */\n this.dragOver = new EventEmitter();\n /**\n * Called when a draggable element is dropped on this element\n */\n this.drop = new EventEmitter(); // tslint:disable-line no-output-named-after-standard-event\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.currentDragSubscription = this.draggableHelper.currentDrag.subscribe((/**\n * @param {?} drag$\n * @return {?}\n */\n (drag$) => {\n addClass(this.renderer, this.element, this.dragActiveClass);\n /** @type {?} */\n const droppableElement = {\n updateCache: true,\n };\n /** @type {?} */\n const deregisterScrollListener = this.renderer.listen(this.scrollContainer\n ? this.scrollContainer.elementRef.nativeElement\n : 'window', 'scroll', (/**\n * @return {?}\n */\n () => {\n droppableElement.updateCache = true;\n }));\n /** @type {?} */\n let currentDragDropData;\n /** @type {?} */\n const overlaps$ = drag$.pipe(map((/**\n * @param {?} __0\n * @return {?}\n */\n ({ clientX, clientY, dropData, target }) => {\n currentDragDropData = dropData;\n if (droppableElement.updateCache) {\n droppableElement.rect = this.element.nativeElement.getBoundingClientRect();\n if (this.scrollContainer) {\n droppableElement.scrollContainerRect = this.scrollContainer.elementRef.nativeElement.getBoundingClientRect();\n }\n droppableElement.updateCache = false;\n }\n /** @type {?} */\n const isWithinElement = isCoordinateWithinRectangle(clientX, clientY, (/** @type {?} */ (droppableElement.rect)));\n /** @type {?} */\n const isDropAllowed = !this.validateDrop ||\n this.validateDrop({ clientX, clientY, target });\n if (droppableElement.scrollContainerRect) {\n return (isWithinElement &&\n isDropAllowed &&\n isCoordinateWithinRectangle(clientX, clientY, (/** @type {?} */ (droppableElement.scrollContainerRect))));\n }\n else {\n return isWithinElement && isDropAllowed;\n }\n })));\n /** @type {?} */\n const overlapsChanged$ = overlaps$.pipe(distinctUntilChanged());\n /** @type {?} */\n let dragOverActive;\n overlapsChanged$\n .pipe(filter((/**\n * @param {?} overlapsNow\n * @return {?}\n */\n (overlapsNow) => overlapsNow)))\n .subscribe((/**\n * @return {?}\n */\n () => {\n dragOverActive = true;\n addClass(this.renderer, this.element, this.dragOverClass);\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.dragEnter.next({\n dropData: currentDragDropData,\n });\n }));\n }));\n overlaps$.pipe(filter((/**\n * @param {?} overlapsNow\n * @return {?}\n */\n (overlapsNow) => overlapsNow))).subscribe((/**\n * @return {?}\n */\n () => {\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.dragOver.next({\n dropData: currentDragDropData,\n });\n }));\n }));\n overlapsChanged$\n .pipe(pairwise(), filter((/**\n * @param {?} __0\n * @return {?}\n */\n ([didOverlap, overlapsNow]) => didOverlap && !overlapsNow)))\n .subscribe((/**\n * @return {?}\n */\n () => {\n dragOverActive = false;\n removeClass(this.renderer, this.element, this.dragOverClass);\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.dragLeave.next({\n dropData: currentDragDropData,\n });\n }));\n }));\n drag$.subscribe({\n complete: (/**\n * @return {?}\n */\n () => {\n deregisterScrollListener();\n removeClass(this.renderer, this.element, this.dragActiveClass);\n if (dragOverActive) {\n removeClass(this.renderer, this.element, this.dragOverClass);\n this.zone.run((/**\n * @return {?}\n */\n () => {\n this.drop.next({\n dropData: currentDragDropData,\n });\n }));\n }\n }),\n });\n }));\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n if (this.currentDragSubscription) {\n this.currentDragSubscription.unsubscribe();\n }\n }\n}\nDroppableDirective.ɵfac = function DroppableDirective_Factory(t) { return new (t || DroppableDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(DraggableHelper), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(DraggableScrollContainerDirective, 8)); };\nDroppableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: DroppableDirective, selectors: [[\"\", \"mwlDroppable\", \"\"]], inputs: { dragOverClass: \"dragOverClass\", dragActiveClass: \"dragActiveClass\", validateDrop: \"validateDrop\" }, outputs: { dragEnter: \"dragEnter\", dragLeave: \"dragLeave\", dragOver: \"dragOver\", drop: \"drop\" } });\n/** @nocollapse */\nDroppableDirective.ctorParameters = () => [\n { type: ElementRef },\n { type: DraggableHelper },\n { type: NgZone },\n { type: Renderer2 },\n { type: DraggableScrollContainerDirective, decorators: [{ type: Optional }] }\n];\nDroppableDirective.propDecorators = {\n dragOverClass: [{ type: Input }],\n dragActiveClass: [{ type: Input }],\n validateDrop: [{ type: Input }],\n dragEnter: [{ type: Output }],\n dragLeave: [{ type: Output }],\n dragOver: [{ type: Output }],\n drop: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DroppableDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlDroppable]'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: DraggableHelper }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.Renderer2 }, { type: DraggableScrollContainerDirective, decorators: [{\n type: Optional\n }] }]; }, { dragEnter: [{\n type: Output\n }], dragLeave: [{\n type: Output\n }], dragOver: [{\n type: Output\n }], drop: [{\n type: Output\n }], dragOverClass: [{\n type: Input\n }], dragActiveClass: [{\n type: Input\n }], validateDrop: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass DragAndDropModule {\n}\nDragAndDropModule.ɵfac = function DragAndDropModule_Factory(t) { return new (t || DragAndDropModule)(); };\nDragAndDropModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: DragAndDropModule });\nDragAndDropModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DragAndDropModule, [{\n type: NgModule,\n args: [{\n declarations: [\n DraggableDirective,\n DroppableDirective,\n DraggableScrollContainerDirective,\n ],\n exports: [\n DraggableDirective,\n DroppableDirective,\n DraggableScrollContainerDirective,\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(DragAndDropModule, { declarations: [DraggableDirective, DroppableDirective, DraggableScrollContainerDirective], exports: [DraggableDirective, DroppableDirective, DraggableScrollContainerDirective] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { DragAndDropModule, DraggableHelper as ɵc, DraggableScrollContainerDirective as ɵd, DraggableDirective as ɵb, DroppableDirective as ɵa };\n\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nexport var DAYS_OF_WEEK;\n(function (DAYS_OF_WEEK) {\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"SUNDAY\"] = 0] = \"SUNDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"MONDAY\"] = 1] = \"MONDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"TUESDAY\"] = 2] = \"TUESDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"WEDNESDAY\"] = 3] = \"WEDNESDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"THURSDAY\"] = 4] = \"THURSDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"FRIDAY\"] = 5] = \"FRIDAY\";\n DAYS_OF_WEEK[DAYS_OF_WEEK[\"SATURDAY\"] = 6] = \"SATURDAY\";\n})(DAYS_OF_WEEK || (DAYS_OF_WEEK = {}));\nvar DEFAULT_WEEKEND_DAYS = [\n DAYS_OF_WEEK.SUNDAY,\n DAYS_OF_WEEK.SATURDAY,\n];\nvar DAYS_IN_WEEK = 7;\nvar HOURS_IN_DAY = 24;\nvar MINUTES_IN_HOUR = 60;\nexport var SECONDS_IN_DAY = 60 * 60 * 24;\nfunction getExcludedSeconds(dateAdapter, _a) {\n var startDate = _a.startDate, seconds = _a.seconds, excluded = _a.excluded, precision = _a.precision;\n if (excluded.length < 1) {\n return 0;\n }\n var addSeconds = dateAdapter.addSeconds, getDay = dateAdapter.getDay, addDays = dateAdapter.addDays;\n var endDate = addSeconds(startDate, seconds - 1);\n var dayStart = getDay(startDate);\n var dayEnd = getDay(endDate);\n var result = 0; // Calculated in seconds\n var current = startDate;\n var _loop_1 = function () {\n var day = getDay(current);\n if (excluded.some(function (excludedDay) { return excludedDay === day; })) {\n result += calculateExcludedSeconds(dateAdapter, {\n dayStart: dayStart,\n dayEnd: dayEnd,\n day: day,\n precision: precision,\n startDate: startDate,\n endDate: endDate,\n });\n }\n current = addDays(current, 1);\n };\n while (current < endDate) {\n _loop_1();\n }\n return result;\n}\nfunction calculateExcludedSeconds(dateAdapter, _a) {\n var precision = _a.precision, day = _a.day, dayStart = _a.dayStart, dayEnd = _a.dayEnd, startDate = _a.startDate, endDate = _a.endDate;\n var differenceInSeconds = dateAdapter.differenceInSeconds, endOfDay = dateAdapter.endOfDay, startOfDay = dateAdapter.startOfDay;\n if (precision === 'minutes') {\n if (day === dayStart) {\n return differenceInSeconds(endOfDay(startDate), startDate) + 1;\n }\n else if (day === dayEnd) {\n return differenceInSeconds(endDate, startOfDay(endDate)) + 1;\n }\n }\n return SECONDS_IN_DAY;\n}\nfunction getWeekViewEventSpan(dateAdapter, _a) {\n var event = _a.event, offset = _a.offset, startOfWeekDate = _a.startOfWeekDate, excluded = _a.excluded, precision = _a.precision, totalDaysInView = _a.totalDaysInView;\n var max = dateAdapter.max, differenceInSeconds = dateAdapter.differenceInSeconds, addDays = dateAdapter.addDays, endOfDay = dateAdapter.endOfDay, differenceInDays = dateAdapter.differenceInDays;\n var span = SECONDS_IN_DAY;\n var begin = max([event.start, startOfWeekDate]);\n if (event.end) {\n switch (precision) {\n case 'minutes':\n span = differenceInSeconds(event.end, begin);\n break;\n default:\n span =\n differenceInDays(addDays(endOfDay(event.end), 1), begin) *\n SECONDS_IN_DAY;\n break;\n }\n }\n var offsetSeconds = offset * SECONDS_IN_DAY;\n var totalLength = offsetSeconds + span;\n // the best way to detect if an event is outside the week-view\n // is to check if the total span beginning (from startOfWeekDay or event start) exceeds the total days in the view\n var secondsInView = totalDaysInView * SECONDS_IN_DAY;\n if (totalLength > secondsInView) {\n span = secondsInView - offsetSeconds;\n }\n span -= getExcludedSeconds(dateAdapter, {\n startDate: begin,\n seconds: span,\n excluded: excluded,\n precision: precision,\n });\n return span / SECONDS_IN_DAY;\n}\nfunction getWeekViewEventOffset(dateAdapter, _a) {\n var event = _a.event, startOfWeekDate = _a.startOfWeek, excluded = _a.excluded, precision = _a.precision;\n var differenceInDays = dateAdapter.differenceInDays, startOfDay = dateAdapter.startOfDay, differenceInSeconds = dateAdapter.differenceInSeconds;\n if (event.start < startOfWeekDate) {\n return 0;\n }\n var offset = 0;\n switch (precision) {\n case 'days':\n offset =\n differenceInDays(startOfDay(event.start), startOfWeekDate) *\n SECONDS_IN_DAY;\n break;\n case 'minutes':\n offset = differenceInSeconds(event.start, startOfWeekDate);\n break;\n }\n offset -= getExcludedSeconds(dateAdapter, {\n startDate: startOfWeekDate,\n seconds: offset,\n excluded: excluded,\n precision: precision,\n });\n return Math.abs(offset / SECONDS_IN_DAY);\n}\nfunction isEventIsPeriod(dateAdapter, _a) {\n var event = _a.event, periodStart = _a.periodStart, periodEnd = _a.periodEnd;\n var isSameSecond = dateAdapter.isSameSecond;\n var eventStart = event.start;\n var eventEnd = event.end || event.start;\n if (eventStart > periodStart && eventStart < periodEnd) {\n return true;\n }\n if (eventEnd > periodStart && eventEnd < periodEnd) {\n return true;\n }\n if (eventStart < periodStart && eventEnd > periodEnd) {\n return true;\n }\n if (isSameSecond(eventStart, periodStart) ||\n isSameSecond(eventStart, periodEnd)) {\n return true;\n }\n if (isSameSecond(eventEnd, periodStart) ||\n isSameSecond(eventEnd, periodEnd)) {\n return true;\n }\n return false;\n}\nexport function getEventsInPeriod(dateAdapter, _a) {\n var events = _a.events, periodStart = _a.periodStart, periodEnd = _a.periodEnd;\n return events.filter(function (event) {\n return isEventIsPeriod(dateAdapter, { event: event, periodStart: periodStart, periodEnd: periodEnd });\n });\n}\nfunction getWeekDay(dateAdapter, _a) {\n var date = _a.date, _b = _a.weekendDays, weekendDays = _b === void 0 ? DEFAULT_WEEKEND_DAYS : _b;\n var startOfDay = dateAdapter.startOfDay, isSameDay = dateAdapter.isSameDay, getDay = dateAdapter.getDay;\n var today = startOfDay(new Date());\n var day = getDay(date);\n return {\n date: date,\n day: day,\n isPast: date < today,\n isToday: isSameDay(date, today),\n isFuture: date > today,\n isWeekend: weekendDays.indexOf(day) > -1,\n };\n}\nexport function getWeekViewHeader(dateAdapter, _a) {\n var viewDate = _a.viewDate, weekStartsOn = _a.weekStartsOn, _b = _a.excluded, excluded = _b === void 0 ? [] : _b, weekendDays = _a.weekendDays, _c = _a.viewStart, viewStart = _c === void 0 ? dateAdapter.startOfWeek(viewDate, { weekStartsOn: weekStartsOn }) : _c, _d = _a.viewEnd, viewEnd = _d === void 0 ? dateAdapter.addDays(viewStart, DAYS_IN_WEEK) : _d;\n var addDays = dateAdapter.addDays, getDay = dateAdapter.getDay;\n var days = [];\n var date = viewStart;\n while (date < viewEnd) {\n if (!excluded.some(function (e) { return getDay(date) === e; })) {\n days.push(getWeekDay(dateAdapter, { date: date, weekendDays: weekendDays }));\n }\n date = addDays(date, 1);\n }\n return days;\n}\nexport function getDifferenceInDaysWithExclusions(dateAdapter, _a) {\n var date1 = _a.date1, date2 = _a.date2, excluded = _a.excluded;\n var date = date1;\n var diff = 0;\n while (date < date2) {\n if (excluded.indexOf(dateAdapter.getDay(date)) === -1) {\n diff++;\n }\n date = dateAdapter.addDays(date, 1);\n }\n return diff;\n}\nexport function getAllDayWeekEvents(dateAdapter, _a) {\n var _b = _a.events, events = _b === void 0 ? [] : _b, _c = _a.excluded, excluded = _c === void 0 ? [] : _c, _d = _a.precision, precision = _d === void 0 ? 'days' : _d, _e = _a.absolutePositionedEvents, absolutePositionedEvents = _e === void 0 ? false : _e, viewStart = _a.viewStart, viewEnd = _a.viewEnd;\n viewStart = dateAdapter.startOfDay(viewStart);\n viewEnd = dateAdapter.endOfDay(viewEnd);\n var differenceInSeconds = dateAdapter.differenceInSeconds, differenceInDays = dateAdapter.differenceInDays;\n var maxRange = getDifferenceInDaysWithExclusions(dateAdapter, {\n date1: viewStart,\n date2: viewEnd,\n excluded: excluded,\n });\n var totalDaysInView = differenceInDays(viewEnd, viewStart) + 1;\n var eventsMapped = events\n .filter(function (event) { return event.allDay; })\n .map(function (event) {\n var offset = getWeekViewEventOffset(dateAdapter, {\n event: event,\n startOfWeek: viewStart,\n excluded: excluded,\n precision: precision,\n });\n var span = getWeekViewEventSpan(dateAdapter, {\n event: event,\n offset: offset,\n startOfWeekDate: viewStart,\n excluded: excluded,\n precision: precision,\n totalDaysInView: totalDaysInView,\n });\n return { event: event, offset: offset, span: span };\n })\n .filter(function (e) { return e.offset < maxRange; })\n .filter(function (e) { return e.span > 0; })\n .map(function (entry) { return ({\n event: entry.event,\n offset: entry.offset,\n span: entry.span,\n startsBeforeWeek: entry.event.start < viewStart,\n endsAfterWeek: (entry.event.end || entry.event.start) > viewEnd,\n }); })\n .sort(function (itemA, itemB) {\n var startSecondsDiff = differenceInSeconds(itemA.event.start, itemB.event.start);\n if (startSecondsDiff === 0) {\n return differenceInSeconds(itemB.event.end || itemB.event.start, itemA.event.end || itemA.event.start);\n }\n return startSecondsDiff;\n });\n var allDayEventRows = [];\n var allocatedEvents = [];\n eventsMapped.forEach(function (event, index) {\n if (allocatedEvents.indexOf(event) === -1) {\n allocatedEvents.push(event);\n var rowSpan_1 = event.span + event.offset;\n var otherRowEvents = eventsMapped\n .slice(index + 1)\n .filter(function (nextEvent) {\n if (nextEvent.offset >= rowSpan_1 &&\n rowSpan_1 + nextEvent.span <= totalDaysInView &&\n allocatedEvents.indexOf(nextEvent) === -1) {\n var nextEventOffset = nextEvent.offset - rowSpan_1;\n if (!absolutePositionedEvents) {\n nextEvent.offset = nextEventOffset;\n }\n rowSpan_1 += nextEvent.span + nextEventOffset;\n allocatedEvents.push(nextEvent);\n return true;\n }\n });\n var weekEvents = __spreadArrays([event], otherRowEvents);\n var id = weekEvents\n .filter(function (weekEvent) { return weekEvent.event.id; })\n .map(function (weekEvent) { return weekEvent.event.id; })\n .join('-');\n allDayEventRows.push(__assign({ row: weekEvents }, (id ? { id: id } : {})));\n }\n });\n return allDayEventRows;\n}\nfunction getWeekViewHourGrid(dateAdapter, _a) {\n var events = _a.events, viewDate = _a.viewDate, hourSegments = _a.hourSegments, hourDuration = _a.hourDuration, dayStart = _a.dayStart, dayEnd = _a.dayEnd, weekStartsOn = _a.weekStartsOn, excluded = _a.excluded, weekendDays = _a.weekendDays, segmentHeight = _a.segmentHeight, viewStart = _a.viewStart, viewEnd = _a.viewEnd, minimumEventHeight = _a.minimumEventHeight;\n var dayViewHourGrid = getDayViewHourGrid(dateAdapter, {\n viewDate: viewDate,\n hourSegments: hourSegments,\n hourDuration: hourDuration,\n dayStart: dayStart,\n dayEnd: dayEnd,\n });\n var weekDays = getWeekViewHeader(dateAdapter, {\n viewDate: viewDate,\n weekStartsOn: weekStartsOn,\n excluded: excluded,\n weekendDays: weekendDays,\n viewStart: viewStart,\n viewEnd: viewEnd,\n });\n var setHours = dateAdapter.setHours, setMinutes = dateAdapter.setMinutes, getHours = dateAdapter.getHours, getMinutes = dateAdapter.getMinutes;\n return weekDays.map(function (day) {\n var dayView = getDayView(dateAdapter, {\n events: events,\n viewDate: day.date,\n hourSegments: hourSegments,\n dayStart: dayStart,\n dayEnd: dayEnd,\n segmentHeight: segmentHeight,\n eventWidth: 1,\n hourDuration: hourDuration,\n minimumEventHeight: minimumEventHeight,\n });\n var hours = dayViewHourGrid.map(function (hour) {\n var segments = hour.segments.map(function (segment) {\n var date = setMinutes(setHours(day.date, getHours(segment.date)), getMinutes(segment.date));\n return __assign(__assign({}, segment), { date: date });\n });\n return __assign(__assign({}, hour), { segments: segments });\n });\n function getColumnCount(allEvents, prevOverlappingEvents) {\n var columnCount = Math.max.apply(Math, prevOverlappingEvents.map(function (iEvent) { return iEvent.left + 1; }));\n var nextOverlappingEvents = allEvents\n .filter(function (iEvent) { return iEvent.left >= columnCount; })\n .filter(function (iEvent) {\n return (getOverLappingWeekViewEvents(prevOverlappingEvents, iEvent.top, iEvent.top + iEvent.height).length > 0);\n });\n if (nextOverlappingEvents.length > 0) {\n return getColumnCount(allEvents, nextOverlappingEvents);\n }\n else {\n return columnCount;\n }\n }\n var mappedEvents = dayView.events.map(function (event) {\n var columnCount = getColumnCount(dayView.events, getOverLappingWeekViewEvents(dayView.events, event.top, event.top + event.height));\n var width = 100 / columnCount;\n return __assign(__assign({}, event), { left: event.left * width, width: width });\n });\n return {\n hours: hours,\n date: day.date,\n events: mappedEvents.map(function (event) {\n var overLappingEvents = getOverLappingWeekViewEvents(mappedEvents.filter(function (otherEvent) { return otherEvent.left > event.left; }), event.top, event.top + event.height);\n if (overLappingEvents.length > 0) {\n return __assign(__assign({}, event), { width: Math.min.apply(Math, overLappingEvents.map(function (otherEvent) { return otherEvent.left; })) - event.left });\n }\n return event;\n }),\n };\n });\n}\nexport function getWeekView(dateAdapter, _a) {\n var _b = _a.events, events = _b === void 0 ? [] : _b, viewDate = _a.viewDate, weekStartsOn = _a.weekStartsOn, _c = _a.excluded, excluded = _c === void 0 ? [] : _c, _d = _a.precision, precision = _d === void 0 ? 'days' : _d, _e = _a.absolutePositionedEvents, absolutePositionedEvents = _e === void 0 ? false : _e, hourSegments = _a.hourSegments, hourDuration = _a.hourDuration, dayStart = _a.dayStart, dayEnd = _a.dayEnd, weekendDays = _a.weekendDays, segmentHeight = _a.segmentHeight, minimumEventHeight = _a.minimumEventHeight, _f = _a.viewStart, viewStart = _f === void 0 ? dateAdapter.startOfWeek(viewDate, { weekStartsOn: weekStartsOn }) : _f, _g = _a.viewEnd, viewEnd = _g === void 0 ? dateAdapter.endOfWeek(viewDate, { weekStartsOn: weekStartsOn }) : _g;\n if (!events) {\n events = [];\n }\n var startOfDay = dateAdapter.startOfDay, endOfDay = dateAdapter.endOfDay;\n viewStart = startOfDay(viewStart);\n viewEnd = endOfDay(viewEnd);\n var eventsInPeriod = getEventsInPeriod(dateAdapter, {\n events: events,\n periodStart: viewStart,\n periodEnd: viewEnd,\n });\n var header = getWeekViewHeader(dateAdapter, {\n viewDate: viewDate,\n weekStartsOn: weekStartsOn,\n excluded: excluded,\n weekendDays: weekendDays,\n viewStart: viewStart,\n viewEnd: viewEnd,\n });\n return {\n allDayEventRows: getAllDayWeekEvents(dateAdapter, {\n events: eventsInPeriod,\n excluded: excluded,\n precision: precision,\n absolutePositionedEvents: absolutePositionedEvents,\n viewStart: viewStart,\n viewEnd: viewEnd,\n }),\n period: {\n events: eventsInPeriod,\n start: header[0].date,\n end: endOfDay(header[header.length - 1].date),\n },\n hourColumns: getWeekViewHourGrid(dateAdapter, {\n events: events,\n viewDate: viewDate,\n hourSegments: hourSegments,\n hourDuration: hourDuration,\n dayStart: dayStart,\n dayEnd: dayEnd,\n weekStartsOn: weekStartsOn,\n excluded: excluded,\n weekendDays: weekendDays,\n segmentHeight: segmentHeight,\n viewStart: viewStart,\n viewEnd: viewEnd,\n minimumEventHeight: minimumEventHeight,\n }),\n };\n}\nexport function getMonthView(dateAdapter, _a) {\n var _b = _a.events, events = _b === void 0 ? [] : _b, viewDate = _a.viewDate, weekStartsOn = _a.weekStartsOn, _c = _a.excluded, excluded = _c === void 0 ? [] : _c, _d = _a.viewStart, viewStart = _d === void 0 ? dateAdapter.startOfMonth(viewDate) : _d, _e = _a.viewEnd, viewEnd = _e === void 0 ? dateAdapter.endOfMonth(viewDate) : _e, weekendDays = _a.weekendDays;\n if (!events) {\n events = [];\n }\n var startOfWeek = dateAdapter.startOfWeek, endOfWeek = dateAdapter.endOfWeek, differenceInDays = dateAdapter.differenceInDays, startOfDay = dateAdapter.startOfDay, addHours = dateAdapter.addHours, endOfDay = dateAdapter.endOfDay, isSameMonth = dateAdapter.isSameMonth, getDay = dateAdapter.getDay, getMonth = dateAdapter.getMonth;\n var start = startOfWeek(viewStart, { weekStartsOn: weekStartsOn });\n var end = endOfWeek(viewEnd, { weekStartsOn: weekStartsOn });\n var eventsInMonth = getEventsInPeriod(dateAdapter, {\n events: events,\n periodStart: start,\n periodEnd: end,\n });\n var initialViewDays = [];\n var previousDate;\n var _loop_2 = function (i) {\n // hacky fix for https://github.com/mattlewis92/angular-calendar/issues/173\n var date;\n if (previousDate) {\n date = startOfDay(addHours(previousDate, HOURS_IN_DAY));\n if (previousDate.getTime() === date.getTime()) {\n // DST change, so need to add 25 hours\n /* istanbul ignore next */\n date = startOfDay(addHours(previousDate, HOURS_IN_DAY + 1));\n }\n previousDate = date;\n }\n else {\n date = previousDate = start;\n }\n if (!excluded.some(function (e) { return getDay(date) === e; })) {\n var day = getWeekDay(dateAdapter, {\n date: date,\n weekendDays: weekendDays,\n });\n var eventsInPeriod = getEventsInPeriod(dateAdapter, {\n events: eventsInMonth,\n periodStart: startOfDay(date),\n periodEnd: endOfDay(date),\n });\n day.inMonth = isSameMonth(date, viewDate);\n day.events = eventsInPeriod;\n day.badgeTotal = eventsInPeriod.length;\n initialViewDays.push(day);\n }\n };\n for (var i = 0; i < differenceInDays(end, start) + 1; i++) {\n _loop_2(i);\n }\n var days = [];\n var totalDaysVisibleInWeek = DAYS_IN_WEEK - excluded.length;\n if (totalDaysVisibleInWeek < DAYS_IN_WEEK) {\n for (var i = 0; i < initialViewDays.length; i += totalDaysVisibleInWeek) {\n var row = initialViewDays.slice(i, i + totalDaysVisibleInWeek);\n var isRowInMonth = row.some(function (day) { return viewStart <= day.date && day.date < viewEnd; });\n if (isRowInMonth) {\n days = __spreadArrays(days, row);\n }\n }\n }\n else {\n days = initialViewDays;\n }\n var rows = Math.floor(days.length / totalDaysVisibleInWeek);\n var rowOffsets = [];\n for (var i = 0; i < rows; i++) {\n rowOffsets.push(i * totalDaysVisibleInWeek);\n }\n return {\n rowOffsets: rowOffsets,\n totalDaysVisibleInWeek: totalDaysVisibleInWeek,\n days: days,\n period: {\n start: days[0].date,\n end: endOfDay(days[days.length - 1].date),\n events: eventsInMonth,\n },\n };\n}\nfunction getOverLappingWeekViewEvents(events, top, bottom) {\n return events.filter(function (previousEvent) {\n var previousEventTop = previousEvent.top;\n var previousEventBottom = previousEvent.top + previousEvent.height;\n if (top < previousEventBottom && previousEventBottom < bottom) {\n return true;\n }\n else if (top < previousEventTop && previousEventTop < bottom) {\n return true;\n }\n else if (previousEventTop <= top && bottom <= previousEventBottom) {\n return true;\n }\n return false;\n });\n}\nfunction getDayView(dateAdapter, _a) {\n var events = _a.events, viewDate = _a.viewDate, hourSegments = _a.hourSegments, dayStart = _a.dayStart, dayEnd = _a.dayEnd, eventWidth = _a.eventWidth, segmentHeight = _a.segmentHeight, hourDuration = _a.hourDuration, minimumEventHeight = _a.minimumEventHeight;\n var setMinutes = dateAdapter.setMinutes, setHours = dateAdapter.setHours, startOfDay = dateAdapter.startOfDay, startOfMinute = dateAdapter.startOfMinute, endOfDay = dateAdapter.endOfDay, differenceInMinutes = dateAdapter.differenceInMinutes;\n var startOfView = setMinutes(setHours(startOfDay(viewDate), sanitiseHours(dayStart.hour)), sanitiseMinutes(dayStart.minute));\n var endOfView = setMinutes(setHours(startOfMinute(endOfDay(viewDate)), sanitiseHours(dayEnd.hour)), sanitiseMinutes(dayEnd.minute));\n endOfView.setSeconds(59, 999);\n var previousDayEvents = [];\n var eventsInPeriod = getEventsInPeriod(dateAdapter, {\n events: events.filter(function (event) { return !event.allDay; }),\n periodStart: startOfView,\n periodEnd: endOfView,\n });\n var dayViewEvents = eventsInPeriod\n .sort(function (eventA, eventB) {\n return eventA.start.valueOf() - eventB.start.valueOf();\n })\n .map(function (event) {\n var eventStart = event.start;\n var eventEnd = event.end || eventStart;\n var startsBeforeDay = eventStart < startOfView;\n var endsAfterDay = eventEnd > endOfView;\n var hourHeightModifier = (hourSegments * segmentHeight) / (hourDuration || MINUTES_IN_HOUR);\n var top = 0;\n if (eventStart > startOfView) {\n // adjust the difference in minutes if the user's offset is different between the start of the day and the event (e.g. when going to or from DST)\n var eventOffset = eventStart.getTimezoneOffset();\n var startOffset = startOfView.getTimezoneOffset();\n var diff = startOffset - eventOffset;\n top += differenceInMinutes(eventStart, startOfView) + diff;\n }\n top *= hourHeightModifier;\n top = Math.floor(top);\n var startDate = startsBeforeDay ? startOfView : eventStart;\n var endDate = endsAfterDay ? endOfView : eventEnd;\n var timezoneOffset = startDate.getTimezoneOffset() - endDate.getTimezoneOffset();\n var height = differenceInMinutes(endDate, startDate) + timezoneOffset;\n if (!event.end) {\n height = segmentHeight;\n }\n else {\n height *= hourHeightModifier;\n }\n if (minimumEventHeight && height < minimumEventHeight) {\n height = minimumEventHeight;\n }\n height = Math.floor(height);\n var bottom = top + height;\n var overlappingPreviousEvents = getOverLappingWeekViewEvents(previousDayEvents, top, bottom);\n var left = 0;\n while (overlappingPreviousEvents.some(function (previousEvent) { return previousEvent.left === left; })) {\n left += eventWidth;\n }\n var dayEvent = {\n event: event,\n height: height,\n width: eventWidth,\n top: top,\n left: left,\n startsBeforeDay: startsBeforeDay,\n endsAfterDay: endsAfterDay,\n };\n previousDayEvents.push(dayEvent);\n return dayEvent;\n });\n var width = Math.max.apply(Math, dayViewEvents.map(function (event) { return event.left + event.width; }));\n var allDayEvents = getEventsInPeriod(dateAdapter, {\n events: events.filter(function (event) { return event.allDay; }),\n periodStart: startOfDay(startOfView),\n periodEnd: endOfDay(endOfView),\n });\n return {\n events: dayViewEvents,\n width: width,\n allDayEvents: allDayEvents,\n period: {\n events: eventsInPeriod,\n start: startOfView,\n end: endOfView,\n },\n };\n}\nfunction sanitiseHours(hours) {\n return Math.max(Math.min(23, hours), 0);\n}\nfunction sanitiseMinutes(minutes) {\n return Math.max(Math.min(59, minutes), 0);\n}\nfunction getDayViewHourGrid(dateAdapter, _a) {\n var viewDate = _a.viewDate, hourSegments = _a.hourSegments, hourDuration = _a.hourDuration, dayStart = _a.dayStart, dayEnd = _a.dayEnd;\n var setMinutes = dateAdapter.setMinutes, setHours = dateAdapter.setHours, startOfDay = dateAdapter.startOfDay, startOfMinute = dateAdapter.startOfMinute, endOfDay = dateAdapter.endOfDay, addMinutes = dateAdapter.addMinutes, addHours = dateAdapter.addHours, addDays = dateAdapter.addDays;\n var hours = [];\n var startOfView = setMinutes(setHours(startOfDay(viewDate), sanitiseHours(dayStart.hour)), sanitiseMinutes(dayStart.minute));\n var endOfView = setMinutes(setHours(startOfMinute(endOfDay(viewDate)), sanitiseHours(dayEnd.hour)), sanitiseMinutes(dayEnd.minute));\n var segmentDuration = (hourDuration || MINUTES_IN_HOUR) / hourSegments;\n var startOfViewDay = startOfDay(viewDate);\n var endOfViewDay = endOfDay(viewDate);\n var dateAdjustment = function (d) { return d; };\n // this means that we change from or to DST on this day and that's going to cause problems so we bump the date\n if (startOfViewDay.getTimezoneOffset() !== endOfViewDay.getTimezoneOffset()) {\n startOfViewDay = addDays(startOfViewDay, 1);\n startOfView = addDays(startOfView, 1);\n endOfView = addDays(endOfView, 1);\n dateAdjustment = function (d) { return addDays(d, -1); };\n }\n var dayDuration = hourDuration\n ? (HOURS_IN_DAY * 60) / hourDuration\n : MINUTES_IN_HOUR;\n for (var i = 0; i < dayDuration; i++) {\n var segments = [];\n for (var j = 0; j < hourSegments; j++) {\n var date = addMinutes(addMinutes(startOfView, i * (hourDuration || MINUTES_IN_HOUR)), j * segmentDuration);\n if (date >= startOfView && date < endOfView) {\n segments.push({\n date: dateAdjustment(date),\n displayDate: date,\n isStart: j === 0,\n });\n }\n }\n if (segments.length > 0) {\n hours.push({ segments: segments });\n }\n }\n return hours;\n}\nexport var EventValidationErrorMessage;\n(function (EventValidationErrorMessage) {\n EventValidationErrorMessage[\"NotArray\"] = \"Events must be an array\";\n EventValidationErrorMessage[\"StartPropertyMissing\"] = \"Event is missing the `start` property\";\n EventValidationErrorMessage[\"StartPropertyNotDate\"] = \"Event `start` property should be a javascript date object. Do `new Date(event.start)` to fix it.\";\n EventValidationErrorMessage[\"EndPropertyNotDate\"] = \"Event `end` property should be a javascript date object. Do `new Date(event.end)` to fix it.\";\n EventValidationErrorMessage[\"EndsBeforeStart\"] = \"Event `start` property occurs after the `end`\";\n})(EventValidationErrorMessage || (EventValidationErrorMessage = {}));\nexport function validateEvents(events, log) {\n var isValid = true;\n function isError(msg, event) {\n log(msg, event);\n isValid = false;\n }\n if (!Array.isArray(events)) {\n log(EventValidationErrorMessage.NotArray, events);\n return false;\n }\n events.forEach(function (event) {\n if (!event.start) {\n isError(EventValidationErrorMessage.StartPropertyMissing, event);\n }\n else if (!(event.start instanceof Date)) {\n isError(EventValidationErrorMessage.StartPropertyNotDate, event);\n }\n if (event.end) {\n if (!(event.end instanceof Date)) {\n isError(EventValidationErrorMessage.EndPropertyNotDate, event);\n }\n if (event.start > event.end) {\n isError(EventValidationErrorMessage.EndsBeforeStart, event);\n }\n }\n });\n return isValid;\n}\n","import { addDays, addHours, addMinutes, addSeconds, differenceInDays, differenceInMinutes, differenceInSeconds, endOfDay, endOfMonth, endOfWeek, getDay, getMonth, isSameDay, isSameMonth, isSameSecond, max, setHours, setMinutes, startOfDay, startOfMinute, startOfMonth, startOfWeek, getHours, getMinutes, } from 'date-fns';\nexport function adapterFactory() {\n return {\n addDays: addDays,\n addHours: addHours,\n addMinutes: addMinutes,\n addSeconds: addSeconds,\n differenceInDays: differenceInDays,\n differenceInMinutes: differenceInMinutes,\n differenceInSeconds: differenceInSeconds,\n endOfDay: endOfDay,\n endOfMonth: endOfMonth,\n endOfWeek: endOfWeek,\n getDay: getDay,\n getMonth: getMonth,\n isSameDay: isSameDay,\n isSameMonth: isSameMonth,\n isSameSecond: isSameSecond,\n max: max,\n setHours: setHours,\n setMinutes: setMinutes,\n startOfDay: startOfDay,\n startOfMinute: startOfMinute,\n startOfMonth: startOfMonth,\n startOfWeek: startOfWeek,\n getHours: getHours,\n getMinutes: getMinutes,\n };\n}\n","import { EventEmitter, Directive, ElementRef, Input, Output, HostListener, IterableDiffers, NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport * as ɵngcc0 from '@angular/core';\nconst isFileInput = function (elm) {\n const ty = elm.getAttribute('type');\n return elm.tagName.toLowerCase() === 'input' && ty && ty.toLowerCase() === 'file';\n};\nlet initialTouchStartY = 0;\nlet initialTouchStartX = 0;\nconst detectSwipe = function (evt) {\n var touches = evt.changedTouches || (evt.originalEvent && evt.originalEvent.changedTouches);\n if (touches) {\n if (evt.type === 'touchstart') {\n initialTouchStartX = touches[0].clientX;\n initialTouchStartY = touches[0].clientY;\n return true; // don't block event default\n }\n else {\n // prevent scroll from triggering event\n if (evt.type === 'touchend') {\n var currentX = touches[0].clientX;\n var currentY = touches[0].clientY;\n if ((Math.abs(currentX - initialTouchStartX) > 20) ||\n (Math.abs(currentY - initialTouchStartY) > 20)) {\n evt.stopPropagation();\n if (evt.cancelable) {\n evt.preventDefault();\n }\n return false;\n }\n }\n return true;\n }\n }\n return false;\n};\nconst createInvisibleFileInputWrap = function () {\n var fileElem = createFileInput();\n var label = document.createElement('label');\n label.innerHTML = 'upload';\n label.style.visibility = 'hidden';\n label.style.position = 'absolute';\n label.style.overflow = 'hidden';\n label.style.width = '0px';\n label.style.height = '0px';\n label.style.border = 'none';\n label.style.margin = '0px';\n label.style.padding = '0px';\n label.setAttribute('tabindex', '-1');\n //bindAttrToFileInput(fileElem, label);\n //generatedElems.push({el: elem, ref: label});\n label.appendChild(fileElem);\n //document.body.appendChild( label );\n return label;\n};\nconst createFileInput = function () {\n var fileElem = document.createElement('input');\n fileElem.type = \"file\";\n return fileElem;\n};\n\nfunction getWindow() { return window; }\nfunction acceptType(accept, type, name) {\n if (!accept) {\n return true;\n }\n const defs = accept.split(',');\n let regx;\n let acceptRegString;\n for (let x = defs.length - 1; x >= 0; --x) {\n //Escapes dots in mimetype \n acceptRegString = defs[x];\n //trim\n acceptRegString = acceptRegString.replace(/(^\\s+|\\s+$)/g, '');\n //Escapes stars in mimetype \n acceptRegString = acceptRegString.replace(/\\*/g, '.*');\n //let acceptReg = '^((' + acceptRegString\n //acceptReg = acceptReg.replace(/,/g,')|(') + '))$'\n //try by mime\n regx = new RegExp(acceptRegString, 'gi');\n if (type.search(regx) >= 0) {\n return true;\n }\n //try by ext\n if (acceptRegString.substring(0, 1) == '.') {\n acceptRegString = '\\\\' + acceptRegString; //.substring(1, acceptRegString.length-1)//remove dot at front\n regx = new RegExp(acceptRegString + '$', 'i');\n if ((name || type).search(regx) >= 0) {\n return true;\n }\n }\n }\n return false;\n}\nfunction arrayBufferToBase64(buffer) {\n var binary = '';\n var bytes = new Uint8Array(buffer);\n var len = bytes.byteLength;\n for (var i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n}\nfunction dataUrltoBlob(dataurl, name, origSize) {\n var arr = dataurl.split(',');\n var mimeMatch = arr[0].match(/:(.*?);/);\n var mime = mimeMatch ? mimeMatch[1] : 'text/plain';\n var bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n var blob = new window.Blob([u8arr], { type: mime });\n blob[\"name\"] = name;\n blob[\"$ngfOrigSize\"] = origSize;\n return blob;\n}\nfunction applyTransform(ctx, orientation, width, height) {\n switch (orientation) {\n case 2:\n return ctx.transform(-1, 0, 0, 1, width, 0);\n case 3:\n return ctx.transform(-1, 0, 0, -1, width, height);\n case 4:\n return ctx.transform(1, 0, 0, -1, 0, height);\n case 5:\n return ctx.transform(0, 1, 1, 0, 0, 0);\n case 6:\n return ctx.transform(0, 1, -1, 0, height, 0);\n case 7:\n return ctx.transform(0, -1, -1, 0, height, width);\n case 8:\n return ctx.transform(0, -1, 1, 0, 0, width);\n }\n}\nfunction fixFileOrientationByMeta(file, result) {\n return dataUrl(file, true)\n .then(url => {\n var canvas = document.createElement('canvas');\n var img = document.createElement('img');\n return new Promise(function (res, rej) {\n img.onload = function () {\n try {\n canvas.width = result.orientation > 4 ? img.height : img.width;\n canvas.height = result.orientation > 4 ? img.width : img.height;\n var ctx = canvas.getContext('2d');\n applyTransform(ctx, result.orientation, img.width, img.height);\n ctx.drawImage(img, 0, 0);\n var dataUrl = canvas.toDataURL(file.type || 'image/WebP', 0.934);\n const base = arrayBufferToBase64(result.fixedArrayBuffer);\n dataUrl = restoreExif(base, dataUrl);\n var blob = dataUrltoBlob(dataUrl, file.name);\n const newFile = blobToFile(blob, file.name);\n res(newFile);\n }\n catch (e) {\n rej(e);\n }\n };\n img.onerror = rej;\n img.src = url;\n });\n });\n}\nfunction applyExifRotation(file) {\n if (file.type.indexOf('image/jpeg') !== 0) {\n return Promise.resolve(file);\n }\n return readOrientation(file)\n .then((result) => {\n if (result.orientation < 2 || result.orientation > 8) {\n return file;\n }\n return fixFileOrientationByMeta(file, result);\n });\n}\nfunction readOrientation(file) {\n return new Promise((res, rej) => {\n var reader = new FileReader();\n var slicedFile = file.slice ? file.slice(0, 64 * 1024) : file;\n reader.readAsArrayBuffer(slicedFile);\n reader.onerror = rej;\n reader.onload = function (e) {\n var result = { orientation: 1 };\n var view = new DataView(this.result);\n if (view.getUint16(0, false) !== 0xFFD8)\n return res(result);\n var length = view.byteLength, offset = 2;\n while (offset < length) {\n var marker = view.getUint16(offset, false);\n offset += 2;\n if (marker === 0xFFE1) {\n if (view.getUint32(offset += 2, false) !== 0x45786966)\n return res(result);\n var little = view.getUint16(offset += 6, false) === 0x4949;\n offset += view.getUint32(offset + 4, little);\n var tags = view.getUint16(offset, little);\n offset += 2;\n for (var i = 0; i < tags; i++)\n if (view.getUint16(offset + (i * 12), little) === 0x0112) {\n var orientation = view.getUint16(offset + (i * 12) + 8, little);\n if (orientation >= 2 && orientation <= 8) {\n view.setUint16(offset + (i * 12) + 8, 1, little);\n result.fixedArrayBuffer = e.target.result;\n }\n result.orientation = orientation;\n return res(result);\n }\n }\n else if ((marker & 0xFF00) !== 0xFF00)\n break;\n else\n offset += view.getUint16(offset, false);\n }\n return res(result);\n };\n });\n}\n/** converts file-input file into base64 dataUri */\nfunction dataUrl(file, disallowObjectUrl) {\n if (!file)\n return Promise.resolve(file);\n if ((disallowObjectUrl && file.$ngfDataUrl != null) || (!disallowObjectUrl && file.$ngfBlobUrl != null)) {\n return Promise.resolve(disallowObjectUrl ? file.$ngfDataUrl : file.$ngfBlobUrl);\n }\n var p = disallowObjectUrl ? file.$$ngfDataUrlPromise : file.$$ngfBlobUrlPromise;\n if (p)\n return p;\n const win = getWindow();\n let deferred;\n if (win.FileReader && file &&\n (!win.FileAPI || navigator.userAgent.indexOf('MSIE 8') === -1 || file.size < 20000) &&\n (!win.FileAPI || navigator.userAgent.indexOf('MSIE 9') === -1 || file.size < 4000000)) {\n //prefer URL.createObjectURL for handling refrences to files of all sizes\n //since it doesn´t build a large string in memory\n var URL = win.URL || win.webkitURL;\n if (FileReader) {\n deferred = new Promise((res, rej) => {\n var fileReader = new FileReader();\n fileReader.onload = function (event) {\n file.$ngfDataUrl = event.target.result;\n delete file.$ngfDataUrl;\n res(event.target.result);\n };\n fileReader.onerror = function (e) {\n file.$ngfDataUrl = '';\n rej(e);\n };\n fileReader.readAsDataURL(file);\n });\n }\n else {\n var url;\n try {\n url = URL.createObjectURL(file);\n }\n catch (e) {\n return Promise.reject(e);\n }\n deferred = Promise.resolve(url);\n file.$ngfBlobUrl = url;\n }\n }\n else {\n file[disallowObjectUrl ? '$ngfDataUrl' : '$ngfBlobUrl'] = '';\n return Promise.reject(new Error('Browser does not support window.FileReader, window.FileReader, or window.FileAPI')); //deferred.reject();\n }\n if (disallowObjectUrl) {\n p = file.$$ngfDataUrlPromise = deferred;\n }\n else {\n p = file.$$ngfBlobUrlPromise = deferred;\n }\n p = p.then((x) => {\n delete file[disallowObjectUrl ? '$$ngfDataUrlPromise' : '$$ngfBlobUrlPromise'];\n return x;\n });\n return p;\n}\nfunction restoreExif(orig, resized) {\n var ExifRestorer = {\n KEY_STR: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n };\n ExifRestorer.encode64 = function (input) {\n var output = '', chr1, chr2, chr3 = '', enc1, enc2, enc3, enc4 = '', i = 0;\n do {\n chr1 = input[i++];\n chr2 = input[i++];\n chr3 = input[i++];\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n enc4 = chr3 & 63;\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n }\n else if (isNaN(chr3)) {\n enc4 = 64;\n }\n output = output +\n this.KEY_STR.charAt(enc1) +\n this.KEY_STR.charAt(enc2) +\n this.KEY_STR.charAt(enc3) +\n this.KEY_STR.charAt(enc4);\n chr1 = chr2 = chr3 = '';\n enc1 = enc2 = enc3 = enc4 = '';\n } while (i < input.length);\n return output;\n };\n ExifRestorer.restore = function (origFileBase64, resizedFileBase64) {\n if (origFileBase64.match('data:image/jpeg;base64,')) {\n origFileBase64 = origFileBase64.replace('data:image/jpeg;base64,', '');\n }\n var rawImage = this.decode64(origFileBase64);\n var segments = this.slice2Segments(rawImage);\n var image = this.exifManipulation(resizedFileBase64, segments);\n return 'data:image/jpeg;base64,' + this.encode64(image);\n };\n ExifRestorer.exifManipulation = function (resizedFileBase64, segments) {\n var exifArray = this.getExifArray(segments), newImageArray = this.insertExif(resizedFileBase64, exifArray);\n return new Uint8Array(newImageArray);\n };\n ExifRestorer.getExifArray = function (segments) {\n var seg;\n for (var x = 0; x < segments.length; x++) {\n seg = segments[x];\n if (seg[0] === 255 && seg[1] === 225) //(ff e1)\n {\n return seg;\n }\n }\n return [];\n };\n ExifRestorer.insertExif = function (resizedFileBase64, exifArray) {\n var imageData = resizedFileBase64.replace('data:image/jpeg;base64,', ''), buf = this.decode64(imageData), separatePoint = buf.indexOf(255, 3), mae = buf.slice(0, separatePoint), ato = buf.slice(separatePoint), array = mae;\n array = array.concat(exifArray);\n array = array.concat(ato);\n return array;\n };\n ExifRestorer.slice2Segments = function (rawImageArray) {\n var head = 0, segments = [];\n while (1) {\n if (rawImageArray[head] === 255 && rawImageArray[head + 1] === 218) {\n break;\n }\n if (rawImageArray[head] === 255 && rawImageArray[head + 1] === 216) {\n head += 2;\n }\n else {\n var length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\n var endPoint = head + length + 2;\n var seg = rawImageArray.slice(head, endPoint);\n segments.push(seg);\n head = endPoint;\n }\n if (head > rawImageArray.length) {\n break;\n }\n }\n return segments;\n };\n ExifRestorer.decode64 = function (input) {\n var chr1, chr2, chr3 = '', enc1, enc2, enc3, enc4 = '', i = 0, buf = [];\n // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n var base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n if (base64test.exec(input)) {\n console.log('There were invalid base64 characters in the input text.');\n }\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n do {\n enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n buf.push(chr1);\n if (enc3 !== 64) {\n buf.push(chr2);\n }\n if (enc4 !== 64) {\n buf.push(chr3);\n }\n chr1 = chr2 = chr3 = '';\n enc1 = enc2 = enc3 = enc4 = '';\n } while (i < input.length);\n return buf;\n };\n return ExifRestorer.restore(orig, resized); //<= EXIF\n}\n;\nfunction blobToFile(theBlob, fileName) {\n var b = theBlob;\n //A Blob() is almost a File() - it's just missing the two properties below which we will add\n b.lastModifiedDate = new Date();\n b.name = fileName;\n //Cast to a File() type\n return theBlob;\n}\n\n/** A master base set of logic intended to support file select/drag/drop operations\n NOTE: Use ngfDrop for full drag/drop. Use ngfSelect for selecting\n*/\nclass ngf {\n constructor(element) {\n this.element = element;\n this.filters = [];\n this.lastFileCount = 0;\n this.ngfFixOrientation = true;\n this.fileDropDisabled = false;\n this.selectable = false;\n this.directiveInit = new EventEmitter();\n this.lastInvalids = [];\n this.lastInvalidsChange = new EventEmitter();\n this.lastBaseUrlChange = new EventEmitter();\n this.fileChange = new EventEmitter();\n this.files = [];\n this.filesChange = new EventEmitter();\n this.fileSelectStart = new EventEmitter();\n this.initFilters();\n }\n initFilters() {\n // the order is important\n this.filters.push({ name: 'accept', fn: this._acceptFilter });\n this.filters.push({ name: 'fileSize', fn: this._fileSizeFilter });\n //this.filters.push({name: 'fileType', fn: this._fileTypeFilter})\n //this.filters.push({name: 'queueLimit', fn: this._queueLimitFilter})\n //this.filters.push({name: 'mimeType', fn: this._mimeTypeFilter})\n }\n ngOnDestroy() {\n delete this.fileElm; //faster memory release of dom element\n this.destroyPasteListener();\n }\n ngOnInit() {\n const selectable = (this.selectable || this.selectable === '') && !['false', 'null', '0'].includes(this.selectable);\n if (selectable) {\n this.enableSelecting();\n }\n if (this.multiple) {\n this.paramFileElm().setAttribute('multiple', this.multiple);\n }\n this.evalCapturePaste();\n // create reference to this class with one cycle delay to avoid ExpressionChangedAfterItHasBeenCheckedError\n setTimeout(() => {\n this.directiveInit.emit(this);\n }, 0);\n }\n ngOnChanges(changes) {\n var _a, _b;\n if (changes.accept) {\n this.paramFileElm().setAttribute('accept', changes.accept.currentValue || '*');\n }\n if (changes.capturePaste) {\n this.evalCapturePaste();\n }\n // Did we go from having a file to not having a file? Clear file element then\n if (changes.file && changes.file.previousValue && !changes.file.currentValue) {\n this.clearFileElmValue();\n }\n // Did we go from having files to not having files? Clear file element then\n if (changes.files) {\n const filesWentToZero = ((_a = changes.files.previousValue) === null || _a === void 0 ? void 0 : _a.length) && !((_b = changes.files.currentValue) === null || _b === void 0 ? void 0 : _b.length);\n if (filesWentToZero) {\n this.clearFileElmValue();\n }\n }\n }\n evalCapturePaste() {\n const isActive = this.capturePaste || this.capturePaste === '' || ['false', '0', 'null'].includes(this.capturePaste);\n if (isActive) {\n if (this.pasteCapturer) {\n return; // already listening\n }\n this.pasteCapturer = (e) => {\n const clip = e.clipboardData;\n if (clip && clip.files && clip.files.length) {\n this.handleFiles(clip.files);\n e.preventDefault();\n }\n };\n window.addEventListener('paste', this.pasteCapturer);\n return;\n }\n this.destroyPasteListener();\n }\n destroyPasteListener() {\n if (this.pasteCapturer) {\n window.removeEventListener('paste', this.pasteCapturer);\n delete this.pasteCapturer;\n }\n }\n paramFileElm() {\n if (this.fileElm)\n return this.fileElm; // already defined\n // elm already is a file input\n const isFile = isFileInput(this.element.nativeElement);\n if (isFile) {\n return this.fileElm = this.element.nativeElement;\n }\n // the host elm is NOT a file input\n return this.fileElm = this.createFileElm({\n change: this.changeFn.bind(this)\n });\n }\n /** Only used when host element we are attached to is NOT a fileElement */\n createFileElm({ change }) {\n // use specific technique to hide file element within\n const label = createInvisibleFileInputWrap();\n const fileElm = label.getElementsByTagName('input')[0];\n fileElm.addEventListener('change', change);\n this.element.nativeElement.appendChild(label); // put on html stage\n return fileElm;\n }\n enableSelecting() {\n let elm = this.element.nativeElement;\n if (isFileInput(elm)) {\n const bindedHandler = event => this.beforeSelect(event);\n elm.addEventListener('click', bindedHandler);\n elm.addEventListener('touchstart', bindedHandler);\n return;\n }\n const bindedHandler = ev => this.clickHandler(ev);\n elm.addEventListener('click', bindedHandler);\n elm.addEventListener('touchstart', bindedHandler);\n elm.addEventListener('touchend', bindedHandler);\n }\n getValidFiles(files) {\n const rtn = [];\n for (let x = files.length - 1; x >= 0; --x) {\n if (this.isFileValid(files[x])) {\n rtn.push(files[x]);\n }\n }\n return rtn;\n }\n getInvalidFiles(files) {\n const rtn = [];\n for (let x = files.length - 1; x >= 0; --x) {\n let failReason = this.getFileFilterFailName(files[x]);\n if (failReason) {\n rtn.push({\n file: files[x],\n type: failReason\n });\n }\n }\n return rtn;\n }\n // Primary handler of files coming in\n handleFiles(files) {\n const valids = this.getValidFiles(files);\n if (files.length != valids.length) {\n this.lastInvalids = this.getInvalidFiles(files);\n }\n else {\n delete this.lastInvalids;\n }\n this.lastInvalidsChange.emit(this.lastInvalids);\n if (valids.length) {\n if (this.ngfFixOrientation) {\n this.applyExifRotations(valids)\n .then(fixedFiles => this.que(fixedFiles));\n }\n else {\n this.que(valids);\n }\n }\n if (this.isEmptyAfterSelection()) {\n this.element.nativeElement.value = '';\n }\n }\n que(files) {\n this.files = this.files || [];\n Array.prototype.push.apply(this.files, files);\n //below break memory ref and doesnt act like a que\n //this.files = files//causes memory change which triggers bindings like \n this.filesChange.emit(this.files);\n if (files.length) {\n this.fileChange.emit(this.file = files[0]);\n if (this.lastBaseUrlChange.observers.length) {\n dataUrl(files[0])\n .then(url => this.lastBaseUrlChange.emit(url));\n }\n }\n //will be checked for input value clearing\n this.lastFileCount = this.files.length;\n }\n /** called when input has files */\n changeFn(event) {\n var fileList = event.__files_ || (event.target && event.target.files);\n if (!fileList)\n return;\n this.stopEvent(event);\n this.handleFiles(fileList);\n }\n clickHandler(evt) {\n const elm = this.element.nativeElement;\n if (elm.getAttribute('disabled') || this.fileDropDisabled) {\n return false;\n }\n var r = detectSwipe(evt);\n // prevent the click if it is a swipe\n if (r !== false)\n return r;\n const fileElm = this.paramFileElm();\n fileElm.click();\n //fileElm.dispatchEvent( new Event('click') );\n this.beforeSelect(evt);\n return false;\n }\n beforeSelect(event) {\n this.fileSelectStart.emit(event);\n if (this.files && this.lastFileCount === this.files.length)\n return;\n // if no files in array, be sure browser does not prevent reselect of same file (see github issue 27)\n this.clearFileElmValue();\n }\n clearFileElmValue() {\n if (!this.fileElm)\n return;\n this.fileElm.value = null;\n }\n isEmptyAfterSelection() {\n return !!this.element.nativeElement.attributes.multiple;\n }\n stopEvent(event) {\n event.preventDefault();\n event.stopPropagation();\n }\n transferHasFiles(transfer) {\n if (!transfer.types) {\n return false;\n }\n if (transfer.types.indexOf) {\n return transfer.types.indexOf('Files') !== -1;\n }\n else if (transfer.types.contains) {\n return transfer.types.contains('Files');\n }\n else {\n return false;\n }\n }\n eventToFiles(event) {\n const transfer = eventToTransfer(event);\n if (transfer) {\n if (transfer.files && transfer.files.length) {\n return transfer.files;\n }\n if (transfer.items && transfer.items.length) {\n return transfer.items;\n }\n }\n return [];\n }\n applyExifRotations(files) {\n const mapper = (file, index) => {\n return applyExifRotation(file)\n .then(fixedFile => files.splice(index, 1, fixedFile));\n };\n const proms = [];\n for (let x = files.length - 1; x >= 0; --x) {\n proms[x] = mapper(files[x], x);\n }\n return Promise.all(proms).then(() => files);\n }\n onChange(event) {\n let files = this.element.nativeElement.files || this.eventToFiles(event);\n if (!files.length)\n return;\n this.stopEvent(event);\n this.handleFiles(files);\n }\n getFileFilterFailName(file) {\n for (let i = 0; i < this.filters.length; i++) {\n if (!this.filters[i].fn.call(this, file)) {\n return this.filters[i].name;\n }\n }\n return undefined;\n }\n isFileValid(file) {\n const noFilters = !this.accept && (!this.filters || !this.filters.length);\n if (noFilters) {\n return true; //we have no filters so all files are valid\n }\n return this.getFileFilterFailName(file) ? false : true;\n }\n isFilesValid(files) {\n for (let x = files.length - 1; x >= 0; --x) {\n if (!this.isFileValid(files[x])) {\n return false;\n }\n }\n return true;\n }\n _acceptFilter(item) {\n return acceptType(this.accept, item.type, item.name);\n }\n _fileSizeFilter(item) {\n return !(this.maxSize && item.size > this.maxSize);\n }\n}\nngf.ɵfac = function ngf_Factory(t) { return new (t || ngf)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nngf.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ngf, selectors: [[\"\", \"ngf\", \"\"]], hostBindings: function ngf_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"change\", function ngf_change_HostBindingHandler($event) { return ctx.onChange($event); });\n } }, inputs: { ngfFixOrientation: \"ngfFixOrientation\", fileDropDisabled: \"fileDropDisabled\", selectable: \"selectable\", lastInvalids: \"lastInvalids\", files: \"files\", file: \"file\", multiple: \"multiple\", accept: \"accept\", maxSize: \"maxSize\", lastBaseUrl: \"lastBaseUrl\", capturePaste: \"capturePaste\" }, outputs: { directiveInit: \"init\", lastInvalidsChange: \"lastInvalidsChange\", lastBaseUrlChange: \"lastBaseUrlChange\", fileChange: \"fileChange\", filesChange: \"filesChange\", fileSelectStart: \"fileSelectStart\" }, exportAs: [\"ngf\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nngf.ctorParameters = () => [\n { type: ElementRef }\n];\nngf.propDecorators = {\n multiple: [{ type: Input }],\n accept: [{ type: Input }],\n maxSize: [{ type: Input }],\n ngfFixOrientation: [{ type: Input }],\n fileDropDisabled: [{ type: Input }],\n selectable: [{ type: Input }],\n directiveInit: [{ type: Output, args: ['init',] }],\n lastInvalids: [{ type: Input }],\n lastInvalidsChange: [{ type: Output }],\n lastBaseUrl: [{ type: Input }],\n lastBaseUrlChange: [{ type: Output }],\n file: [{ type: Input }],\n fileChange: [{ type: Output }],\n files: [{ type: Input }],\n filesChange: [{ type: Output }],\n fileSelectStart: [{ type: Output }],\n capturePaste: [{ type: Input }],\n onChange: [{ type: HostListener, args: ['change', ['$event'],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ngf, [{\n type: Directive,\n args: [{\n selector: \"[ngf]\",\n exportAs: \"ngf\"\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { ngfFixOrientation: [{\n type: Input\n }], fileDropDisabled: [{\n type: Input\n }], selectable: [{\n type: Input\n }], directiveInit: [{\n type: Output,\n args: ['init']\n }], lastInvalids: [{\n type: Input\n }], lastInvalidsChange: [{\n type: Output\n }], lastBaseUrlChange: [{\n type: Output\n }], fileChange: [{\n type: Output\n }], files: [{\n type: Input\n }], filesChange: [{\n type: Output\n }], fileSelectStart: [{\n type: Output\n }], file: [{\n type: Input\n }], onChange: [{\n type: HostListener,\n args: ['change', ['$event']]\n }], multiple: [{\n type: Input\n }], accept: [{\n type: Input\n }], maxSize: [{\n type: Input\n }], lastBaseUrl: [{\n type: Input\n }], capturePaste: [{\n type: Input\n }] }); })();\n/** browsers try hard to conceal data about file drags, this tends to undo that */\nfunction filesToWriteableObject(files) {\n const jsonFiles = [];\n for (let x = 0; x < files.length; ++x) {\n jsonFiles.push({\n type: files[x].type,\n kind: files[x][\"kind\"]\n });\n }\n return jsonFiles;\n}\nfunction eventToTransfer(event) {\n if (event.dataTransfer)\n return event.dataTransfer;\n return event.originalEvent ? event.originalEvent.dataTransfer : null;\n}\n\nclass ngfSelect extends ngf {\n constructor() {\n super(...arguments);\n this.selectable = true;\n }\n}\nngfSelect.ɵfac = /*@__PURE__*/ function () { let ɵngfSelect_BaseFactory; return function ngfSelect_Factory(t) { return (ɵngfSelect_BaseFactory || (ɵngfSelect_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(ngfSelect)))(t || ngfSelect); }; }();\nngfSelect.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ngfSelect, selectors: [[\"\", \"ngfSelect\", \"\"]], inputs: { selectable: \"selectable\" }, exportAs: [\"ngfSelect\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nngfSelect.propDecorators = {\n selectable: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ngfSelect, [{\n type: Directive,\n args: [{\n selector: \"[ngfSelect]\",\n exportAs: \"ngfSelect\"\n }]\n }], null, { selectable: [{\n type: Input\n }] }); })();\n\nclass ngfDrop extends ngf {\n constructor() {\n super(...arguments);\n this.fileOver = new EventEmitter();\n this.validDrag = false;\n this.validDragChange = new EventEmitter();\n this.invalidDrag = false;\n this.invalidDragChange = new EventEmitter();\n this.dragFilesChange = new EventEmitter();\n }\n onDrop(event) {\n if (this.fileDropDisabled) {\n this.stopEvent(event);\n return;\n }\n this.closeDrags();\n let files = this.eventToFiles(event);\n if (!files.length)\n return;\n this.stopEvent(event);\n this.handleFiles(files);\n }\n handleFiles(files) {\n this.fileOver.emit(false); //turn-off dragover\n super.handleFiles(files);\n }\n onDragOver(event) {\n if (this.fileDropDisabled) {\n this.stopEvent(event);\n return;\n }\n const transfer = eventToTransfer(event);\n let files = this.eventToFiles(event);\n let jsonFiles = filesToWriteableObject(files);\n this.dragFilesChange.emit(this.dragFiles = jsonFiles);\n if (files.length) {\n this.validDrag = this.isFilesValid(files);\n }\n else {\n //Safari, IE11 & some browsers do NOT tell you about dragged files until dropped. Always consider a valid drag\n this.validDrag = true;\n }\n this.validDragChange.emit(this.validDrag);\n this.invalidDrag = !this.validDrag;\n this.invalidDragChange.emit(this.invalidDrag);\n transfer.dropEffect = 'copy'; // change cursor and visual display\n this.stopEvent(event);\n this.fileOver.emit(true);\n }\n closeDrags() {\n delete this.validDrag;\n this.validDragChange.emit(this.validDrag);\n this.invalidDrag = false;\n this.invalidDragChange.emit(this.invalidDrag);\n delete this.dragFiles;\n this.dragFilesChange.emit(this.dragFiles);\n }\n onDragLeave(event) {\n if (this.fileDropDisabled) {\n this.stopEvent(event);\n return;\n }\n this.closeDrags();\n if (this.element) {\n if (event.currentTarget === this.element[0]) {\n return;\n }\n }\n this.stopEvent(event);\n this.fileOver.emit(false);\n }\n}\nngfDrop.ɵfac = /*@__PURE__*/ function () { let ɵngfDrop_BaseFactory; return function ngfDrop_Factory(t) { return (ɵngfDrop_BaseFactory || (ɵngfDrop_BaseFactory = ɵngcc0.ɵɵgetInheritedFactory(ngfDrop)))(t || ngfDrop); }; }();\nngfDrop.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ngfDrop, selectors: [[\"\", \"ngfDrop\", \"\"]], hostBindings: function ngfDrop_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"drop\", function ngfDrop_drop_HostBindingHandler($event) { return ctx.onDrop($event); })(\"dragover\", function ngfDrop_dragover_HostBindingHandler($event) { return ctx.onDragOver($event); })(\"dragleave\", function ngfDrop_dragleave_HostBindingHandler($event) { return ctx.onDragLeave($event); });\n } }, inputs: { validDrag: \"validDrag\", invalidDrag: \"invalidDrag\", dragFiles: \"dragFiles\" }, outputs: { fileOver: \"fileOver\", validDragChange: \"validDragChange\", invalidDragChange: \"invalidDragChange\", dragFilesChange: \"dragFilesChange\" }, exportAs: [\"ngfDrop\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature] });\nngfDrop.propDecorators = {\n fileOver: [{ type: Output }],\n validDrag: [{ type: Input }],\n validDragChange: [{ type: Output }],\n invalidDrag: [{ type: Input }],\n invalidDragChange: [{ type: Output }],\n dragFiles: [{ type: Input }],\n dragFilesChange: [{ type: Output }],\n onDrop: [{ type: HostListener, args: ['drop', ['$event'],] }],\n onDragOver: [{ type: HostListener, args: ['dragover', ['$event'],] }],\n onDragLeave: [{ type: HostListener, args: ['dragleave', ['$event'],] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ngfDrop, [{\n type: Directive,\n args: [{\n selector: \"[ngfDrop]\",\n exportAs: \"ngfDrop\"\n }]\n }], null, { fileOver: [{\n type: Output\n }], validDrag: [{\n type: Input\n }], validDragChange: [{\n type: Output\n }], invalidDrag: [{\n type: Input\n }], invalidDragChange: [{\n type: Output\n }], dragFilesChange: [{\n type: Output\n }], onDrop: [{\n type: HostListener,\n args: ['drop', ['$event']]\n }], onDragOver: [{\n type: HostListener,\n args: ['dragover', ['$event']]\n }], dragFiles: [{\n type: Input\n }], onDragLeave: [{\n type: HostListener,\n args: ['dragleave', ['$event']]\n }] }); })();\n\nclass ngfBackground {\n constructor(ElementRef) {\n this.ElementRef = ElementRef;\n }\n ngOnChanges(_changes) {\n dataUrl(this.file)\n .then(src => {\n const urlString = 'url(\\'' + (src || '') + '\\')';\n this.ElementRef.nativeElement.style.backgroundImage = urlString;\n });\n }\n}\nngfBackground.ɵfac = function ngfBackground_Factory(t) { return new (t || ngfBackground)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nngfBackground.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ngfBackground, selectors: [[\"\", \"ngfBackground\", \"\"]], inputs: { file: [\"ngfBackground\", \"file\"] }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nngfBackground.ctorParameters = () => [\n { type: ElementRef }\n];\nngfBackground.propDecorators = {\n file: [{ type: Input, args: ['ngfBackground',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ngfBackground, [{\n type: Directive,\n args: [{ selector: '[ngfBackground]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { file: [{\n type: Input,\n args: ['ngfBackground']\n }] }); })();\n\nclass ngfUploadStatus {\n constructor() {\n this.percent = 0;\n this.percentChange = new EventEmitter();\n }\n ngOnChanges(changes) {\n if (changes.httpEvent && changes.httpEvent.currentValue) {\n const event = changes.httpEvent.currentValue;\n if (event.loaded && event.total) {\n setTimeout(() => {\n this.percent = Math.round(100 * event.loaded / event.total);\n this.percentChange.emit(this.percent);\n }, 0);\n }\n }\n }\n}\nngfUploadStatus.ɵfac = function ngfUploadStatus_Factory(t) { return new (t || ngfUploadStatus)(); };\nngfUploadStatus.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ngfUploadStatus, selectors: [[\"ngfUploadStatus\"]], inputs: { percent: \"percent\", httpEvent: \"httpEvent\" }, outputs: { percentChange: \"percentChange\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nngfUploadStatus.propDecorators = {\n percent: [{ type: Input }],\n percentChange: [{ type: Output }],\n httpEvent: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ngfUploadStatus, [{\n type: Directive,\n args: [{ selector: 'ngfUploadStatus' }]\n }], function () { return []; }, { percent: [{\n type: Input\n }], percentChange: [{\n type: Output\n }], httpEvent: [{\n type: Input\n }] }); })();\n\nclass ngfFormData {\n constructor(IterableDiffers) {\n this.postName = \"file\";\n this.FormData = new FormData();\n this.FormDataChange = new EventEmitter();\n this.differ = IterableDiffers.find([]).create();\n }\n ngDoCheck() {\n var changes = this.differ.diff(this.files);\n if (changes) {\n setTimeout(() => this.buildFormData(), 0);\n }\n }\n buildFormData() {\n const isArray = typeof (this.files) === 'object' && this.files.constructor === Array;\n if (isArray) {\n this.FormData = new FormData();\n const files = this.files || [];\n files.forEach(file => this.FormData.append(this.postName, file, this.fileName || file.name));\n this.FormDataChange.emit(this.FormData);\n }\n else {\n delete this.FormData;\n }\n }\n}\nngfFormData.ɵfac = function ngfFormData_Factory(t) { return new (t || ngfFormData)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.IterableDiffers)); };\nngfFormData.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ngfFormData, selectors: [[\"ngfFormData\"]], inputs: { postName: \"postName\", FormData: \"FormData\", files: \"files\", fileName: \"fileName\" }, outputs: { FormDataChange: \"FormDataChange\" } });\nngfFormData.ctorParameters = () => [\n { type: IterableDiffers }\n];\nngfFormData.propDecorators = {\n files: [{ type: Input }],\n postName: [{ type: Input }],\n fileName: [{ type: Input }],\n FormData: [{ type: Input }],\n FormDataChange: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ngfFormData, [{\n type: Directive,\n args: [{ selector: 'ngfFormData' }]\n }], function () { return [{ type: ɵngcc0.IterableDiffers }]; }, { postName: [{\n type: Input\n }], FormData: [{\n type: Input\n }], FormDataChange: [{\n type: Output\n }], files: [{\n type: Input\n }], fileName: [{\n type: Input\n }] }); })();\n\nclass ngfSrc {\n constructor(ElementRef) {\n this.ElementRef = ElementRef;\n }\n ngOnChanges(_changes) {\n dataUrl(this.file)\n .then(src => this.ElementRef.nativeElement.src = src);\n }\n}\nngfSrc.ɵfac = function ngfSrc_Factory(t) { return new (t || ngfSrc)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef)); };\nngfSrc.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ngfSrc, selectors: [[\"\", \"ngfSrc\", \"\"]], inputs: { file: [\"ngfSrc\", \"file\"] }, features: [ɵngcc0.ɵɵNgOnChangesFeature] });\nngfSrc.ctorParameters = () => [\n { type: ElementRef }\n];\nngfSrc.propDecorators = {\n file: [{ type: Input, args: ['ngfSrc',] }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ngfSrc, [{\n type: Directive,\n args: [{ selector: '[ngfSrc]' }]\n }], function () { return [{ type: ɵngcc0.ElementRef }]; }, { file: [{\n type: Input,\n args: ['ngfSrc']\n }] }); })();\n\n//import{ HttpModule } from '@angular/http';\nconst declarations = [\n ngfDrop,\n ngfSelect,\n ngfBackground,\n ngfSrc,\n ngfUploadStatus,\n ngfFormData,\n ngf\n];\nclass ngfModule {\n}\nngfModule.ɵfac = function ngfModule_Factory(t) { return new (t || ngfModule)(); };\nngfModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ngfModule });\nngfModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [[\n CommonModule\n //,HttpModule\n ]] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ngfModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule\n //,HttpModule\n ],\n declarations: declarations,\n exports: declarations //[HttpModule, ...declarations]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ngfModule, { declarations: function () { return [ngfDrop, ngfSelect, ngfBackground, ngfSrc, ngfUploadStatus, ngfFormData, ngf]; }, imports: function () { return [CommonModule\n //,HttpModule\n ]; }, exports: function () { return [ngfDrop, ngfSelect, ngfBackground, ngfSrc, ngfUploadStatus, ngfFormData, ngf]; } }); })();\n\n/*\n * Public API Surface of angular-file\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { eventToTransfer, filesToWriteableObject, ngf, ngfBackground, ngfDrop, ngfFormData, ngfModule, ngfSelect, ngfSrc, ngfUploadStatus };\n\n","import { isPlatformBrowser } from '@angular/common';\nimport { Directive, Renderer2, ElementRef, Output, Input, EventEmitter, NgZone, Inject, PLATFORM_ID, Optional, NgModule } from '@angular/core';\nimport { Subject, Observable, merge, EMPTY, fromEvent } from 'rxjs';\nimport { map, mergeMap, takeUntil, filter, pairwise, take, share, auditTime, switchMap, startWith, tap } from 'rxjs/operators';\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @hidden\n * @type {?}\n */\nimport * as ɵngcc0 from '@angular/core';\nconst IS_TOUCH_DEVICE = (() => {\n // In case we're in Node.js environment.\n if (typeof window === 'undefined') {\n return false;\n }\n else {\n return ('ontouchstart' in window ||\n navigator.maxTouchPoints > 0 ||\n navigator.msMaxTouchPoints > 0);\n }\n})();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * @param {?} value1\n * @param {?} value2\n * @param {?=} precision\n * @return {?}\n */\nfunction isNumberCloseTo(value1, value2, precision = 3) {\n /** @type {?} */\n const diff = Math.abs(value1 - value2);\n return diff < precision;\n}\n/**\n * @param {?} startingRect\n * @param {?} edges\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\nfunction getNewBoundingRectangle(startingRect, edges, clientX, clientY) {\n /** @type {?} */\n const newBoundingRect = {\n top: startingRect.top,\n bottom: startingRect.bottom,\n left: startingRect.left,\n right: startingRect.right\n };\n if (edges.top) {\n newBoundingRect.top += clientY;\n }\n if (edges.bottom) {\n newBoundingRect.bottom += clientY;\n }\n if (edges.left) {\n newBoundingRect.left += clientX;\n }\n if (edges.right) {\n newBoundingRect.right += clientX;\n }\n newBoundingRect.height = newBoundingRect.bottom - newBoundingRect.top;\n newBoundingRect.width = newBoundingRect.right - newBoundingRect.left;\n return newBoundingRect;\n}\n/**\n * @param {?} element\n * @param {?} ghostElementPositioning\n * @return {?}\n */\nfunction getElementRect(element, ghostElementPositioning) {\n /** @type {?} */\n let translateX = 0;\n /** @type {?} */\n let translateY = 0;\n /** @type {?} */\n const style = element.nativeElement.style;\n /** @type {?} */\n const transformProperties = [\n 'transform',\n '-ms-transform',\n '-moz-transform',\n '-o-transform'\n ];\n /** @type {?} */\n const transform = transformProperties\n .map(property => style[property])\n .find(value => !!value);\n if (transform && transform.includes('translate')) {\n translateX = transform.replace(/.*translate3?d?\\((-?[0-9]*)px, (-?[0-9]*)px.*/, '$1');\n translateY = transform.replace(/.*translate3?d?\\((-?[0-9]*)px, (-?[0-9]*)px.*/, '$2');\n }\n if (ghostElementPositioning === 'absolute') {\n return {\n height: element.nativeElement.offsetHeight,\n width: element.nativeElement.offsetWidth,\n top: element.nativeElement.offsetTop - translateY,\n bottom: element.nativeElement.offsetHeight +\n element.nativeElement.offsetTop -\n translateY,\n left: element.nativeElement.offsetLeft - translateX,\n right: element.nativeElement.offsetWidth +\n element.nativeElement.offsetLeft -\n translateX\n };\n }\n else {\n /** @type {?} */\n const boundingRect = element.nativeElement.getBoundingClientRect();\n return {\n height: boundingRect.height,\n width: boundingRect.width,\n top: boundingRect.top - translateY,\n bottom: boundingRect.bottom - translateY,\n left: boundingRect.left - translateX,\n right: boundingRect.right - translateX,\n scrollTop: element.nativeElement.scrollTop,\n scrollLeft: element.nativeElement.scrollLeft\n };\n }\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction isWithinBoundingY({ clientY, rect }) {\n return clientY >= rect.top && clientY <= rect.bottom;\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction isWithinBoundingX({ clientX, rect }) {\n return clientX >= rect.left && clientX <= rect.right;\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction getResizeEdges({ clientX, clientY, elm, allowedEdges, cursorPrecision }) {\n /** @type {?} */\n const elmPosition = elm.nativeElement.getBoundingClientRect();\n /** @type {?} */\n const edges = {};\n if (allowedEdges.left &&\n isNumberCloseTo(clientX, elmPosition.left, cursorPrecision) &&\n isWithinBoundingY({ clientY, rect: elmPosition })) {\n edges.left = true;\n }\n if (allowedEdges.right &&\n isNumberCloseTo(clientX, elmPosition.right, cursorPrecision) &&\n isWithinBoundingY({ clientY, rect: elmPosition })) {\n edges.right = true;\n }\n if (allowedEdges.top &&\n isNumberCloseTo(clientY, elmPosition.top, cursorPrecision) &&\n isWithinBoundingX({ clientX, rect: elmPosition })) {\n edges.top = true;\n }\n if (allowedEdges.bottom &&\n isNumberCloseTo(clientY, elmPosition.bottom, cursorPrecision) &&\n isWithinBoundingX({ clientX, rect: elmPosition })) {\n edges.bottom = true;\n }\n return edges;\n}\n/** @type {?} */\nconst DEFAULT_RESIZE_CURSORS = Object.freeze({\n topLeft: 'nw-resize',\n topRight: 'ne-resize',\n bottomLeft: 'sw-resize',\n bottomRight: 'se-resize',\n leftOrRight: 'col-resize',\n topOrBottom: 'row-resize'\n});\n/**\n * @param {?} edges\n * @param {?} cursors\n * @return {?}\n */\nfunction getResizeCursor(edges, cursors) {\n if (edges.left && edges.top) {\n return cursors.topLeft;\n }\n else if (edges.right && edges.top) {\n return cursors.topRight;\n }\n else if (edges.left && edges.bottom) {\n return cursors.bottomLeft;\n }\n else if (edges.right && edges.bottom) {\n return cursors.bottomRight;\n }\n else if (edges.left || edges.right) {\n return cursors.leftOrRight;\n }\n else if (edges.top || edges.bottom) {\n return cursors.topOrBottom;\n }\n else {\n return '';\n }\n}\n/**\n * @param {?} __0\n * @return {?}\n */\nfunction getEdgesDiff({ edges, initialRectangle, newRectangle }) {\n /** @type {?} */\n const edgesDiff = {};\n Object.keys(edges).forEach(edge => {\n edgesDiff[edge] = (newRectangle[edge] || 0) - (initialRectangle[edge] || 0);\n });\n return edgesDiff;\n}\n/** @type {?} */\nconst RESIZE_ACTIVE_CLASS = 'resize-active';\n/** @type {?} */\nconst RESIZE_LEFT_HOVER_CLASS = 'resize-left-hover';\n/** @type {?} */\nconst RESIZE_RIGHT_HOVER_CLASS = 'resize-right-hover';\n/** @type {?} */\nconst RESIZE_TOP_HOVER_CLASS = 'resize-top-hover';\n/** @type {?} */\nconst RESIZE_BOTTOM_HOVER_CLASS = 'resize-bottom-hover';\n/** @type {?} */\nconst RESIZE_GHOST_ELEMENT_CLASS = 'resize-ghost-element';\n/** @type {?} */\nconst MOUSE_MOVE_THROTTLE_MS = 50;\n/**\n * Place this on an element to make it resizable. For example:\n *\n * ```html\n * \n * \n * ```\n * Or in case they are sibling elements:\n * ```html\n *
      \n *
      \n * ```\n */\nclass ResizableDirective {\n /**\n * @hidden\n * @param {?} platformId\n * @param {?} renderer\n * @param {?} elm\n * @param {?} zone\n */\n constructor(platformId, renderer, elm, zone) {\n this.platformId = platformId;\n this.renderer = renderer;\n this.elm = elm;\n this.zone = zone;\n /**\n * The edges that an element can be resized from. Pass an object like `{top: true, bottom: false}`. By default no edges can be resized.\n * @deprecated use a resize handle instead that positions itself to the side of the element you would like to resize\n */\n this.resizeEdges = {};\n /**\n * Set to `true` to enable a temporary resizing effect of the element in between the `resizeStart` and `resizeEnd` events.\n */\n this.enableGhostResize = false;\n /**\n * A snap grid that resize events will be locked to.\n *\n * e.g. to only allow the element to be resized every 10px set it to `{left: 10, right: 10}`\n */\n this.resizeSnapGrid = {};\n /**\n * The mouse cursors that will be set on the resize edges\n */\n this.resizeCursors = DEFAULT_RESIZE_CURSORS;\n /**\n * Mouse over thickness to active cursor.\n * @deprecated invalid when you migrate to use resize handles instead of setting resizeEdges on the element\n */\n this.resizeCursorPrecision = 3;\n /**\n * Define the positioning of the ghost element (can be fixed or absolute)\n */\n this.ghostElementPositioning = 'fixed';\n /**\n * Allow elements to be resized to negative dimensions\n */\n this.allowNegativeResizes = false;\n /**\n * The mouse move throttle in milliseconds, default: 50 ms\n */\n this.mouseMoveThrottleMS = MOUSE_MOVE_THROTTLE_MS;\n /**\n * Called when the mouse is pressed and a resize event is about to begin. `$event` is a `ResizeEvent` object.\n */\n this.resizeStart = new EventEmitter();\n /**\n * Called as the mouse is dragged after a resize event has begun. `$event` is a `ResizeEvent` object.\n */\n this.resizing = new EventEmitter();\n /**\n * Called after the mouse is released after a resize event. `$event` is a `ResizeEvent` object.\n */\n this.resizeEnd = new EventEmitter();\n /**\n * @hidden\n */\n this.mouseup = new Subject();\n /**\n * @hidden\n */\n this.mousedown = new Subject();\n /**\n * @hidden\n */\n this.mousemove = new Subject();\n this.destroy$ = new Subject();\n this.resizeEdges$ = new Subject();\n this.pointerEventListeners = PointerEventListeners.getInstance(renderer, zone);\n }\n /**\n * @hidden\n * @return {?}\n */\n ngOnInit() {\n /** @type {?} */\n const mousedown$ = merge(this.pointerEventListeners.pointerDown, this.mousedown);\n /** @type {?} */\n const mousemove$ = merge(this.pointerEventListeners.pointerMove, this.mousemove).pipe(tap(({ event }) => {\n if (currentResize) {\n try {\n event.preventDefault();\n }\n catch (e) {\n // just adding try-catch not to see errors in console if there is a passive listener for same event somewhere\n // browser does nothing except of writing errors to console\n }\n }\n }), share());\n /** @type {?} */\n const mouseup$ = merge(this.pointerEventListeners.pointerUp, this.mouseup);\n /** @type {?} */\n let currentResize;\n /** @type {?} */\n const removeGhostElement = () => {\n if (currentResize && currentResize.clonedNode) {\n this.elm.nativeElement.parentElement.removeChild(currentResize.clonedNode);\n this.renderer.setStyle(this.elm.nativeElement, 'visibility', 'inherit');\n }\n };\n /** @type {?} */\n const getResizeCursors = () => {\n return Object.assign({}, DEFAULT_RESIZE_CURSORS, this.resizeCursors);\n };\n this.resizeEdges$\n .pipe(startWith(this.resizeEdges), map(() => {\n return (this.resizeEdges &&\n Object.keys(this.resizeEdges).some(edge => !!this.resizeEdges[edge]));\n }), switchMap(legacyResizeEdgesEnabled => legacyResizeEdgesEnabled ? mousemove$ : EMPTY), auditTime(this.mouseMoveThrottleMS), takeUntil(this.destroy$))\n .subscribe(({ clientX, clientY }) => {\n /** @type {?} */\n const resizeEdges = getResizeEdges({\n clientX,\n clientY,\n elm: this.elm,\n allowedEdges: this.resizeEdges,\n cursorPrecision: this.resizeCursorPrecision\n });\n /** @type {?} */\n const resizeCursors = getResizeCursors();\n if (!currentResize) {\n /** @type {?} */\n const cursor = getResizeCursor(resizeEdges, resizeCursors);\n this.renderer.setStyle(this.elm.nativeElement, 'cursor', cursor);\n }\n this.setElementClass(this.elm, RESIZE_LEFT_HOVER_CLASS, resizeEdges.left === true);\n this.setElementClass(this.elm, RESIZE_RIGHT_HOVER_CLASS, resizeEdges.right === true);\n this.setElementClass(this.elm, RESIZE_TOP_HOVER_CLASS, resizeEdges.top === true);\n this.setElementClass(this.elm, RESIZE_BOTTOM_HOVER_CLASS, resizeEdges.bottom === true);\n });\n /** @type {?} */\n const mousedrag = mousedown$\n .pipe(mergeMap(startCoords => {\n /**\n * @param {?} moveCoords\n * @return {?}\n */\n function getDiff(moveCoords) {\n return {\n clientX: moveCoords.clientX - startCoords.clientX,\n clientY: moveCoords.clientY - startCoords.clientY\n };\n }\n /** @type {?} */\n const getSnapGrid = () => {\n /** @type {?} */\n const snapGrid = { x: 1, y: 1 };\n if (currentResize) {\n if (this.resizeSnapGrid.left && currentResize.edges.left) {\n snapGrid.x = +this.resizeSnapGrid.left;\n }\n else if (this.resizeSnapGrid.right &&\n currentResize.edges.right) {\n snapGrid.x = +this.resizeSnapGrid.right;\n }\n if (this.resizeSnapGrid.top && currentResize.edges.top) {\n snapGrid.y = +this.resizeSnapGrid.top;\n }\n else if (this.resizeSnapGrid.bottom &&\n currentResize.edges.bottom) {\n snapGrid.y = +this.resizeSnapGrid.bottom;\n }\n }\n return snapGrid;\n };\n /**\n * @param {?} coords\n * @param {?} snapGrid\n * @return {?}\n */\n function getGrid(coords, snapGrid) {\n return {\n x: Math.ceil(coords.clientX / snapGrid.x),\n y: Math.ceil(coords.clientY / snapGrid.y)\n };\n }\n return ((/** @type {?} */ (merge(mousemove$.pipe(take(1)).pipe(map(coords => [, coords])), mousemove$.pipe(pairwise())))))\n .pipe(map(([previousCoords, newCoords]) => {\n return [\n previousCoords ? getDiff(previousCoords) : previousCoords,\n getDiff(newCoords)\n ];\n }))\n .pipe(filter(([previousCoords, newCoords]) => {\n if (!previousCoords) {\n return true;\n }\n /** @type {?} */\n const snapGrid = getSnapGrid();\n /** @type {?} */\n const previousGrid = getGrid(previousCoords, snapGrid);\n /** @type {?} */\n const newGrid = getGrid(newCoords, snapGrid);\n return (previousGrid.x !== newGrid.x || previousGrid.y !== newGrid.y);\n }))\n .pipe(map(([, newCoords]) => {\n /** @type {?} */\n const snapGrid = getSnapGrid();\n return {\n clientX: Math.round(newCoords.clientX / snapGrid.x) * snapGrid.x,\n clientY: Math.round(newCoords.clientY / snapGrid.y) * snapGrid.y\n };\n }))\n .pipe(takeUntil(merge(mouseup$, mousedown$)));\n }))\n .pipe(filter(() => !!currentResize));\n mousedrag\n .pipe(map(({ clientX, clientY }) => {\n return getNewBoundingRectangle((/** @type {?} */ (currentResize)).startingRect, (/** @type {?} */ (currentResize)).edges, clientX, clientY);\n }))\n .pipe(filter((newBoundingRect) => {\n return (this.allowNegativeResizes ||\n !!(newBoundingRect.height &&\n newBoundingRect.width &&\n newBoundingRect.height > 0 &&\n newBoundingRect.width > 0));\n }))\n .pipe(filter((newBoundingRect) => {\n return this.validateResize\n ? this.validateResize({\n rectangle: newBoundingRect,\n edges: getEdgesDiff({\n edges: (/** @type {?} */ (currentResize)).edges,\n initialRectangle: (/** @type {?} */ (currentResize)).startingRect,\n newRectangle: newBoundingRect\n })\n })\n : true;\n }), takeUntil(this.destroy$))\n .subscribe((newBoundingRect) => {\n if (currentResize && currentResize.clonedNode) {\n this.renderer.setStyle(currentResize.clonedNode, 'height', `${newBoundingRect.height}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'width', `${newBoundingRect.width}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'top', `${newBoundingRect.top}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'left', `${newBoundingRect.left}px`);\n }\n if (this.resizing.observers.length > 0) {\n this.zone.run(() => {\n this.resizing.emit({\n edges: getEdgesDiff({\n edges: (/** @type {?} */ (currentResize)).edges,\n initialRectangle: (/** @type {?} */ (currentResize)).startingRect,\n newRectangle: newBoundingRect\n }),\n rectangle: newBoundingRect\n });\n });\n }\n (/** @type {?} */ (currentResize)).currentRect = newBoundingRect;\n });\n mousedown$\n .pipe(map(({ clientX, clientY, edges }) => {\n return (edges ||\n getResizeEdges({\n clientX,\n clientY,\n elm: this.elm,\n allowedEdges: this.resizeEdges,\n cursorPrecision: this.resizeCursorPrecision\n }));\n }))\n .pipe(filter((edges) => {\n return Object.keys(edges).length > 0;\n }), takeUntil(this.destroy$))\n .subscribe((edges) => {\n if (currentResize) {\n removeGhostElement();\n }\n /** @type {?} */\n const startingRect = getElementRect(this.elm, this.ghostElementPositioning);\n currentResize = {\n edges,\n startingRect,\n currentRect: startingRect\n };\n /** @type {?} */\n const resizeCursors = getResizeCursors();\n /** @type {?} */\n const cursor = getResizeCursor(currentResize.edges, resizeCursors);\n this.renderer.setStyle(document.body, 'cursor', cursor);\n this.setElementClass(this.elm, RESIZE_ACTIVE_CLASS, true);\n if (this.enableGhostResize) {\n currentResize.clonedNode = this.elm.nativeElement.cloneNode(true);\n this.elm.nativeElement.parentElement.appendChild(currentResize.clonedNode);\n this.renderer.setStyle(this.elm.nativeElement, 'visibility', 'hidden');\n this.renderer.setStyle(currentResize.clonedNode, 'position', this.ghostElementPositioning);\n this.renderer.setStyle(currentResize.clonedNode, 'left', `${currentResize.startingRect.left}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'top', `${currentResize.startingRect.top}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'height', `${currentResize.startingRect.height}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'width', `${currentResize.startingRect.width}px`);\n this.renderer.setStyle(currentResize.clonedNode, 'cursor', getResizeCursor(currentResize.edges, resizeCursors));\n this.renderer.addClass(currentResize.clonedNode, RESIZE_GHOST_ELEMENT_CLASS);\n (/** @type {?} */ (currentResize.clonedNode)).scrollTop = (/** @type {?} */ (currentResize.startingRect\n .scrollTop));\n (/** @type {?} */ (currentResize.clonedNode)).scrollLeft = (/** @type {?} */ (currentResize.startingRect\n .scrollLeft));\n }\n if (this.resizeStart.observers.length > 0) {\n this.zone.run(() => {\n this.resizeStart.emit({\n edges: getEdgesDiff({\n edges,\n initialRectangle: startingRect,\n newRectangle: startingRect\n }),\n rectangle: getNewBoundingRectangle(startingRect, {}, 0, 0)\n });\n });\n }\n });\n mouseup$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n if (currentResize) {\n this.renderer.removeClass(this.elm.nativeElement, RESIZE_ACTIVE_CLASS);\n this.renderer.setStyle(document.body, 'cursor', '');\n this.renderer.setStyle(this.elm.nativeElement, 'cursor', '');\n if (this.resizeEnd.observers.length > 0) {\n this.zone.run(() => {\n this.resizeEnd.emit({\n edges: getEdgesDiff({\n edges: (/** @type {?} */ (currentResize)).edges,\n initialRectangle: (/** @type {?} */ (currentResize)).startingRect,\n newRectangle: (/** @type {?} */ (currentResize)).currentRect\n }),\n rectangle: (/** @type {?} */ (currentResize)).currentRect\n });\n });\n }\n removeGhostElement();\n currentResize = null;\n }\n });\n }\n /**\n * @hidden\n * @param {?} changes\n * @return {?}\n */\n ngOnChanges(changes) {\n if (changes.resizeEdges) {\n this.resizeEdges$.next(this.resizeEdges);\n }\n }\n /**\n * @hidden\n * @return {?}\n */\n ngOnDestroy() {\n // browser check for angular universal, because it doesn't know what document is\n if (isPlatformBrowser(this.platformId)) {\n this.renderer.setStyle(document.body, 'cursor', '');\n }\n this.mousedown.complete();\n this.mouseup.complete();\n this.mousemove.complete();\n this.resizeEdges$.complete();\n this.destroy$.next();\n }\n /**\n * @private\n * @param {?} elm\n * @param {?} name\n * @param {?} add\n * @return {?}\n */\n setElementClass(elm, name, add) {\n if (add) {\n this.renderer.addClass(elm.nativeElement, name);\n }\n else {\n this.renderer.removeClass(elm.nativeElement, name);\n }\n }\n}\nResizableDirective.ɵfac = function ResizableDirective_Factory(t) { return new (t || ResizableDirective)(ɵngcc0.ɵɵdirectiveInject(PLATFORM_ID), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nResizableDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ResizableDirective, selectors: [[\"\", \"mwlResizable\", \"\"]], inputs: { resizeEdges: \"resizeEdges\", enableGhostResize: \"enableGhostResize\", resizeSnapGrid: \"resizeSnapGrid\", resizeCursors: \"resizeCursors\", resizeCursorPrecision: \"resizeCursorPrecision\", ghostElementPositioning: \"ghostElementPositioning\", allowNegativeResizes: \"allowNegativeResizes\", mouseMoveThrottleMS: \"mouseMoveThrottleMS\", validateResize: \"validateResize\" }, outputs: { resizeStart: \"resizeStart\", resizing: \"resizing\", resizeEnd: \"resizeEnd\" }, exportAs: [\"mwlResizable\"], features: [ɵngcc0.ɵɵNgOnChangesFeature] });\n/** @nocollapse */\nResizableDirective.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] },\n { type: Renderer2 },\n { type: ElementRef },\n { type: NgZone }\n];\nResizableDirective.propDecorators = {\n validateResize: [{ type: Input }],\n resizeEdges: [{ type: Input }],\n enableGhostResize: [{ type: Input }],\n resizeSnapGrid: [{ type: Input }],\n resizeCursors: [{ type: Input }],\n resizeCursorPrecision: [{ type: Input }],\n ghostElementPositioning: [{ type: Input }],\n allowNegativeResizes: [{ type: Input }],\n mouseMoveThrottleMS: [{ type: Input }],\n resizeStart: [{ type: Output }],\n resizing: [{ type: Output }],\n resizeEnd: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizableDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlResizable]',\n exportAs: 'mwlResizable'\n }]\n }], function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [PLATFORM_ID]\n }] }, { type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { resizeEdges: [{\n type: Input\n }], enableGhostResize: [{\n type: Input\n }], resizeSnapGrid: [{\n type: Input\n }], resizeCursors: [{\n type: Input\n }], resizeCursorPrecision: [{\n type: Input\n }], ghostElementPositioning: [{\n type: Input\n }], allowNegativeResizes: [{\n type: Input\n }], mouseMoveThrottleMS: [{\n type: Input\n }], resizeStart: [{\n type: Output\n }], resizing: [{\n type: Output\n }], resizeEnd: [{\n type: Output\n }], validateResize: [{\n type: Input\n }] }); })();\nclass PointerEventListeners {\n // tslint:disable-line\n /**\n * @param {?} renderer\n * @param {?} zone\n * @return {?}\n */\n static getInstance(renderer, zone) {\n if (!PointerEventListeners.instance) {\n PointerEventListeners.instance = new PointerEventListeners(renderer, zone);\n }\n return PointerEventListeners.instance;\n }\n /**\n * @param {?} renderer\n * @param {?} zone\n */\n constructor(renderer, zone) {\n this.pointerDown = new Observable((observer) => {\n /** @type {?} */\n let unsubscribeMouseDown;\n /** @type {?} */\n let unsubscribeTouchStart;\n zone.runOutsideAngular(() => {\n unsubscribeMouseDown = renderer.listen('document', 'mousedown', (event) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchStart = renderer.listen('document', 'touchstart', (event) => {\n observer.next({\n clientX: event.touches[0].clientX,\n clientY: event.touches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseDown();\n if (IS_TOUCH_DEVICE) {\n (/** @type {?} */ (unsubscribeTouchStart))();\n }\n };\n }).pipe(share());\n this.pointerMove = new Observable((observer) => {\n /** @type {?} */\n let unsubscribeMouseMove;\n /** @type {?} */\n let unsubscribeTouchMove;\n zone.runOutsideAngular(() => {\n unsubscribeMouseMove = renderer.listen('document', 'mousemove', (event) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchMove = renderer.listen('document', 'touchmove', (event) => {\n observer.next({\n clientX: event.targetTouches[0].clientX,\n clientY: event.targetTouches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseMove();\n if (IS_TOUCH_DEVICE) {\n (/** @type {?} */ (unsubscribeTouchMove))();\n }\n };\n }).pipe(share());\n this.pointerUp = new Observable((observer) => {\n /** @type {?} */\n let unsubscribeMouseUp;\n /** @type {?} */\n let unsubscribeTouchEnd;\n /** @type {?} */\n let unsubscribeTouchCancel;\n zone.runOutsideAngular(() => {\n unsubscribeMouseUp = renderer.listen('document', 'mouseup', (event) => {\n observer.next({\n clientX: event.clientX,\n clientY: event.clientY,\n event\n });\n });\n if (IS_TOUCH_DEVICE) {\n unsubscribeTouchEnd = renderer.listen('document', 'touchend', (event) => {\n observer.next({\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n event\n });\n });\n unsubscribeTouchCancel = renderer.listen('document', 'touchcancel', (event) => {\n observer.next({\n clientX: event.changedTouches[0].clientX,\n clientY: event.changedTouches[0].clientY,\n event\n });\n });\n }\n });\n return () => {\n unsubscribeMouseUp();\n if (IS_TOUCH_DEVICE) {\n (/** @type {?} */ (unsubscribeTouchEnd))();\n (/** @type {?} */ (unsubscribeTouchCancel))();\n }\n };\n }).pipe(share());\n }\n}\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n/**\n * An element placed inside a `mwlResizable` directive to be used as a drag and resize handle\n *\n * For example\n *\n * ```html\n *
      \n *
      \n *
      \n * ```\n * Or in case they are sibling elements:\n * ```html\n *
      \n *
      \n * ```\n */\nclass ResizeHandleDirective {\n /**\n * @param {?} renderer\n * @param {?} element\n * @param {?} zone\n * @param {?} resizableDirective\n */\n constructor(renderer, element, zone, resizableDirective) {\n this.renderer = renderer;\n this.element = element;\n this.zone = zone;\n this.resizableDirective = resizableDirective;\n /**\n * The `Edges` object that contains the edges of the parent element that dragging the handle will trigger a resize on\n */\n this.resizeEdges = {};\n this.eventListeners = {};\n this.destroy$ = new Subject();\n }\n /**\n * @return {?}\n */\n ngOnInit() {\n this.zone.runOutsideAngular(() => {\n this.listenOnTheHost('mousedown').subscribe(event => {\n this.onMousedown(event, event.clientX, event.clientY);\n });\n this.listenOnTheHost('mouseup').subscribe(event => {\n this.onMouseup(event.clientX, event.clientY);\n });\n if (IS_TOUCH_DEVICE) {\n this.listenOnTheHost('touchstart').subscribe(event => {\n this.onMousedown(event, event.touches[0].clientX, event.touches[0].clientY);\n });\n merge(this.listenOnTheHost('touchend'), this.listenOnTheHost('touchcancel')).subscribe(event => {\n this.onMouseup(event.changedTouches[0].clientX, event.changedTouches[0].clientY);\n });\n }\n });\n }\n /**\n * @return {?}\n */\n ngOnDestroy() {\n this.destroy$.next();\n this.unsubscribeEventListeners();\n }\n /**\n * @hidden\n * @param {?} event\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\n onMousedown(event, clientX, clientY) {\n event.preventDefault();\n if (!this.eventListeners.touchmove) {\n this.eventListeners.touchmove = this.renderer.listen(this.element.nativeElement, 'touchmove', (touchMoveEvent) => {\n this.onMousemove(touchMoveEvent, touchMoveEvent.targetTouches[0].clientX, touchMoveEvent.targetTouches[0].clientY);\n });\n }\n if (!this.eventListeners.mousemove) {\n this.eventListeners.mousemove = this.renderer.listen(this.element.nativeElement, 'mousemove', (mouseMoveEvent) => {\n this.onMousemove(mouseMoveEvent, mouseMoveEvent.clientX, mouseMoveEvent.clientY);\n });\n }\n this.resizable.mousedown.next({\n clientX,\n clientY,\n edges: this.resizeEdges\n });\n }\n /**\n * @hidden\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\n onMouseup(clientX, clientY) {\n this.unsubscribeEventListeners();\n this.resizable.mouseup.next({\n clientX,\n clientY,\n edges: this.resizeEdges\n });\n }\n // directive might be passed from DI or as an input\n /**\n * @private\n * @return {?}\n */\n get resizable() {\n return this.resizableDirective || this.resizableContainer;\n }\n /**\n * @private\n * @param {?} event\n * @param {?} clientX\n * @param {?} clientY\n * @return {?}\n */\n onMousemove(event, clientX, clientY) {\n this.resizable.mousemove.next({\n clientX,\n clientY,\n edges: this.resizeEdges,\n event\n });\n }\n /**\n * @private\n * @return {?}\n */\n unsubscribeEventListeners() {\n Object.keys(this.eventListeners).forEach(type => {\n ((/** @type {?} */ (this))).eventListeners[type]();\n delete this.eventListeners[type];\n });\n }\n /**\n * @private\n * @template T\n * @param {?} eventName\n * @return {?}\n */\n listenOnTheHost(eventName) {\n return fromEvent(this.element.nativeElement, eventName).pipe(takeUntil(this.destroy$));\n }\n}\nResizeHandleDirective.ɵfac = function ResizeHandleDirective_Factory(t) { return new (t || ResizeHandleDirective)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.Renderer2), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ResizableDirective, 8)); };\nResizeHandleDirective.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: ResizeHandleDirective, selectors: [[\"\", \"mwlResizeHandle\", \"\"]], inputs: { resizeEdges: \"resizeEdges\", resizableContainer: \"resizableContainer\" } });\n/** @nocollapse */\nResizeHandleDirective.ctorParameters = () => [\n { type: Renderer2 },\n { type: ElementRef },\n { type: NgZone },\n { type: ResizableDirective, decorators: [{ type: Optional }] }\n];\nResizeHandleDirective.propDecorators = {\n resizeEdges: [{ type: Input }],\n resizableContainer: [{ type: Input }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizeHandleDirective, [{\n type: Directive,\n args: [{\n selector: '[mwlResizeHandle]'\n }]\n }], function () { return [{ type: ɵngcc0.Renderer2 }, { type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }, { type: ResizableDirective, decorators: [{\n type: Optional\n }] }]; }, { resizeEdges: [{\n type: Input\n }], resizableContainer: [{\n type: Input\n }] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\nclass ResizableModule {\n}\nResizableModule.ɵfac = function ResizableModule_Factory(t) { return new (t || ResizableModule)(); };\nResizableModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: ResizableModule });\nResizableModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(ResizableModule, [{\n type: NgModule,\n args: [{\n declarations: [ResizableDirective, ResizeHandleDirective],\n exports: [ResizableDirective, ResizeHandleDirective]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(ResizableModule, { declarations: [ResizableDirective, ResizeHandleDirective], exports: [ResizableDirective, ResizeHandleDirective] }); })();\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\n/**\n * @fileoverview added by tsickle\n * @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc\n */\n\nexport { ResizableDirective, ResizeHandleDirective, ResizableModule };\n\n","var defaultOptions = {};\nexport function getDefaultOptions() {\n return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","var roundingMap = {\n ceil: Math.ceil,\n round: Math.round,\n floor: Math.floor,\n trunc: function (value) {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n } // Math.trunc is not supported by IE\n\n};\nvar defaultRoundingMethod = 'trunc';\nexport function getRoundingMethod(method) {\n return method ? roundingMap[method] : roundingMap[defaultRoundingMethod];\n}","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} - the new date with the days added\n * @throws {TypeError} - 2 arguments required\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\n\nexport default function addDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n date.setDate(date.getDate() + amount);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of hours to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the hours added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\n\nexport default function addHours(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_HOUR);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_MINUTE = 60000;\n/**\n * @name addMinutes\n * @category Minute Helpers\n * @summary Add the specified number of minutes to the given date.\n *\n * @description\n * Add the specified number of minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of minutes to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the minutes added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 minutes to 10 July 2014 12:00:00:\n * const result = addMinutes(new Date(2014, 6, 10, 12, 0), 30)\n * //=> Thu Jul 10 2014 12:30:00\n */\n\nexport default function addMinutes(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * MILLISECONDS_IN_MINUTE);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n */\n\nexport default function addMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var amount = toInteger(dirtyAmount);\n\n if (isNaN(amount)) {\n return new Date(NaN);\n }\n\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return date;\n }\n\n var dayOfMonth = date.getDate(); // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n\n var endOfDesiredMonth = new Date(date.getTime());\n endOfDesiredMonth.setMonth(date.getMonth() + amount + 1, 0);\n var daysInMonth = endOfDesiredMonth.getDate();\n\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n date.setFullYear(endOfDesiredMonth.getFullYear(), endOfDesiredMonth.getMonth(), dayOfMonth);\n return date;\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addSeconds\n * @category Second Helpers\n * @summary Add the specified number of seconds to the given date.\n *\n * @description\n * Add the specified number of seconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of seconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the seconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 30 seconds to 10 July 2014 12:45:00:\n * const result = addSeconds(new Date(2014, 6, 10, 12, 45, 0), 30)\n * //=> Thu Jul 10 2014 12:45:30\n */\n\nexport default function addSeconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, amount * 1000);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addWeeks\n * @category Week Helpers\n * @summary Add the specified number of weeks to the given date.\n *\n * @description\n * Add the specified number of week to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 4 weeks to 1 September 2014:\n * const result = addWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Sep 29 2014 00:00:00\n */\n\nexport default function addWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n var days = amount * 7;\n return addDays(dirtyDate, days);\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n/**\n * Days in 1 year\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occures every 4 years, except for years that are divisable by 100 and not divisable by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n *\n * @name daysInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var daysInYear = 365.2425;\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInMinute = 60000;\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInHour = 3600000;\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInSecond = 1000;\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minTime = -maxTime;\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minutesInHour = 60;\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInQuarter = 3;\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInYear = 12;\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var quartersInYear = 4;\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInHour = 3600;\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMinute = 60;\n/**\n * Seconds in 1 day\n *\n * @name secondsInDay\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInDay = secondsInHour * 24;\n/**\n * Seconds in 1 week\n *\n * @name secondsInWeek\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInWeek = secondsInDay * 7;\n/**\n * Seconds in 1 year\n *\n * @name secondsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInYear = secondsInDay * daysInYear;\n/**\n * Seconds in 1 month\n *\n * @name secondsInMonth\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMonth = secondsInYear / 12;\n/**\n * Seconds in 1 quarter\n *\n * @name secondsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInQuarter = secondsInMonth * 3;","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\n\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\n\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 92\n */\n\n\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareLocalAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference); // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastDayNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name differenceInMilliseconds\n * @category Millisecond Helpers\n * @summary Get the number of milliseconds between the given dates.\n *\n * @description\n * Get the number of milliseconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of milliseconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many milliseconds are between\n * // 2 July 2014 12:30:20.600 and 2 July 2014 12:30:21.700?\n * const result = differenceInMilliseconds(\n * new Date(2014, 6, 2, 12, 30, 21, 700),\n * new Date(2014, 6, 2, 12, 30, 20, 600)\n * )\n * //=> 1100\n */\n\nexport default function differenceInMilliseconds(dateLeft, dateRight) {\n requiredArgs(2, arguments);\n return toDate(dateLeft).getTime() - toDate(dateRight).getTime();\n}","import { millisecondsInMinute } from \"../constants/index.js\";\nimport differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInMinutes\n * @category Minute Helpers\n * @summary Get the number of minutes between the given dates.\n *\n * @description\n * Get the signed number of full (rounded towards 0) minutes between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of minutes\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many minutes are between 2 July 2014 12:07:59 and 2 July 2014 12:20:00?\n * const result = differenceInMinutes(\n * new Date(2014, 6, 2, 12, 20, 0),\n * new Date(2014, 6, 2, 12, 7, 59)\n * )\n * //=> 12\n *\n * @example\n * // How many minutes are between 10:01:59 and 10:00:00\n * const result = differenceInMinutes(\n * new Date(2000, 0, 1, 10, 0, 0),\n * new Date(2000, 0, 1, 10, 1, 59)\n * )\n * //=> -1\n */\n\nexport default function differenceInMinutes(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / millisecondsInMinute;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import differenceInMilliseconds from \"../differenceInMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getRoundingMethod } from \"../_lib/roundingMethods/index.js\";\n/**\n * @name differenceInSeconds\n * @category Second Helpers\n * @summary Get the number of seconds between the given dates.\n *\n * @description\n * Get the number of seconds between the given dates.\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @param {Object} [options] - an object with options.\n * @param {String} [options.roundingMethod='trunc'] - a rounding method (`ceil`, `floor`, `round` or `trunc`)\n * @returns {Number} the number of seconds\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many seconds are between\n * // 2 July 2014 12:30:07.999 and 2 July 2014 12:30:20.000?\n * const result = differenceInSeconds(\n * new Date(2014, 6, 2, 12, 30, 20, 0),\n * new Date(2014, 6, 2, 12, 30, 7, 999)\n * )\n * //=> 12\n */\n\nexport default function differenceInSeconds(dateLeft, dateRight, options) {\n requiredArgs(2, arguments);\n var diff = differenceInMilliseconds(dateLeft, dateRight) / 1000;\n return getRoundingMethod(options === null || options === void 0 ? void 0 : options.roundingMethod)(diff);\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfDay\n * @category Day Helpers\n * @summary Return the end of a day for the given date.\n *\n * @description\n * Return the end of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a day for 2 September 2014 11:55:00:\n * const result = endOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 23:59:59.999\n */\n\nexport default function endOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name endOfMonth\n * @category Month Helpers\n * @summary Return the end of a month for the given date.\n *\n * @description\n * Return the end of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the end of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The end of a month for 2 September 2014 11:55:00:\n * const result = endOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\n\nexport default function endOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n date.setFullYear(date.getFullYear(), month + 1, 0);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the end of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport default function endOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n date.setDate(date.getDate() + diff);\n date.setHours(23, 59, 59, 999);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDate\n * @category Day Helpers\n * @summary Get the day of the month of the given date.\n *\n * @description\n * Get the day of the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the day of month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the month is 29 February 2012?\n * const result = getDate(new Date(2012, 1, 29))\n * //=> 29\n */\n\nexport default function getDate(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = date.getDate();\n return dayOfMonth;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {0|1|2|3|4|5|6} the day of week, 0 represents Sunday\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\n\nexport default function getDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var day = date.getDay();\n return day;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the number of days in a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\n\nexport default function getDaysInMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var monthIndex = date.getMonth();\n var lastDayOfMonth = new Date(0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the hours\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\n\nexport default function getHours(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var hours = date.getHours();\n return hours;\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\n\nexport default function getISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n var startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n var startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import toDate from \"../toDate/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport startOfISOWeekYear from \"../startOfISOWeekYear/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\n\nexport default function getISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfISOWeek(date).getTime() - startOfISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the minutes\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\n\nexport default function getMinutes(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var minutes = date.getMinutes();\n return minutes;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\n\nexport default function getMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var month = date.getMonth();\n return month;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param {Date|Number} date - the given date\n * @returns {Number} the year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\n\nexport default function getYear(dirtyDate) {\n requiredArgs(1, arguments);\n return toDate(dirtyDate).getFullYear();\n}","import startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameDay\n * @category Day Helpers\n * @summary Are the given dates in the same day (and year and month)?\n *\n * @description\n * Are the given dates in the same day (and year and month)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same day (and year and month)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 06:00:00 and 4 September 18:00:00 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4, 6, 0), new Date(2014, 8, 4, 18, 0))\n * //=> true\n *\n * @example\n * // Are 4 September and 4 October in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2014, 9, 4))\n * //=> false\n *\n * @example\n * // Are 4 September, 2014 and 4 September, 2015 in the same day?\n * const result = isSameDay(new Date(2014, 8, 4), new Date(2015, 8, 4))\n * //=> false\n */\n\nexport default function isSameDay(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfDay = startOfDay(dirtyDateLeft);\n var dateRightStartOfDay = startOfDay(dirtyDateRight);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameMonth\n * @category Month Helpers\n * @summary Are the given dates in the same month (and year)?\n *\n * @description\n * Are the given dates in the same month (and year)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same month (and year)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 September 2014 and 25 September 2014 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2014, 8, 25))\n * //=> true\n *\n * @example\n * // Are 2 September 2014 and 25 September 2015 in the same month?\n * const result = isSameMonth(new Date(2014, 8, 2), new Date(2015, 8, 25))\n * //=> false\n */\n\nexport default function isSameMonth(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n return dateLeft.getFullYear() === dateRight.getFullYear() && dateLeft.getMonth() === dateRight.getMonth();\n}","import startOfSecond from \"../startOfSecond/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isSameSecond\n * @category Second Helpers\n * @summary Are the given dates in the same second (and hour and day)?\n *\n * @description\n * Are the given dates in the same second (and hour and day)?\n *\n * @param {Date|Number} dateLeft - the first date to check\n * @param {Date|Number} dateRight - the second date to check\n * @returns {Boolean} the dates are in the same second (and hour and day)\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 4 September 2014 06:30:15.000 and 4 September 2014 06:30.15.500 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 30, 15),\n * new Date(2014, 8, 4, 6, 30, 15, 500)\n * )\n * //=> true\n *\n * @example\n * // Are 4 September 2014 06:00:15.000 and 4 September 2014 06:01.15.000 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 0, 15),\n * new Date(2014, 8, 4, 6, 1, 15)\n * )\n * //=> false\n *\n * @example\n * // Are 4 September 2014 06:00:15.000 and 5 September 2014 06:00.15.000 in the same second?\n * const result = isSameSecond(\n * new Date(2014, 8, 4, 6, 0, 15),\n * new Date(2014, 8, 5, 6, 0, 15)\n * )\n * //=> false\n */\n\nexport default function isSameSecond(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeftStartOfSecond = startOfSecond(dirtyDateLeft);\n var dateRightStartOfSecond = startOfSecond(dirtyDateRight);\n return dateLeftStartOfSecond.getTime() === dateRightStartOfSecond.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name max\n * @category Common Helpers\n * @summary Return the latest of the given dates.\n *\n * @description\n * Return the latest of the given dates.\n *\n * @param {Date[]|Number[]} datesArray - the dates to compare\n * @returns {Date} the latest of the dates\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Which of these dates is the latest?\n * const result = max([\n * new Date(1989, 6, 10),\n * new Date(1987, 1, 11),\n * new Date(1995, 6, 2),\n * new Date(1990, 0, 1)\n * ])\n * //=> Sun Jul 02 1995 00:00:00\n */\n\nexport default function max(dirtyDatesArray) {\n requiredArgs(1, arguments);\n var datesArray; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n\n if (dirtyDatesArray && typeof dirtyDatesArray.forEach === 'function') {\n datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array.\n } else if (typeof dirtyDatesArray === 'object' && dirtyDatesArray !== null) {\n datesArray = Array.prototype.slice.call(dirtyDatesArray);\n } else {\n // `dirtyDatesArray` is non-iterable, return Invalid Date\n return new Date(NaN);\n }\n\n var result;\n datesArray.forEach(function (dirtyDate) {\n var currentDate = toDate(dirtyDate);\n\n if (result === undefined || result < currentDate || isNaN(Number(currentDate))) {\n result = currentDate;\n }\n });\n return result || new Date(NaN);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setDate\n * @category Day Helpers\n * @summary Set the day of the month to the given date.\n *\n * @description\n * Set the day of the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} dayOfMonth - the day of the month of the new date\n * @returns {Date} the new date with the day of the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set the 30th day of the month to 1 September 2014:\n * const result = setDate(new Date(2014, 8, 1), 30)\n * //=> Tue Sep 30 2014 00:00:00\n */\n\nexport default function setDate(dirtyDate, dirtyDayOfMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dayOfMonth = toInteger(dirtyDayOfMonth);\n date.setDate(dayOfMonth);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} hours - the hours of the new date\n * @returns {Date} the new date with the hours set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\n\nexport default function setHours(dirtyDate, dirtyHours) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var hours = toInteger(dirtyHours);\n date.setHours(hours);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} minutes - the minutes of the new date\n * @returns {Date} the new date with the minutes set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\n\nexport default function setMinutes(dirtyDate, dirtyMinutes) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var minutes = toInteger(dirtyMinutes);\n date.setMinutes(minutes);\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport getDaysInMonth from \"../getDaysInMonth/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} month - the month of the new date\n * @returns {Date} the new date with the month set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\n\nexport default function setMonth(dirtyDate, dirtyMonth) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var month = toInteger(dirtyMonth);\n var year = date.getFullYear();\n var day = date.getDate();\n var dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(year, month, 15);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n var daysInMonth = getDaysInMonth(dateWithDesiredMonth); // Set the last day of the new month\n // if the original date was the last day of the longer month\n\n date.setMonth(month, Math.min(day, daysInMonth));\n return date;\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} year - the year of the new date\n * @returns {Date} the new date with the year set\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\n\nexport default function setYear(dirtyDate, dirtyYear) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var year = toInteger(dirtyYear); // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n\n if (isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n date.setFullYear(year);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import getISOWeekYear from \"../getISOWeekYear/index.js\";\nimport startOfISOWeek from \"../startOfISOWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week-numbering year\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\n\nexport default function startOfISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n var date = startOfISOWeek(fourthOfJanuary);\n return date;\n}","import startOfWeek from \"../startOfWeek/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of an ISO week\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n return startOfWeek(dirtyDate, {\n weekStartsOn: 1\n });\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMinute\n * @category Minute Helpers\n * @summary Return the start of a minute for the given date.\n *\n * @description\n * Return the start of a minute for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a minute\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a minute for 1 December 2014 22:15:45.400:\n * const result = startOfMinute(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:00\n */\n\nexport default function startOfMinute(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setSeconds(0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a month\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfMonth(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfSecond\n * @category Second Helpers\n * @summary Return the start of a second for the given date.\n *\n * @description\n * Return the start of a second for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a second\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a second for 1 December 2014 22:15:45.400:\n * const result = startOfSecond(new Date(2014, 11, 1, 22, 15, 45, 400))\n * //=> Mon Dec 01 2014 22:15:45.000\n */\n\nexport default function startOfSecond(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setMilliseconds(0);\n return date;\n}","import toDate from \"../toDate/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @param {Date|Number} date - the original date\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @returns {Date} the start of a week\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function startOfWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n requiredArgs(1, arguments);\n var defaultOptions = getDefaultOptions();\n var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setDate(date.getDate() - diff);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import addDays from \"../addDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @description\n * Subtract the specified number of days from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of days to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the days subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\n\nexport default function subDays(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addDays(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMonths from \"../addMonths/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of months to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the months subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\n\nexport default function subMonths(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMonths(dirtyDate, -amount);\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport addWeeks from \"../addWeeks/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subWeeks\n * @category Week Helpers\n * @summary Subtract the specified number of weeks from the given date.\n *\n * @description\n * Subtract the specified number of weeks from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of weeks to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the weeks subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 4 weeks from 1 September 2014:\n * const result = subWeeks(new Date(2014, 8, 1), 4)\n * //=> Mon Aug 04 2014 00:00:00\n */\n\nexport default function subWeeks(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addWeeks(dirtyDate, -amount);\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","/*! @license DOMPurify 2.3.10 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.3.10/LICENSE */\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMPurify = factory());\n})(this, (function () { 'use strict';\n\n function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n }\n\n function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n }\n\n function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n }\n\n function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n\n function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var hasOwnProperty = Object.hasOwnProperty,\n setPrototypeOf = Object.setPrototypeOf,\n isFrozen = Object.isFrozen,\n getPrototypeOf = Object.getPrototypeOf,\n getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n var freeze = Object.freeze,\n seal = Object.seal,\n create = Object.create; // eslint-disable-line import/no-mutable-exports\n\n var _ref = typeof Reflect !== 'undefined' && Reflect,\n apply = _ref.apply,\n construct = _ref.construct;\n\n if (!apply) {\n apply = function apply(fun, thisValue, args) {\n return fun.apply(thisValue, args);\n };\n }\n\n if (!freeze) {\n freeze = function freeze(x) {\n return x;\n };\n }\n\n if (!seal) {\n seal = function seal(x) {\n return x;\n };\n }\n\n if (!construct) {\n construct = function construct(Func, args) {\n return _construct(Func, _toConsumableArray(args));\n };\n }\n\n var arrayForEach = unapply(Array.prototype.forEach);\n var arrayPop = unapply(Array.prototype.pop);\n var arrayPush = unapply(Array.prototype.push);\n var stringToLowerCase = unapply(String.prototype.toLowerCase);\n var stringMatch = unapply(String.prototype.match);\n var stringReplace = unapply(String.prototype.replace);\n var stringIndexOf = unapply(String.prototype.indexOf);\n var stringTrim = unapply(String.prototype.trim);\n var regExpTest = unapply(RegExp.prototype.test);\n var typeErrorCreate = unconstruct(TypeError);\n function unapply(func) {\n return function (thisArg) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return apply(func, thisArg, args);\n };\n }\n function unconstruct(func) {\n return function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return construct(func, args);\n };\n }\n /* Add properties to a lookup table */\n\n function addToSet(set, array, transformCaseFunc) {\n transformCaseFunc = transformCaseFunc ? transformCaseFunc : stringToLowerCase;\n\n if (setPrototypeOf) {\n // Make 'in' and truthy checks like Boolean(set.constructor)\n // independent of any properties defined on Object.prototype.\n // Prevent prototype setters from intercepting set as a this value.\n setPrototypeOf(set, null);\n }\n\n var l = array.length;\n\n while (l--) {\n var element = array[l];\n\n if (typeof element === 'string') {\n var lcElement = transformCaseFunc(element);\n\n if (lcElement !== element) {\n // Config presets (e.g. tags.js, attrs.js) are immutable.\n if (!isFrozen(array)) {\n array[l] = lcElement;\n }\n\n element = lcElement;\n }\n }\n\n set[element] = true;\n }\n\n return set;\n }\n /* Shallow clone an object */\n\n function clone(object) {\n var newObject = create(null);\n var property;\n\n for (property in object) {\n if (apply(hasOwnProperty, object, [property])) {\n newObject[property] = object[property];\n }\n }\n\n return newObject;\n }\n /* IE10 doesn't support __lookupGetter__ so lets'\n * simulate it. It also automatically checks\n * if the prop is function or getter and behaves\n * accordingly. */\n\n function lookupGetter(object, prop) {\n while (object !== null) {\n var desc = getOwnPropertyDescriptor(object, prop);\n\n if (desc) {\n if (desc.get) {\n return unapply(desc.get);\n }\n\n if (typeof desc.value === 'function') {\n return unapply(desc.value);\n }\n }\n\n object = getPrototypeOf(object);\n }\n\n function fallbackValue(element) {\n console.warn('fallback value for', element);\n return null;\n }\n\n return fallbackValue;\n }\n\n var html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); // SVG\n\n var svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); // List of SVG elements that are disallowed by default.\n // We still need to know them so that we can do namespace\n // checks properly in case one wants to add them to\n // allow-list.\n\n var svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n var mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']); // Similarly to SVG, we want to know all MathML elements,\n // even those that we disallow by default.\n\n var mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n var text = freeze(['#text']);\n\n var html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n var svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n var mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n var MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n\n var ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\n var DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n\n var ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n\n var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n );\n var IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n var ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n );\n var DOCTYPE_NAME = seal(/^html$/i);\n\n var getGlobal = function getGlobal() {\n return typeof window === 'undefined' ? null : window;\n };\n /**\n * Creates a no-op policy for internal use only.\n * Don't export this function outside this module!\n * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n * @param {Document} document The document object (to determine policy name suffix)\n * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n * are not supported).\n */\n\n\n var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n if (_typeof(trustedTypes) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n return null;\n } // Allow the callers to control the unique policy name\n // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n // Policy creation with duplicate names throws in Trusted Types.\n\n\n var suffix = null;\n var ATTR_NAME = 'data-tt-policy-suffix';\n\n if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n suffix = document.currentScript.getAttribute(ATTR_NAME);\n }\n\n var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n try {\n return trustedTypes.createPolicy(policyName, {\n createHTML: function createHTML(html) {\n return html;\n },\n createScriptURL: function createScriptURL(scriptUrl) {\n return scriptUrl;\n }\n });\n } catch (_) {\n // Policy creation failed (most likely another DOMPurify script has\n // already run). Skip creating the policy, as this will only cause errors\n // if TT are enforced.\n console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n return null;\n }\n };\n\n function createDOMPurify() {\n var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n var DOMPurify = function DOMPurify(root) {\n return createDOMPurify(root);\n };\n /**\n * Version label, exposed for easier checks\n * if DOMPurify is up to date or not\n */\n\n\n DOMPurify.version = '2.3.10';\n /**\n * Array of elements that DOMPurify removed during sanitation.\n * Empty if nothing was removed.\n */\n\n DOMPurify.removed = [];\n\n if (!window || !window.document || window.document.nodeType !== 9) {\n // Not running in a browser, provide a factory function\n // so that you can pass your own Window\n DOMPurify.isSupported = false;\n return DOMPurify;\n }\n\n var originalDocument = window.document;\n var document = window.document;\n var DocumentFragment = window.DocumentFragment,\n HTMLTemplateElement = window.HTMLTemplateElement,\n Node = window.Node,\n Element = window.Element,\n NodeFilter = window.NodeFilter,\n _window$NamedNodeMap = window.NamedNodeMap,\n NamedNodeMap = _window$NamedNodeMap === void 0 ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n HTMLFormElement = window.HTMLFormElement,\n DOMParser = window.DOMParser,\n trustedTypes = window.trustedTypes;\n var ElementPrototype = Element.prototype;\n var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n var getParentNode = lookupGetter(ElementPrototype, 'parentNode'); // As per issue #47, the web-components registry is inherited by a\n // new document created via createHTMLDocument. As per the spec\n // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n // a new empty registry is used when creating a template contents owner\n // document, so we use that as our parent document to ensure nothing\n // is inherited.\n\n if (typeof HTMLTemplateElement === 'function') {\n var template = document.createElement('template');\n\n if (template.content && template.content.ownerDocument) {\n document = template.content.ownerDocument;\n }\n }\n\n var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n\n var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n var _document = document,\n implementation = _document.implementation,\n createNodeIterator = _document.createNodeIterator,\n createDocumentFragment = _document.createDocumentFragment,\n getElementsByTagName = _document.getElementsByTagName;\n var importNode = originalDocument.importNode;\n var documentMode = {};\n\n try {\n documentMode = clone(document).documentMode ? document.documentMode : {};\n } catch (_) {}\n\n var hooks = {};\n /**\n * Expose whether this browser supports running the full DOMPurify.\n */\n\n DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n var MUSTACHE_EXPR$1 = MUSTACHE_EXPR,\n ERB_EXPR$1 = ERB_EXPR,\n DATA_ATTR$1 = DATA_ATTR,\n ARIA_ATTR$1 = ARIA_ATTR,\n IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,\n ATTR_WHITESPACE$1 = ATTR_WHITESPACE;\n var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n /**\n * We consider the elements and attributes below to be safe. Ideally\n * don't add any new ones but feel free to remove unwanted ones.\n */\n\n /* allowed element names */\n\n var ALLOWED_TAGS = null;\n var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));\n /* Allowed attribute names */\n\n var ALLOWED_ATTR = null;\n var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));\n /*\n * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n */\n\n var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n tagNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n attributeNameCheck: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: null\n },\n allowCustomizedBuiltInElements: {\n writable: true,\n configurable: false,\n enumerable: true,\n value: false\n }\n }));\n /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n\n var FORBID_TAGS = null;\n /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n\n var FORBID_ATTR = null;\n /* Decide if ARIA attributes are okay */\n\n var ALLOW_ARIA_ATTR = true;\n /* Decide if custom data attributes are okay */\n\n var ALLOW_DATA_ATTR = true;\n /* Decide if unknown protocols are okay */\n\n var ALLOW_UNKNOWN_PROTOCOLS = false;\n /* Output should be safe for common template engines.\n * This means, DOMPurify removes data attributes, mustaches and ERB\n */\n\n var SAFE_FOR_TEMPLATES = false;\n /* Decide if document with ... should be returned */\n\n var WHOLE_DOCUMENT = false;\n /* Track whether config is already set on this instance of DOMPurify. */\n\n var SET_CONFIG = false;\n /* Decide if all elements (e.g. style, script) must be children of\n * document.body. By default, browsers might move them to document.head */\n\n var FORCE_BODY = false;\n /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported).\n * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n */\n\n var RETURN_DOM = false;\n /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n * string (or a TrustedHTML object if Trusted Types are supported) */\n\n var RETURN_DOM_FRAGMENT = false;\n /* Try to return a Trusted Type object instead of a string, return a string in\n * case Trusted Types are not supported */\n\n var RETURN_TRUSTED_TYPE = false;\n /* Output should be free from DOM clobbering attacks? */\n\n var SANITIZE_DOM = true;\n /* Keep element content when removing element? */\n\n var KEEP_CONTENT = true;\n /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n * of importing it into a new Document and returning a sanitized copy */\n\n var IN_PLACE = false;\n /* Allow usage of profiles like html, svg and mathMl */\n\n var USE_PROFILES = {};\n /* Tags to ignore content of when KEEP_CONTENT is true */\n\n var FORBID_CONTENTS = null;\n var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n /* Tags that are safe for data: URIs */\n\n var DATA_URI_TAGS = null;\n var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n /* Attributes safe for values like \"javascript:\" */\n\n var URI_SAFE_ATTRIBUTES = null;\n var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n /* Document namespace */\n\n var NAMESPACE = HTML_NAMESPACE;\n var IS_EMPTY_INPUT = false;\n /* Parsing of strict XHTML documents */\n\n var PARSER_MEDIA_TYPE;\n var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n var transformCaseFunc;\n /* Keep a reference to config to pass to hooks */\n\n var CONFIG = null;\n /* Ideally, do not touch anything below this line */\n\n /* ______________________________________________ */\n\n var formElement = document.createElement('form');\n\n var isRegexOrFunction = function isRegexOrFunction(testValue) {\n return testValue instanceof RegExp || testValue instanceof Function;\n };\n /**\n * _parseConfig\n *\n * @param {Object} cfg optional config literal\n */\n // eslint-disable-next-line complexity\n\n\n var _parseConfig = function _parseConfig(cfg) {\n if (CONFIG && CONFIG === cfg) {\n return;\n }\n /* Shield configuration object from tampering */\n\n\n if (!cfg || _typeof(cfg) !== 'object') {\n cfg = {};\n }\n /* Shield configuration object from prototype pollution */\n\n\n cfg = clone(cfg);\n PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes\n SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE; // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n\n transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? function (x) {\n return x;\n } : stringToLowerCase;\n /* Set configuration parameters */\n\n ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_URI_SAFE_ATTRIBUTES;\n DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n transformCaseFunc // eslint-disable-line indent\n ) // eslint-disable-line indent\n : DEFAULT_DATA_URI_TAGS;\n FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n\n ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n\n ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n\n SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n\n WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n\n RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n\n RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n\n RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n\n FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n\n SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n\n KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n\n IN_PLACE = cfg.IN_PLACE || false; // Default false\n\n IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;\n NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n }\n\n if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n }\n\n if (SAFE_FOR_TEMPLATES) {\n ALLOW_DATA_ATTR = false;\n }\n\n if (RETURN_DOM_FRAGMENT) {\n RETURN_DOM = true;\n }\n /* Parse profile info */\n\n\n if (USE_PROFILES) {\n ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));\n ALLOWED_ATTR = [];\n\n if (USE_PROFILES.html === true) {\n addToSet(ALLOWED_TAGS, html$1);\n addToSet(ALLOWED_ATTR, html);\n }\n\n if (USE_PROFILES.svg === true) {\n addToSet(ALLOWED_TAGS, svg$1);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.svgFilters === true) {\n addToSet(ALLOWED_TAGS, svgFilters);\n addToSet(ALLOWED_ATTR, svg);\n addToSet(ALLOWED_ATTR, xml);\n }\n\n if (USE_PROFILES.mathMl === true) {\n addToSet(ALLOWED_TAGS, mathMl$1);\n addToSet(ALLOWED_ATTR, mathMl);\n addToSet(ALLOWED_ATTR, xml);\n }\n }\n /* Merge configuration parameters */\n\n\n if (cfg.ADD_TAGS) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n }\n\n if (cfg.ADD_ATTR) {\n if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n ALLOWED_ATTR = clone(ALLOWED_ATTR);\n }\n\n addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n }\n\n if (cfg.ADD_URI_SAFE_ATTR) {\n addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n }\n\n if (cfg.FORBID_CONTENTS) {\n if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n FORBID_CONTENTS = clone(FORBID_CONTENTS);\n }\n\n addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n }\n /* Add #text in case KEEP_CONTENT is set to true */\n\n\n if (KEEP_CONTENT) {\n ALLOWED_TAGS['#text'] = true;\n }\n /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n\n\n if (WHOLE_DOCUMENT) {\n addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n }\n /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n\n\n if (ALLOWED_TAGS.table) {\n addToSet(ALLOWED_TAGS, ['tbody']);\n delete FORBID_TAGS.tbody;\n } // Prevent further manipulation of configuration.\n // Not available in IE8, Safari 5, etc.\n\n\n if (freeze) {\n freeze(cfg);\n }\n\n CONFIG = cfg;\n };\n\n var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']); // Certain elements are allowed in both SVG and HTML\n // namespace. We need to specify them explicitly\n // so that they don't get erroneously deleted from\n // HTML namespace.\n\n var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n /* Keep track of all possible SVG and MathML tags\n * so that we can perform the namespace checks\n * correctly. */\n\n var ALL_SVG_TAGS = addToSet({}, svg$1);\n addToSet(ALL_SVG_TAGS, svgFilters);\n addToSet(ALL_SVG_TAGS, svgDisallowed);\n var ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n /**\n *\n *\n * @param {Element} element a DOM element whose namespace is being checked\n * @returns {boolean} Return false if the element has a\n * namespace that a spec-compliant parser would never\n * return. Return true otherwise.\n */\n\n var _checkValidNamespace = function _checkValidNamespace(element) {\n var parent = getParentNode(element); // In JSDOM, if we're inside shadow DOM, then parentNode\n // can be null. We just simulate parent in this case.\n\n if (!parent || !parent.tagName) {\n parent = {\n namespaceURI: HTML_NAMESPACE,\n tagName: 'template'\n };\n }\n\n var tagName = stringToLowerCase(element.tagName);\n var parentTagName = stringToLowerCase(parent.tagName);\n\n if (element.namespaceURI === SVG_NAMESPACE) {\n // The only way to switch from HTML namespace to SVG\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'svg';\n } // The only way to switch from MathML to SVG is via\n // svg if parent is either or MathML\n // text integration points.\n\n\n if (parent.namespaceURI === MATHML_NAMESPACE) {\n return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n } // We only allow elements that are defined in SVG\n // spec. All others are disallowed in SVG namespace.\n\n\n return Boolean(ALL_SVG_TAGS[tagName]);\n }\n\n if (element.namespaceURI === MATHML_NAMESPACE) {\n // The only way to switch from HTML namespace to MathML\n // is via . If it happens via any other tag, then\n // it should be killed.\n if (parent.namespaceURI === HTML_NAMESPACE) {\n return tagName === 'math';\n } // The only way to switch from SVG to MathML is via\n // and HTML integration points\n\n\n if (parent.namespaceURI === SVG_NAMESPACE) {\n return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n } // We only allow elements that are defined in MathML\n // spec. All others are disallowed in MathML namespace.\n\n\n return Boolean(ALL_MATHML_TAGS[tagName]);\n }\n\n if (element.namespaceURI === HTML_NAMESPACE) {\n // The only way to switch from SVG to HTML is via\n // HTML integration points, and from MathML to HTML\n // is via MathML text integration points\n if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n return false;\n }\n\n if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n return false;\n } // We disallow tags that are specific for MathML\n // or SVG and should never appear in HTML namespace\n\n\n return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n } // The code should never reach this place (this means\n // that the element somehow got namespace that is not\n // HTML, SVG or MathML). Return false just in case.\n\n\n return false;\n };\n /**\n * _forceRemove\n *\n * @param {Node} node a DOM node\n */\n\n\n var _forceRemove = function _forceRemove(node) {\n arrayPush(DOMPurify.removed, {\n element: node\n });\n\n try {\n // eslint-disable-next-line unicorn/prefer-dom-node-remove\n node.parentNode.removeChild(node);\n } catch (_) {\n try {\n node.outerHTML = emptyHTML;\n } catch (_) {\n node.remove();\n }\n }\n };\n /**\n * _removeAttribute\n *\n * @param {String} name an Attribute name\n * @param {Node} node a DOM node\n */\n\n\n var _removeAttribute = function _removeAttribute(name, node) {\n try {\n arrayPush(DOMPurify.removed, {\n attribute: node.getAttributeNode(name),\n from: node\n });\n } catch (_) {\n arrayPush(DOMPurify.removed, {\n attribute: null,\n from: node\n });\n }\n\n node.removeAttribute(name); // We void attribute values for unremovable \"is\"\" attributes\n\n if (name === 'is' && !ALLOWED_ATTR[name]) {\n if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n try {\n _forceRemove(node);\n } catch (_) {}\n } else {\n try {\n node.setAttribute(name, '');\n } catch (_) {}\n }\n }\n };\n /**\n * _initDocument\n *\n * @param {String} dirty a string of dirty markup\n * @return {Document} a DOM, filled with the dirty markup\n */\n\n\n var _initDocument = function _initDocument(dirty) {\n /* Create a HTML document */\n var doc;\n var leadingWhitespace;\n\n if (FORCE_BODY) {\n dirty = '' + dirty;\n } else {\n /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n leadingWhitespace = matches && matches[0];\n }\n\n if (PARSER_MEDIA_TYPE === 'application/xhtml+xml') {\n // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n dirty = '' + dirty + '';\n }\n\n var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n /*\n * Use the DOMParser API by default, fallback later if needs be\n * DOMParser not work for svg when has multiple root element.\n */\n\n if (NAMESPACE === HTML_NAMESPACE) {\n try {\n doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n } catch (_) {}\n }\n /* Use createHTMLDocument in case DOMParser is not available */\n\n\n if (!doc || !doc.documentElement) {\n doc = implementation.createDocument(NAMESPACE, 'template', null);\n\n try {\n doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n } catch (_) {// Syntax error if dirtyPayload is invalid xml\n }\n }\n\n var body = doc.body || doc.documentElement;\n\n if (dirty && leadingWhitespace) {\n body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n }\n /* Work on whole document or just its body */\n\n\n if (NAMESPACE === HTML_NAMESPACE) {\n return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n }\n\n return WHOLE_DOCUMENT ? doc.documentElement : body;\n };\n /**\n * _createIterator\n *\n * @param {Document} root document/fragment to create iterator for\n * @return {Iterator} iterator instance\n */\n\n\n var _createIterator = function _createIterator(root) {\n return createNodeIterator.call(root.ownerDocument || root, root, // eslint-disable-next-line no-bitwise\n NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n };\n /**\n * _isClobbered\n *\n * @param {Node} elm element to check for clobbering attacks\n * @return {Boolean} true if clobbered, false if safe\n */\n\n\n var _isClobbered = function _isClobbered(elm) {\n return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function');\n };\n /**\n * _isNode\n *\n * @param {Node} obj object to check whether it's a DOM node\n * @return {Boolean} true is object is a DOM node\n */\n\n\n var _isNode = function _isNode(object) {\n return _typeof(Node) === 'object' ? object instanceof Node : object && _typeof(object) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n };\n /**\n * _executeHook\n * Execute user configurable hooks\n *\n * @param {String} entryPoint Name of the hook's entry point\n * @param {Node} currentNode node to work on with the hook\n * @param {Object} data additional hook parameters\n */\n\n\n var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n if (!hooks[entryPoint]) {\n return;\n }\n\n arrayForEach(hooks[entryPoint], function (hook) {\n hook.call(DOMPurify, currentNode, data, CONFIG);\n });\n };\n /**\n * _sanitizeElements\n *\n * @protect nodeName\n * @protect textContent\n * @protect removeChild\n *\n * @param {Node} currentNode to check for permission to exist\n * @return {Boolean} true if node was killed, false if left alive\n */\n\n\n var _sanitizeElements = function _sanitizeElements(currentNode) {\n var content;\n /* Execute a hook if present */\n\n _executeHook('beforeSanitizeElements', currentNode, null);\n /* Check if element is clobbered or can clobber */\n\n\n if (_isClobbered(currentNode)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Check if tagname contains Unicode */\n\n\n if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Now let's check the element's type and name */\n\n\n var tagName = transformCaseFunc(currentNode.nodeName);\n /* Execute a hook if present */\n\n _executeHook('uponSanitizeElement', currentNode, {\n tagName: tagName,\n allowedTags: ALLOWED_TAGS\n });\n /* Detect mXSS attempts abusing namespace confusion */\n\n\n if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n _forceRemove(currentNode);\n\n return true;\n }\n /* Mitigate a problem with templates inside select */\n\n\n if (tagName === 'select' && regExpTest(/